create system messages and people messages

This commit is contained in:
2025-07-30 09:37:33 +03:30
parent 3cfe1446e6
commit 18675030a0
14 changed files with 1290 additions and 6 deletions

View File

@@ -7,4 +7,17 @@ enum PeopleMessageActions: int
case x = 1;
case y = 2;
case z = 3;
public static function name(int $state): string
{
$mapArray = [
1 => 'عدم نیاز به ثبت (مشکل راه)',
2 => 'عدم نیاز به ثبت (مشکل حمل و نقلی)',
3 => 'عدم نیاز به ثبت (مشکل عوارضی)',
4 => 'ثبت سوانح (مشکل راه)',
5 => 'ثبت سوانح (مشکل حمل و نقلی)',
];
return $mapArray[$state];
}
}

View File

@@ -7,7 +7,6 @@ use App\Http\Requests\Profile\ChangeAvatarRequest;
use App\Http\Requests\Profile\ChangePasswordRequest;
use App\Http\Resources\Admin\UserResource;
use App\Http\Traits\ApiResponse;
use App\Models\Session;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -59,10 +58,7 @@ class ProfileController extends Controller
public function offline(Request $request): JsonResponse
{
$user= User::query()->where('telephone_id', '=', $request->telephone_id)->first();
$user->update([
'is_online' => false,
]);
Session::query()->where('user_id','=',$user->id)->delete();
$user->update(['is_online' => false]);
return $this->successResponse();
}

View File

@@ -0,0 +1,49 @@
<?php
namespace App\Http\Controllers\ProvinceDashboard\PeopleMessages;
use App\Enums\PeopleMessageActions;
use App\Http\Controllers\Controller;
use app\Http\Traits\ApiResponse;
use App\Models\PeopleMessage;
use App\Services\Dashboard\Province\PeopleMessages\DataTableService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class OperatorController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
public function index(Request $request, DataTableService $dataTableService): JsonResponse
{
return response()->json($dataTableService->index($request));
}
public function excel()
{
}
public function handle(Request $request, PeopleMessage $peopleMessage): JsonResponse
{
$peopleMessage->update([
'listen_at' => now(),
'is_listen' => true,
'action_id' => $request->action_id,
'action_name' => PeopleMessageActions::name($request->action_id),
'description' => $request->description,
'savaneh_id' => $request->savaneh_id,
]);
return $this->successResponse();
}
/**
* Display the specified resource.
*/
public function show(PeopleMessage $peopleMessage): JsonResponse
{
return $this->successResponse($peopleMessage);
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace App\Http\Controllers\ProvinceDashboard\PeopleMessages;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class SupervisorController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers\ProvinceDashboard\SystemMessages;
use App\Http\Controllers\Controller;
use app\Http\Traits\ApiResponse;
use App\Models\SystemMessage;
use App\Services\Dashboard\Province\SystemMessages\OperatorService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class OperatorController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
public function index(Request $request, OperatorService $operatorService): JsonResponse
{
return response()->json($operatorService->datatable($request));
}
/**
* Display the specified resource.
*/
public function show(SystemMessage $systemMessage): JsonResponse
{
return $this->successResponse($systemMessage->only(['id','duration','date', 'voice']));
}
public function download(string $id)
{
//
}
public function excel()
{
}
}

View File

@@ -0,0 +1,48 @@
<?php
namespace App\Http\Controllers\ProvinceDashboard\SystemMessages;
use App\Http\Controllers\Controller;
use App\Http\Requests\ProvinceDashboard\SystemMessages\RateRequest;
use app\Http\Traits\ApiResponse;
use App\Models\SystemMessage;
use App\Services\Dashboard\Province\SystemMessages\SupervisorService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class SupervisorController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
public function index(Request $request, SupervisorService $supervisorService): JsonResponse
{
return response()->json($supervisorService->datatable($request));
}
public function excel()
{
}
/**
* Store a newly created resource in storage.
*/
public function rate(RateRequest $request, SystemMessage $systemMessage): JsonResponse
{
$systemMessage->update([
'message_quality' => $request->message_quality,
'format_quality' => $request->format_quality,
]);
return $this->successResponse();
}
/**
* Display the specified resource.
*/
public function show(SystemMessage $systemMessage): JsonResponse
{
return $this->successResponse($systemMessage);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests\ProvinceDashboard\SystemMessages;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class RateRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
'message_quality' => 'required|in:0,1',
'format_quality' => 'required|in:0,1',
];
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Services\Dashboard\Province\PeopleMessages;
use App\Facades\DataTable\DataTableFacade;
use App\Models\PeopleMessage;
use Illuminate\Http\Request;
class DataTableService
{
public function index(Request $request)
{
$user = auth()->user();
$query = PeopleMessage::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id);
return DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: [
'id','caller_phone_number','date', 'voice', 'listen_at', 'review_duration',
'is_listen', 'action_id', 'action_name', 'description', 'savaneh_id'
]
);
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Services\Dashboard\Province\SystemMessages;
use App\Facades\DataTable\DataTableFacade;
use App\Models\SystemMessage;
use Illuminate\Http\Request;
class OperatorService
{
public function dataTable(Request $request)
{
$user = auth()->user();
$query = SystemMessage::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id);
return DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: ['id','duration','date', 'voice', 'type_id', 'type_name']
);
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Services\Dashboard\Province\SystemMessages;
use App\Facades\DataTable\DataTableFacade;
use App\Models\SystemMessage;
use Illuminate\Http\Request;
class SupervisorService
{
public function dataTable(Request $request)
{
$query = SystemMessage::query();
return DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: ['id','duration','date', 'voice', 'message_quality', 'format_quality', 'type_id', 'type_name']
);
}
}