Update Saqel Platform: 2026-09-08 17:30:46
This commit is contained in:
@@ -6,9 +6,59 @@ use App\Core\Database;
|
||||
use App\Core\Request;
|
||||
use App\Core\Response;
|
||||
use App\Services\CliqPaymentService;
|
||||
use App\Core\Security;
|
||||
|
||||
class SuperAdminController
|
||||
{
|
||||
public function directorates(Request $request, Response $response): void
|
||||
{ $response->json(['status'=>'success','data'=>Database::select('SELECT * FROM directorates ORDER BY id DESC')]); }
|
||||
|
||||
public function saveDirectorate(Request $request, Response $response): void
|
||||
{ $b=$request->getBody(); $id=(int)($b['id']??0); $name=trim((string)($b['name']??'')); $code=trim((string)($b['code']??'')); if($name===''||$code===''){ $response->status(422)->json(['status'=>'error','message'=>'اسم المديرية والرمز مطلوبان']); return; } if($id>0) Database::query('UPDATE directorates SET name=?,code=?,type=?,commander_name=?,phone=?,is_active=? WHERE id=?',[$name,$code,$b['type']??'ministry',$b['commander_name']??null,$b['phone']??null,(int)($b['is_active']??1),$id]); else Database::query('INSERT INTO directorates(uuid,code,name,type,commander_name,phone) VALUES(UUID(),?,?,?,?,?)',[$code,$name,$b['type']??'ministry',$b['commander_name']??null,$b['phone']??null]); $response->json(['status'=>'success']); }
|
||||
|
||||
public function toggleDirectorate(Request $request, Response $response): void
|
||||
{ $b=$request->getBody(); Database::query("UPDATE directorates SET is_active=IF(is_active=1,0,1) WHERE id=?",[(int)($b['id']??0)]); $response->json(['status'=>'success']); }
|
||||
public function schools(Request $request, Response $response): void
|
||||
{
|
||||
$response->json(['status' => 'success', 'data' => Database::select(
|
||||
"SELECT s.*, d.name AS directorate_name FROM schools s LEFT JOIN directorates d ON d.id=s.directorate_id ORDER BY s.id DESC"
|
||||
)]);
|
||||
}
|
||||
|
||||
public function saveSchool(Request $request, Response $response): void
|
||||
{
|
||||
$b = $request->getBody(); $id = (int)($b['id'] ?? 0);
|
||||
$name = trim((string)($b['name'] ?? '')); $code = trim((string)($b['code'] ?? ''));
|
||||
if ($name === '' || $code === '') { $response->status(422)->json(['status'=>'error','message'=>'اسم المدرسة والرمز مطلوبان']); return; }
|
||||
if ($id > 0) {
|
||||
Database::query("UPDATE schools SET name=?, code=?, type=?, directorate_id=?, director_name=?, phone=?, city=?, governorate=?, latitude=?, longitude=? WHERE id=?", [$name,$code,$b['type']??'center',$b['directorate_id']?:null,$b['director_name']??null,$b['phone']??null,$b['city']??'Amman',$b['governorate']??'العاصمة',$b['latitude']??null,$b['longitude']??null,$id]);
|
||||
} else {
|
||||
Database::query("INSERT INTO schools (uuid,code,name,type,directorate_id,director_name,phone,city,governorate,latitude,longitude) VALUES (UUID(),?,?,?,?,?,?,?,?,?,?)", [$code,$name,$b['type']??'center',$b['directorate_id']?:null,$b['director_name']??null,$b['phone']??null,$b['city']??'Amman',$b['governorate']??'العاصمة',$b['latitude']??null,$b['longitude']??null]);
|
||||
$id=(int)Database::getInstance()->lastInsertId();
|
||||
}
|
||||
$response->json(['status'=>'success','data'=>['id'=>$id]]);
|
||||
}
|
||||
|
||||
public function toggleSchool(Request $request, Response $response): void
|
||||
{ $b=$request->getBody(); Database::query("UPDATE schools SET is_active=IF(is_active=1,0,1) WHERE id=?",[(int)($b['id']??0)]); $response->json(['status'=>'success']); }
|
||||
|
||||
public function staff(Request $request, Response $response): void
|
||||
{ $response->json(['status'=>'success','data'=>Database::select("SELECT sa.id,sa.uuid,sa.identity_id,sa.full_name,sa.role,sa.school_id,sa.directorate_id,sa.status,ai.phone_hash FROM staff_accounts sa JOIN auth_identities ai ON ai.id=sa.identity_id ORDER BY sa.id DESC")]); }
|
||||
|
||||
public function toggleStaff(Request $request, Response $response): void
|
||||
{ $b=$request->getBody(); Database::query("UPDATE staff_accounts SET status=IF(status='active','suspended','active') WHERE id=?",[(int)($b['id']??0)]); $response->json(['status'=>'success']); }
|
||||
|
||||
public function saveStaff(Request $request, Response $response): void
|
||||
{
|
||||
$b=$request->getBody(); $id=(int)($b['id']??0); $role=(string)($b['role']??''); $name=trim((string)($b['full_name']??'')); $phone=preg_replace('/\D+/','',(string)($b['phone']??''));
|
||||
if($name===''||!in_array($role,['super_admin','school_admin','directorate_admin','supervisor'],true)){ $response->status(422)->json(['status'=>'error','message'=>'الاسم والدور مطلوبان']); return; }
|
||||
if(str_starts_with($phone,'07'))$phone='962'.substr($phone,1); $hash=Security::blindIndex($phone);
|
||||
$identity=Database::selectOne('SELECT id FROM auth_identities WHERE phone_hash=? LIMIT 1',[$hash]);
|
||||
if(!$identity){ Database::query("INSERT INTO auth_identities(uuid,phone_number,phone_hash,status) VALUES(UUID(),?,?, 'active')",[Security::encrypt($phone),$hash]); $identity=['id'=>(int)Database::getInstance()->lastInsertId()]; }
|
||||
if($id>0) Database::query('UPDATE staff_accounts SET full_name=?,role=?,school_id=?,directorate_id=?,status=\'active\' WHERE id=?',[$name,$role,$b['school_id']?:null,$b['directorate_id']?:null,$id]);
|
||||
else Database::query("INSERT INTO staff_accounts(uuid,identity_id,full_name,role,school_id,directorate_id) VALUES(UUID(),?,?,?,?,?)",[$identity['id'],$name,$role,$b['school_id']?:null,$b['directorate_id']?:null]);
|
||||
$response->json(['status'=>'success']);
|
||||
}
|
||||
public function overview(Request $request, Response $response): void
|
||||
{
|
||||
CliqPaymentService::ensureSchema();
|
||||
|
||||
Reference in New Issue
Block a user