<?php
declare(strict_types=1);
require __DIR__.'/app/bootstrap.php'; require_permission('projects.view_financials'); require __DIR__.'/app/layout.php';
$pdo=db(); $companyId=company_id(); $userId=(int)user()['id'];
if($_SERVER['REQUEST_METHOD']==='POST'){
 verify_csrf();
 try{
  $no=trim((string)($_POST['project_no']??'')); $name=trim((string)($_POST['name_ar']??'')); $customer=trim((string)($_POST['customer_name']??''));
  if(!$no||!$name||!$customer) throw new RuntimeException('رقم المشروع واسمه واسم العميل مطلوبة.');
  $pdo->beginTransaction();
  $partnerCode='CUS-'.$no;
  $s=$pdo->prepare("INSERT INTO business_partners(company_id,partner_code,legal_name_ar,partner_kind,country_code,status,created_at,updated_at) VALUES (?,?,?,'organization','SA','active',NOW(),NOW())"); $s->execute([$companyId,$partnerCode,$customer]); $partnerId=(int)$pdo->lastInsertId();
  $pdo->prepare("INSERT INTO customers(partner_id,customer_type,is_active) VALUES (?,'private',1)")->execute([$partnerId]); $customerId=(int)$pdo->lastInsertId();
  $s=$pdo->prepare("INSERT INTO cost_centers(company_id,branch_id,code,name_ar,center_type,is_active,created_at,updated_at) VALUES (?,?,?,?,'project',1,NOW(),NOW())"); $s->execute([$companyId,(int)user()['branch_id'],'PRJ-'.$no,$name]); $costCenterId=(int)$pdo->lastInsertId();
  $s=$pdo->prepare("INSERT INTO projects(company_id,branch_id,customer_id,cost_center_id,project_no,name_ar,project_type,location_name,planned_start_date,planned_end_date,status,created_by,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,'active',?,NOW(),NOW())");
  $s->execute([$companyId,(int)user()['branch_id'],$customerId,$costCenterId,$no,$name,trim((string)($_POST['project_type']??''))?:null,trim((string)($_POST['location_name']??''))?:null,($_POST['planned_start_date']??'')?:null,($_POST['planned_end_date']??'')?:null,$userId]);
  $projectId=(int)$pdo->lastInsertId(); $pdo->commit(); audit('project.create','project',(string)$projectId,['project_no'=>$no]); flash('success','تم إنشاء المشروع ومركز تكلفته تلقائيًا.');
 }catch(Throwable $e){if($pdo->inTransaction())$pdo->rollBack();flash('error',$e instanceof PDOException?'رقم المشروع مستخدم مسبقًا أو البيانات مرتبطة بسجل موجود.':$e->getMessage());}
 redirect('projects.php');
}
$s=$pdo->prepare("SELECT p.*,bp.legal_name_ar customer_name,cc.code cost_center_code FROM projects p JOIN customers c ON c.id=p.customer_id JOIN business_partners bp ON bp.id=c.partner_id JOIN cost_centers cc ON cc.id=p.cost_center_id WHERE p.company_id=? AND p.deleted_at IS NULL ORDER BY p.id DESC");$s->execute([$companyId]);$projects=$s->fetchAll();
render_header('projects','المشاريع ومراكز التكلفة','كل مشروع يرتبط تلقائيًا بعميل ومركز تكلفة مستقل.'); ?>
<details class="panel quick-add" open><summary>＋ إضافة مشروع</summary><form method="post"><?= csrf_field() ?><div class="form-grid"><label>رقم المشروع<input name="project_no" required></label><label>اسم المشروع<input name="name_ar" required></label><label>اسم العميل<input name="customer_name" required></label><label>نوع المشروع<input name="project_type" placeholder="إنشائي، طرق، صيانة..."></label><label>الموقع<input name="location_name"></label><label>البداية المخططة<input type="date" name="planned_start_date"></label><label>النهاية المخططة<input type="date" name="planned_end_date"></label></div><button class="primary-btn">إنشاء المشروع</button></form></details>
<section class="panel data-card"><div class="responsive-table"><table><thead><tr><th>المشروع</th><th>العميل</th><th>مركز التكلفة</th><th>الفترة المخططة</th><th>الإنجاز</th><th>الحالة</th></tr></thead><tbody><?php foreach($projects as $p):?><tr><td><strong><?= e($p['project_no'].' — '.$p['name_ar']) ?></strong><small><?= e($p['location_name']) ?></small></td><td><?= e($p['customer_name']) ?></td><td><?= e($p['cost_center_code']) ?></td><td><?= e(($p['planned_start_date']?:'—').' / '.($p['planned_end_date']?:'—')) ?></td><td><?= number_format((float)$p['completion_pct'],1) ?>%</td><td><span class="chip success"><?= e($p['status']) ?></span></td></tr><?php endforeach;?></tbody></table></div></section>
<?php render_footer();
