Initial V2 commit 4\9

This commit is contained in:
Hamza-Ayed
2026-04-23 21:23:23 +03:00
parent 098aa9ad37
commit c4bf4ea679
8 changed files with 666 additions and 8 deletions

View File

@@ -0,0 +1,271 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\DB;
use App\Helpers\LegacyEncryption;
/**
* MiscController (Miscellaneous Controller) - متحكم المتفرقات
*
* تم التحديث لضمان التوافق التام مع V1 من حيث:
* 1. إرجاع HTTP 200 دائماً مع تحديد الحالة داخل الـ JSON (success/failure).
* 2. استخدام مفتاح 'message' للبيانات.
* 3. إضافة شروط التحقق (if) لكل العمليات.
*/
class MiscController extends Controller
{
private LegacyEncryption $enc;
public function __construct(LegacyEncryption $enc)
{
$this->enc = $enc;
}
/** GET /v2/misc/test */
public function test(): JsonResponse
{
return response()->json([
'status' => 'success',
'message' => 'V2 Connection Stable'
]);
}
/** GET /v2/misc/package-info */
public function packageInfo(): JsonResponse
{
$info = DB::connection('primary')->table('packageInfo')->orderBy('id', 'desc')->first();
if (!$info) {
return response()->json([
'status' => 'failure',
'message' => 'No package info found'
]);
}
return response()->json([
'status' => 'success',
'message' => $info
]);
}
/** GET /v2/misc/kazan-percent */
public function getKazanPercent(Request $request): JsonResponse
{
$country = $request->input('country');
if (!$country) {
return response()->json([
'status' => 'failure',
'message' => 'Country parameter is missing'
]);
}
$data = DB::connection('primary')->table('kazan')
->where('country', $country)
->get();
if ($data->isEmpty()) {
return response()->json([
'status' => 'failure',
'message' => 'No Kazan record found'
]);
}
return response()->json([
'status' => 'success',
'message' => $data
]);
}
/** GET /v2/misc/help-center */
public function getHelpCenter(Request $request): JsonResponse
{
$driverId = $request->input('driverID');
if (!$driverId) {
return response()->json([
'status' => 'failure',
'message' => 'driverID is required'
]);
}
$data = DB::connection('primary')->table('helpCenter')
->where('driverID', $driverId)
->orderBy('datecreated', 'desc')
->get();
if ($data->isEmpty()) {
return response()->json([
'status' => 'failure',
'message' => 'Help question not found'
]);
}
return response()->json([
'status' => 'success',
'message' => $data
]);
}
/** GET /v2/misc/tips */
public function getTips(Request $request): JsonResponse
{
$driverId = $request->input('driverID');
$passengerId = $request->input('passendgerID');
if (!$driverId && !$passengerId) {
return response()->json([
'status' => 'failure',
'message' => 'driverID or passendgerID is required'
]);
}
$query = DB::connection('primary')->table('tips');
if ($driverId) {
$query->where('driverID', $driverId);
}
if ($passengerId) {
$query->orWhere('passendgerID', $passengerId);
}
$data = $query->get();
if ($data->isEmpty()) {
return response()->json([
'status' => 'failure',
'message' => 'No tips records found'
]);
}
return response()->json([
'status' => 'success',
'message' => $data
]);
}
/** GET /v2/misc/license */
public function getLicense(): JsonResponse
{
$data = DB::connection('primary')->table('license')->get();
if ($data->isEmpty()) {
return response()->json([
'status' => 'failure',
'message' => 'License info not found'
]);
}
return response()->json([
'status' => 'success',
'message' => $data
]);
}
/** POST /v2/misc/help-center */
public function storeHelpCenter(Request $request): JsonResponse
{
$driverId = $request->input('driverID');
$passengerId = $request->input('passengerID');
$helpQuestion = $request->input('helpQuestion');
if ((!$driverId && !$passengerId) || !$helpQuestion) {
return response()->json(['status' => 'failure', 'message' => 'Missing parameters']);
}
try {
DB::connection('primary')->table('helpCenter')->insert([
'driverID' => $driverId ?? $passengerId,
'helpQuestion' => $helpQuestion,
'datecreated' => now()
]);
return response()->json(['status' => 'success', 'message' => 'Help question saved successfully']);
} catch (\Exception $e) {
return response()->json(['status' => 'failure', 'message' => 'Database error: ' . $e->getMessage()]);
}
}
/** POST /v2/misc/tips */
public function storeTips(Request $request): JsonResponse
{
$passengerId = $request->input('passengerID');
$driverId = $request->input('driverID');
$rideId = $request->input('rideID');
$tipAmount = $request->input('tipAmount');
if (!$passengerId || !$driverId || !$rideId || !$tipAmount) {
return response()->json(['status' => 'failure', 'message' => 'Missing parameters']);
}
try {
DB::connection('primary')->table('tips')->insert([
'passengerID' => $passengerId,
'driverID' => $driverId,
'rideID' => $rideId,
'tipAmount' => $tipAmount,
'created_at' => now()
]);
return response()->json(['status' => 'success', 'message' => 'Tip inserted successfully']);
} catch (\Exception $e) {
return response()->json(['status' => 'failure', 'message' => 'Database error: ' . $e->getMessage()]);
}
}
/** GET /v2/misc/api-key */
public function getApiKey(): JsonResponse
{
$data = DB::connection('primary')->table('apiKey')->first();
if (!$data) {
return response()->json([
'status' => 'failure',
'message' => 'API Key not found'
]);
}
return response()->json([
'status' => 'success',
'message' => $data
]);
}
/** POST /v2/misc/egypt-phones */
public function saveEgyptPhones(Request $request): JsonResponse
{
$request->validate([
'phones' => 'required|string',
'name' => 'nullable|string',
'phones2' => 'nullable|string',
]);
try {
$id = DB::connection('primary')->table('contactEgypt')->insertGetId([
'phones' => $request->input('phones'),
'name' => $request->input('name'),
'phones2' => $request->input('phones2'),
]);
if ($id) {
return response()->json([
'status' => 'success',
'message' => 'Contact data saved successfully'
]);
} else {
return response()->json([
'status' => 'failure',
'message' => 'Failed to save contact data'
]);
}
} catch (\Exception $e) {
return response()->json([
'status' => 'failure',
'message' => 'Database error: ' . $e->getMessage()
]);
}
}
}