Update: 2026-07-12 18:53:59
This commit is contained in:
@@ -131,4 +131,52 @@ class TransitAdminController extends GetxController {
|
||||
Get.snackbar('مواصلاتي', res.message);
|
||||
}
|
||||
}
|
||||
|
||||
// ── إدارة العقد ───────────────────────────────────────────────
|
||||
bool isUpdatingContract = false;
|
||||
|
||||
Future<bool> updateContractStatus(int orgId, String contractStatus) async {
|
||||
isUpdatingContract = true;
|
||||
update();
|
||||
final res = await TransitAdminService.updateContractStatus(
|
||||
orgId: orgId, contractStatus: contractStatus);
|
||||
isUpdatingContract = false;
|
||||
if (res.success) {
|
||||
await fetchOrgs();
|
||||
return true;
|
||||
}
|
||||
Get.snackbar('مواصلاتي', res.message);
|
||||
update();
|
||||
return false;
|
||||
}
|
||||
|
||||
// ── اعتماد الخطوط ──────────────────────────────────────────────
|
||||
bool isLoadingPendingRoutes = false;
|
||||
List<Map<String, dynamic>> pendingRoutes = [];
|
||||
bool isApprovingRoute = false;
|
||||
|
||||
Future<void> fetchPendingRoutes({int? orgId}) async {
|
||||
isLoadingPendingRoutes = true;
|
||||
update();
|
||||
final res = await TransitAdminService.listPendingRoutes(orgId: orgId);
|
||||
if (res.success) pendingRoutes = res.data ?? [];
|
||||
isLoadingPendingRoutes = false;
|
||||
update();
|
||||
}
|
||||
|
||||
Future<bool> approveRoute(int routeId, String action) async {
|
||||
isApprovingRoute = true;
|
||||
update();
|
||||
final res = await TransitAdminService.approveRoute(
|
||||
routeId: routeId, action: action);
|
||||
isApprovingRoute = false;
|
||||
if (res.success) {
|
||||
pendingRoutes.removeWhere((r) => int.tryParse(r['id'].toString()) == routeId);
|
||||
update();
|
||||
return true;
|
||||
}
|
||||
Get.snackbar('مواصلاتي', res.message);
|
||||
update();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,4 +136,56 @@ class TransitAdminService {
|
||||
if (res is Map && res['status'] == 'success') return TransitApiResult(true, null, 'ok');
|
||||
return TransitApiResult(false, null, _errMsg(res));
|
||||
}
|
||||
|
||||
// ── اعتماد الخطوط ──────────────────────────────────────────────
|
||||
|
||||
static Future<TransitApiResult<List<Map<String, dynamic>>>> listPendingRoutes({
|
||||
int? orgId,
|
||||
}) async {
|
||||
final payload = <String, dynamic>{};
|
||||
if (orgId != null) payload['org_id'] = orgId.toString();
|
||||
|
||||
final res =
|
||||
await CRUD().post(link: '$_base/route/pending.php', payload: payload);
|
||||
if (res is Map && res['status'] == 'success' && res['message'] is Map) {
|
||||
final msg = res['message'] as Map;
|
||||
final list = (msg['routes'] is List)
|
||||
? (msg['routes'] as List)
|
||||
.map((r) => Map<String, dynamic>.from(r))
|
||||
.toList()
|
||||
: <Map<String, dynamic>>[];
|
||||
return TransitApiResult(true, list, 'ok');
|
||||
}
|
||||
return TransitApiResult(false, null, _errMsg(res));
|
||||
}
|
||||
|
||||
static Future<TransitApiResult<Map<String, dynamic>>> updateContractStatus({
|
||||
required int orgId,
|
||||
required String contractStatus, // active | trial | suspended | terminated
|
||||
}) async {
|
||||
final res = await CRUD().post(link: '$_base/org/update.php', payload: {
|
||||
'org_id': orgId.toString(),
|
||||
'contract_status': contractStatus,
|
||||
});
|
||||
if (res is Map && res['status'] == 'success') {
|
||||
return TransitApiResult(
|
||||
true, Map<String, dynamic>.from(res['message'] ?? {}), 'ok');
|
||||
}
|
||||
return TransitApiResult(false, null, _errMsg(res));
|
||||
}
|
||||
|
||||
static Future<TransitApiResult<Map<String, dynamic>>> approveRoute({
|
||||
required int routeId,
|
||||
required String action, // approve | suspend | reject
|
||||
}) async {
|
||||
final res = await CRUD().post(link: '$_base/route/approve.php', payload: {
|
||||
'route_id': routeId.toString(),
|
||||
'action': action,
|
||||
});
|
||||
if (res is Map && res['status'] == 'success') {
|
||||
return TransitApiResult(
|
||||
true, Map<String, dynamic>.from(res['message'] ?? {}), 'ok');
|
||||
}
|
||||
return TransitApiResult(false, null, _errMsg(res));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user