Merge branch 'feature/Routes' into 'develop'

Feature/routes

See merge request witel-back-end/crm!17
This commit is contained in:
2025-08-06 11:10:41 +00:00
15 changed files with 102 additions and 27 deletions

View File

@@ -4,9 +4,11 @@ namespace App\Enums;
enum PeopleMessageActions: int enum PeopleMessageActions: int
{ {
case x = 1; case ADAM_NIAZ_BE_SABT_MOSHKEL_RAH = 1;
case y = 2; case ADAM_NIAZ_BE_SABT_MOSHKEL_HAML_NAGHL = 2;
case z = 3; case ADAM_NIAZ_BE_SABT_MOSHKEL_AVAREZI = 3;
case SABT_SAVANEH_MOSHKEL_RAH = 4;
case SABT_SAVANEH_MOSHKEL_HAML_NAGHL = 5;
public static function name(int $state): string public static function name(int $state): string
{ {

View File

@@ -34,6 +34,7 @@ class SupervisorController extends Controller
$systemMessage->update([ $systemMessage->update([
'message_quality' => $request->message_quality, 'message_quality' => $request->message_quality,
'format_quality' => $request->format_quality, 'format_quality' => $request->format_quality,
'description' => $request->description,
]); ]);
return $this->successResponse(); return $this->successResponse();
} }

View File

@@ -10,12 +10,8 @@ class DataTableService
{ {
public function index(Request $request) public function index(Request $request)
{ {
$user = auth()->user();
$query = PeopleMessage::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id);
return DataTableFacade::run( return DataTableFacade::run(
$query, PeopleMessage::query()->orderBy('id'),
$request, $request,
allowedFilters: ['*'], allowedFilters: ['*'],
allowedSortings: ['*'], allowedSortings: ['*'],

View File

@@ -10,12 +10,8 @@ class OperatorService
{ {
public function dataTable(Request $request) public function dataTable(Request $request)
{ {
$user = auth()->user();
$query = SystemMessage::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id);
return DataTableFacade::run( return DataTableFacade::run(
$query, SystemMessage::query()->orderBy('id'),
$request, $request,
allowedFilters: ['*'], allowedFilters: ['*'],
allowedSortings: ['*'], allowedSortings: ['*'],

View File

@@ -10,14 +10,12 @@ class SupervisorService
{ {
public function dataTable(Request $request) public function dataTable(Request $request)
{ {
$query = SystemMessage::query();
return DataTableFacade::run( return DataTableFacade::run(
$query, SystemMessage::query()->orderBy('id'),
$request, $request,
allowedFilters: ['*'], allowedFilters: ['*'],
allowedSortings: ['*'], allowedSortings: ['*'],
allowedSelects: ['id','duration','date', 'voice', 'message_quality', 'format_quality', 'type_id', 'type_name'] allowedSelects: ['id','duration','date', 'voice', 'message_quality', 'format_quality', 'type_id', 'type_name', 'description']
); );
} }
} }

View File

@@ -2,6 +2,7 @@
namespace Database\Factories; namespace Database\Factories;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
/** /**
@@ -17,7 +18,12 @@ class OperatorDialogueFactory extends Factory
public function definition(): array public function definition(): array
{ {
return [ return [
// 'cdr_unique_id' => $this->faker->uuid(),
'date' => $this->faker->date(),
'supervisor_id' => User::factory(),
'is_listen' => $this->faker->boolean(),
'is_good' => $this->faker->boolean(),
'description' => $this->faker->text(),
]; ];
} }
} }

View File

@@ -2,6 +2,7 @@
namespace Database\Factories; namespace Database\Factories;
use App\Enums\PeopleMessageActions;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
/** /**
@@ -17,7 +18,16 @@ class PeopleMessageFactory extends Factory
public function definition(): array public function definition(): array
{ {
return [ return [
// 'caller_phone_number' => $this->faker->numerify('09#########'),
'date' => $this->faker->date(),
'voice' => $this->faker->name,
'review_duration' => $this->faker->numberBetween(30, 60),
'listen_at' => $this->faker->dateTime,
'is_listen' => $this->faker->boolean(),
'action_id' => $this->faker->randomElement([PeopleMessageActions::ADAM_NIAZ_BE_SABT_MOSHKEL_AVAREZI->value, PeopleMessageActions::SABT_SAVANEH_MOSHKEL_RAH->value]),
'action_name' => $this->faker->word(),
'description' => $this->faker->text(),
'savaneh_id' => $this->faker->randomElement([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
]; ];
} }
} }

View File

@@ -17,7 +17,14 @@ class SystemMessageFactory extends Factory
public function definition(): array public function definition(): array
{ {
return [ return [
// 'duration' => $this->faker->numberBetween(30, 60),
'date' => $this->faker->date(),
'voice' => $this->faker->name,
'description' => $this->faker->text(),
'message_quality' => $this->faker->numberBetween(0, 1),
'format_quality' => $this->faker->numberBetween(0, 1),
'type_id' => $this->faker->numberBetween(1, 2),
'type_name' => $this->faker->name,
]; ];
} }
} }

View File

@@ -16,8 +16,9 @@ return new class extends Migration
$table->integer('duration'); $table->integer('duration');
$table->dateTime('date'); $table->dateTime('date');
$table->string('voice'); $table->string('voice');
$table->integer('message_quality'); $table->string('description')->nullable();
$table->integer('format_quality'); $table->integer('message_quality')->nullable();
$table->integer('format_quality')->nullable();
$table->integer('type_id'); $table->integer('type_id');
$table->string('type_name'); $table->string('type_name');
$table->timestamps(); $table->timestamps();

View File

@@ -19,7 +19,7 @@ return new class extends Migration
$table->integer('review_duration')->nullable(); $table->integer('review_duration')->nullable();
$table->dateTime('listen_at')->nullable(); $table->dateTime('listen_at')->nullable();
$table->boolean('is_listen')->default(false); $table->boolean('is_listen')->default(false);
$table->foreignId('action_id')->nullable()->constrained(); $table->foreignId('action_id')->nullable()->constrained('people_message_actions');
$table->string('action_name')->nullable(); $table->string('action_name')->nullable();
$table->string('description')->nullable(); $table->string('description')->nullable();
$table->unsignedBigInteger('savaneh_id')->nullable(); $table->unsignedBigInteger('savaneh_id')->nullable();

View File

@@ -2,6 +2,7 @@
namespace Database\Seeders; namespace Database\Seeders;
use App\Models\OperatorDialogue;
use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
@@ -12,6 +13,6 @@ class OperatorDialogueSeeder extends Seeder
*/ */
public function run(): void public function run(): void
{ {
// OperatorDialogue::factory()->count(10)->create();
} }
} }

View File

@@ -4,6 +4,7 @@ namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class PeopleMessageActionSeeder extends Seeder class PeopleMessageActionSeeder extends Seeder
{ {
@@ -12,6 +13,12 @@ class PeopleMessageActionSeeder extends Seeder
*/ */
public function run(): void public function run(): void
{ {
// DB::table('people_message_actions')->insert([
['id' => 1, 'name' => 'عدم نیاز به ثبت (مشکل راه)', 'created_at' => now(), 'updated_at' => now()],
['id' => 2, 'name' => 'عدم نیاز به ثبت (مشکل حمل و نقلی)', 'created_at' => now(), 'updated_at' => now()],
['id' => 3, 'name' => 'عدم نیاز به ثبت (مشکل عوارضی)', 'created_at' => now(), 'updated_at' => now()],
['id' => 4, 'name' => 'ثبت سوانح (مشکل راه)', 'created_at' => now(), 'updated_at' => now()],
['id' => 5, 'name' => 'ثبت سوانح (مشکل حمل و نقلی)', 'created_at' => now(), 'updated_at' => now()],
]);
} }
} }

View File

@@ -2,6 +2,7 @@
namespace Database\Seeders; namespace Database\Seeders;
use App\Models\PeopleMessage;
use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
@@ -12,6 +13,6 @@ class PeopleMessageSeeder extends Seeder
*/ */
public function run(): void public function run(): void
{ {
// PeopleMessage::factory()->count(10)->create();
} }
} }

View File

@@ -2,6 +2,7 @@
namespace Database\Seeders; namespace Database\Seeders;
use App\Models\SystemMessage;
use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
@@ -12,6 +13,6 @@ class SystemMessageSeeder extends Seeder
*/ */
public function run(): void public function run(): void
{ {
// SystemMessage::factory()->count(10)->create();
} }
} }

View File

@@ -128,4 +128,52 @@ Route::prefix('server')->group(function () {
->group(function () { ->group(function () {
Route::get('/', 'index')->name('index'); Route::get('/', 'index')->name('index');
}); });
Route::middleware('auth')
->prefix('system_messages')
->name('systemMessages.')
->group(function () {
Route::prefix('operator')
->name('systemMessages.')
->controller(\App\Http\Controllers\ProvinceDashboard\SystemMessages\OperatorController::class)
->group(function () {
Route::get('/', 'index')->name('index');
Route::get('/excel', 'excel')->name('excel');
Route::get('/{systemMessage}', 'show')->name('show');
});
Route::prefix('supervisor')
->name('systemMessages.')
->controller(\App\Http\Controllers\ProvinceDashboard\SystemMessages\SupervisorController::class)
->group(function () {
Route::get('/', 'index')->name('index');
Route::get('/excel', 'excel')->name('excel');
Route::get('/{systemMessage}', 'show')->name('show');
Route::post('/{systemMessage}', 'rate')->name('rate');
});
});
Route::middleware('auth')
->prefix('people_messages')
->name('peopleMessages.')
->group(function () {
Route::prefix('operator')
->name('peopleMessages.')
->controller(\App\Http\Controllers\ProvinceDashboard\PeopleMessages\OperatorController::class)
->group(function () {
Route::get('/', 'index')->name('index');
Route::get('/excel', 'excel')->name('excel');
Route::post('/{peopleMessage}', 'handle')->name('handle');
Route::get('/{peopleMessage}', 'show')->name('show');
});
Route::prefix('supervisor')
->name('peopleMessages.')
->controller(\App\Http\Controllers\ProvinceDashboard\PeopleMessages\SupervisorController::class)
->group(function () {
Route::get('/', 'index')->name('index');
Route::get('/excel', 'excel')->name('excel');
Route::get('/{peopleMessage}', 'show')->name('show');
});
});
}); });