From ea3d632390f3a4c993b276367253589e5cb21a59 Mon Sep 17 00:00:00 2001
From: Kritkhanin Anantakul <65160144@go.buu.ac.th>
Date: Tue, 4 Mar 2025 00:42:07 +0700
Subject: [PATCH] page and queue type service

---
 src/services/page.ts  | 33 ++++++++++++++++++++++++++++
 src/services/queue.ts | 50 +++++++++++++++++++++++++++++++++++++++++++
 src/types/Page.ts     |  5 +++++
 src/types/Queue.ts    | 11 ++++++++++
 4 files changed, 99 insertions(+)
 create mode 100644 src/services/page.ts
 create mode 100644 src/services/queue.ts
 create mode 100644 src/types/Page.ts
 create mode 100644 src/types/Queue.ts

diff --git a/src/services/page.ts b/src/services/page.ts
new file mode 100644
index 0000000..8226656
--- /dev/null
+++ b/src/services/page.ts
@@ -0,0 +1,33 @@
+import type { Page } from "../types/Page";
+
+export class PageService {
+  private pages: Page[] = [];
+
+  // ดึงข้อมูลหน้าทั้งหมด
+  getPages(): Page[] {
+    return this.pages;
+  }
+
+  // ค้นหาหน้าโดยใช้ pageID
+  getPageById(pageID: number): Page | undefined {
+    return this.pages.find(page => page.pageID === pageID);
+  }
+
+  // เพิ่มหน้าใหม่
+  addPage(page: Page): void {
+    this.pages.push(page);
+  }
+
+  // อัปเดตข้อมูลของหน้า
+  updatePage(updatedPage: Page): void {
+    const index = this.pages.findIndex(page => page.pageID === updatedPage.pageID);
+    if (index !== -1) {
+      this.pages[index] = updatedPage;
+    }
+  }
+
+  // ลบหน้าตาม pageID
+  removePage(pageID: number): void {
+    this.pages = this.pages.filter(page => page.pageID !== pageID);
+  }
+}
diff --git a/src/services/queue.ts b/src/services/queue.ts
new file mode 100644
index 0000000..9346146
--- /dev/null
+++ b/src/services/queue.ts
@@ -0,0 +1,50 @@
+import type { Queue } from '@/types/Queue'
+
+export class QueueService {
+  private queue: Queue[] = [];
+
+  // ดึงรายการคิวทั้งหมด
+  getQueue(): Queue[] {
+    return this.queue;
+  }
+
+  // ค้นหารายการคิวโดยใช้ queueID
+  getQueueById(queueID: number): Queue | undefined {
+    return this.queue.find(item => item.queueID === queueID);
+  }
+
+  // เพิ่มรายการใหม่เข้า queue
+  addQueueItem(item: Queue): void {
+    this.queue.push(item);
+  }
+
+  // อัปเดตรายการ queue ที่มีอยู่
+  updateQueueItem(updatedItem: Queue): void {
+    const index = this.queue.findIndex(item => item.queueID === updatedItem.queueID);
+    if (index !== -1) {
+      this.queue[index] = updatedItem;
+    }
+  }
+
+  // ลบรายการ queue ตาม queueID
+  removeQueueItem(queueID: number): void {
+    this.queue = this.queue.filter(item => item.queueID !== queueID);
+  }
+
+  // เปลี่ยนสถานะของคิว
+  updateQueueStatus(queueID: number, status: 'pending' | 'in-progress' | 'completed' | 'canceled'): void {
+    const queueItem = this.getQueueById(queueID);
+    if (queueItem) {
+      queueItem.status = status;
+    }
+  }
+
+  // คำนวณเวลาการทำงานของ queue
+  calculateProductionTime(queueID: number): number | null {
+    const queueItem = this.getQueueById(queueID);
+    if (queueItem && queueItem.startTime && queueItem.finishTime) {
+      return (queueItem.finishTime.getTime() - queueItem.startTime.getTime()) / (1000 * 60); // แปลงเป็นนาที
+    }
+    return null;
+  }
+}
diff --git a/src/types/Page.ts b/src/types/Page.ts
new file mode 100644
index 0000000..7925fb1
--- /dev/null
+++ b/src/types/Page.ts
@@ -0,0 +1,5 @@
+export type Page = {
+    pageID: number; // PK - รหัสหน้าที่ใช้ใน Gantt Chart
+    priorityID: number; // FK - รหัสความสำคัญ (เชื่อมกับ Priority)
+  };
+  
\ No newline at end of file
diff --git a/src/types/Queue.ts b/src/types/Queue.ts
new file mode 100644
index 0000000..d213212
--- /dev/null
+++ b/src/types/Queue.ts
@@ -0,0 +1,11 @@
+export type Queue = {
+  queueID: number; // PK - รหัส Queue
+  machineID: number; // FK - รหัสเครื่องจักรที่ใช้
+  orderID: number; // FK - รหัสออเดอร์ที่เกี่ยวข้อง
+  pageID: number; // FK - รหัสหน้าที่แสดงใน Gantt Chart
+  startTime: Date; // เวลาเริ่มต้น
+  finishTime: Date; // เวลาสิ้นสุด
+  status: 'pending' | 'in-progress' | 'completed' | 'canceled'; // สถานะของคิว
+  bottleSize: string; // ขนาดขวดที่ผลิต
+  producedQuantity: number; // จำนวนที่ผลิตได้
+};
-- 
GitLab