Merge branch 'feature/VoiceFiles' into 'feature/CreateExcel'

Feature/voice files

See merge request witel-back-end/crm!22
This commit is contained in:
2025-08-11 12:23:56 +00:00
25 changed files with 330 additions and 119 deletions

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Http\Controllers\HeadquartersDashboard;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class CumulativeSupervisorPerformanceStatsController extends Controller
{
public function index(Request $request): JsonResponse
{
$query = DB::table('supervisor_performances')->selectRaw("
province_id,
province_name,
SUM(calls) AS total,
SUM(reviews) AS reviews,
SUM(good) AS good,
SUM(bad) AS bad
")
->groupBy('province_id', 'province_name')
->unionAll(DB::table('supervisor_performances')->selectRaw("
0 as province_id,
'کشوری' as province_name,
SUM(calls) AS total,
SUM(reviews) AS reviews,
SUM(good) AS good,
SUM(bad) AS bad
"));
return response()->json(
DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'])
);
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers\HeadquartersDashboard;
use App\Http\Controllers\Controller;
use app\Http\Traits\ApiResponse;
use App\Models\Province;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -10,19 +11,20 @@ use Illuminate\Support\Facades\Hash;
class LoginToProvinceController extends Controller
{
public function loginToProvince(Request $request)
use ApiResponse;
public function authenticate(Request $request)
{
$province_ip = Province::query()
->Where('id', '=', $request->province_id)
->value('ip_address');
$payload = [
$data = [
'user_id' => auth()->user()->id,
'token' => Hash::make(config('globalVariables.LOGIN_HASH_VALUE')),
'ip' => $province_ip,
];
$url = $province_ip . "?" . http_build_query($payload);
return redirect($url);
return $this->successResponse($data);
}
}

View File

@@ -37,9 +37,11 @@ class ProfileController extends Controller
public function changeAvatar(ChangeAvatarRequest $request): JsonResponse
{
$user = auth()->user();
if ($user->avatar){
FileFacade::delete($user->avatar, true);
}
$user->update([
'avatar' => FileFacade::save($request->file('avatar'), 'users/avatars/' . $request->username)
]);
@@ -49,16 +51,19 @@ class ProfileController extends Controller
public function online(Request $request): JsonResponse
{
User::query()->where('telephone_id', '=', $request->telephone_id)->update([
'is_online' => true,
]);
User::query()
->firstWhere('telephone_id', '=', $request->telephone_id)
->update(['is_online' => true,]);
return $this->successResponse();
}
public function offline(Request $request): JsonResponse
{
$user= User::query()->where('telephone_id', '=', $request->telephone_id)->first();
$user->update(['is_online' => false]);
User::query()
->firstWhere('telephone_id', '=', $request->telephone_id)
->update(['is_online' => false]);
return $this->successResponse();
}

View File

@@ -4,6 +4,8 @@ namespace App\Http\Controllers\ProvinceDashboard\OperatorDialogues;
use App\Exports\OperatorDialogues\OperatorCartableExcel;
use App\Http\Controllers\Controller;
use app\Http\Traits\ApiResponse;
use App\Models\OperatorDialogue;
use App\Services\Dashboard\Province\OperatorDialogues\DataTableService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -12,6 +14,7 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse;
class OperatorController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
@@ -23,9 +26,9 @@ class OperatorController extends Controller
/**
* Display the specified resource.
*/
public function show(string $id)
public function show(OperatorDialogue $operatorDialogue): JsonResponse
{
//
return $this->successResponse($operatorDialogue);
}
/**

View File

@@ -44,5 +44,4 @@ class SupervisorController extends Controller
$data = $dataTableService->dataTable($request, true);
return Excel::download(new SupervisorCartableExcel($data['data']), $name);
}
}

View File

@@ -4,6 +4,8 @@ namespace App\Http\Controllers\ProvinceDashboard\PeopleMessages;
use App\Exports\PeopleMessages\SupervisorCartableExcel;
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;
@@ -11,6 +13,8 @@ use Maatwebsite\Excel\Facades\Excel;
class SupervisorController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
@@ -29,8 +33,8 @@ class SupervisorController extends Controller
/**
* Display the specified resource.
*/
public function show(string $id)
public function show(PeopleMessage $peopleMessage)
{
//
return $this->successResponse($peopleMessage);
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Controllers\ProvinceDashboard;
use App\Http\Controllers\Controller;
use app\Http\Traits\ApiResponse;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class VerifyAuthenticationController extends Controller
{
use ApiResponse;
public function login(Request $request)
{
if (!Hash::check(config('globalVariables.LOGIN_HASH_VALUE'), $request->token)) {
return $this->errorResponse('Invalid token');
}
$user = User::query()->findOrFail($request->user_id);
Auth::login($user);
return $this->successResponse();
}
}