Commit 9b06365e by Ooh-Ao

api หน้าจอ

parent 318d51ac
......@@ -24,7 +24,8 @@ async def create_equipment(equipment_data: EquipmentCreate, db: AsyncSession):
description=equipment_data.description,
quantity=equipment_data.quantity,
is_returnable=equipment_data.is_returnable,
picture=equipment_data.picture
picture=equipment_data.picture,
serialNumber=equipment_data.serialNumber
)
db.add(new_equipment)
try:
......@@ -44,6 +45,8 @@ async def update_equipment(equipment_id: UUID, equipment_data: EquipmentUpdate,
eq_db.equipmentName = equipment_data.equipmentName
if equipment_data.description is not None:
eq_db.description = equipment_data.description
if equipment_data.serialNumber is not None:
eq_db.serialNumber = equipment_data.serialNumber
if equipment_data.is_returnable is not None:
eq_db.is_returnable = equipment_data.is_returnable
if equipment_data.picture is not None:
......
......@@ -12,8 +12,12 @@ async def create_project(db: AsyncSession, project_in: ProjectCreate):
new_project = Project(
project_name=project_in.project_name,
project_desc=project_in.project_desc,
project_code=project_in.project_code,
start_date=project_in.start_date,
end_date=project_in.end_date
end_date=project_in.end_date,
picture=project_in.picture,
contact=project_in.contact,
responsible=project_in.responsible
)
try:
db.add(new_project)
......@@ -45,6 +49,8 @@ async def update_project(db: AsyncSession, project_id: UUID, project_in: Project
project_db.project_name = project_in.project_name
if project_in.project_desc is not None:
project_db.project_desc = project_in.project_desc
if project_in.project_code is not None:
project_db.project_code = project_in.project_code
if project_in.start_date is not None:
project_db.start_date = project_in.start_date
if project_in.end_date is not None:
......@@ -52,6 +58,12 @@ async def update_project(db: AsyncSession, project_id: UUID, project_in: Project
if project_in.start_date and project_in.end_date < project_in.start_date:
raise HTTPException(status_code=400, detail="end_date cannot be before start_date")
project_db.end_date = project_in.end_date
if project_in.picture is not None:
project_db.picture = project_in.picture
if project_in.responsible is not None:
project_db.responsible = project_in.responsible
if project_in.contact is not None:
project_db.contact = project_in.contact
try:
await db.commit()
......
......@@ -17,6 +17,7 @@ class Equipment(Base):
default=uuid.uuid4
)
equipmentName = Column(String(255), nullable=False)
serialNumber = Column(String(255), nullable=False)
description = Column(String, nullable=True)
quantity = Column(Integer, nullable=False)
is_returnable = Column(Boolean, nullable=False, default=True)
......
# myproject/models/project.py
import uuid
from sqlalchemy import Column, String, Text, Date
from sqlalchemy import Column, String, Text, Date ,DateTime
from sqlalchemy.dialects.postgresql import UUID
from ..config.database import Base
from sqlalchemy.orm import relationship
from datetime import datetime
class Project(Base):
__tablename__ = 'project' # ชื่อตาราง
......@@ -15,9 +15,14 @@ class Project(Base):
)
project_name = Column(String(255), nullable=False)
project_desc = Column(Text, nullable=True)
project_code = Column(Text, nullable=True)
start_date = Column(Date, nullable=True)
end_date = Column(Date, nullable=True)
picture = Column(String)
responsible = Column(String)
contact = Column(String)
createdAt = Column(DateTime, nullable=False, default=datetime.utcnow)
updatedAt = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
# Relationship เชื่อมไปยัง ProjectMember และ ProjectEquipment
project_member = relationship(
"ProjectMember",
......
......@@ -7,6 +7,7 @@ from datetime import datetime
class EquipmentBase(BaseModel):
equipmentName: str
description: Optional[str] = None
serialNumber: Optional[str] = None
picture: Optional[str] = None
quantity: int = 0
is_returnable: bool = True
......
......@@ -8,7 +8,11 @@ from datetime import date
class ProjectBase(BaseModel):
project_name: str
project_desc: Optional[str] = None
project_code: Optional[str] = None
responsible: Optional[str] = None
contact: Optional[str] = None
start_date: Optional[date] = None
picture: Optional[str] = None
end_date: Optional[date] = None
class ProjectCreate(ProjectBase):
......
......@@ -83,10 +83,13 @@
</div>
<div class="box-body">
<!-- <p class="mb-0 text-white nft-auction-time">
04hrs : 24m : 38s
</p> -->
<p class="text-[.9375rem] font-semibold mb-2"><a href="javascript:void(0);">{{item.equipmentName}}</a></p>
<div class="flex items-center mb-4">
<div>
<p class="text-[.9375rem] font-semibold mb-2"><a href="javascript:void(0);">{{item.equipmentName}}</a></p>
<p class="text-[0.75rem] text-[#8c9097] dark:text-white/50 mb-0">S/N# {{item.serialNumber}}</p>
</div>
</div>
<div class="flex flex-wrap align-itesm-center justify-between">
<div class="font-semibold mb-1">รายละเอียด :</div>
<p class="text-[#8c9097] dark:text-white/50 mb-3">{{item.description}}</p>
......@@ -164,6 +167,12 @@
<input type="text" class="form-control" id="deal-name" placeholder="ชื่ออุปกรณ์"
[(ngModel)]="selectModel.equipmentName">
</div>
<div class="xl:col-span-12 col-span-12">
<label for="deal-name" class="form-label">S/N</label>
<input type="text" class="form-control" id="deal-name" placeholder="S/N"
[(ngModel)]="selectModel.serialNumber">
</div>
<!-- <div class="xl:col-span-6 col-span-12">
<label for="deal-name" class="form-label">จำนวน</label>
<input type="number" class="form-control" id="deal-name" placeholder="จำนวน"
......@@ -218,13 +227,20 @@
<div class="grid grid-cols-12 gap-4">
<div class="xl:col-span-12 col-span-12">
<img [src]="selectModel.getPicture()" class="!rounded-t-md" alt="..."
style="width: 100%;height: auto;object-fit: cover;">
style="width: 100%;height: auto;object-fit: cover;">
</div>
<div class="xl:col-span-12 col-span-12">
<label for="deal-name" class="form-label">ชื่ออุปกรณ์</label>
<input readonly type="text" class="form-control" id="deal-name" placeholder="ชื่ออุปกรณ์"
[(ngModel)]="selectModel.equipmentName">
</div>
<div class="xl:col-span-12 col-span-12">
<label for="deal-name" class="form-label">S/N</label>
<input readonly type="text" class="form-control" id="deal-name" placeholder="S/N"
[(ngModel)]="selectModel.serialNumber">
</div>
<div class="xl:col-span-12 col-span-12">
<label for="deal-name" class="form-label">จำนวน</label>
<input type="number" class="form-control" id="deal-name" placeholder="จำนวน"
......@@ -233,8 +249,8 @@
<div class="xl:col-span-12 col-span-12">
<div class="form-check form-check-lg flex items-center">
<label for="product-availability" class="form-label">ประเภท</label>
<select class="form-control" data-trigger name="product-availability" id="product-availability" [(ngModel)]="selectStock.action"
placeholder="Select">
<select class="form-control" data-trigger name="product-availability" id="product-availability"
[(ngModel)]="selectStock.action" placeholder="Select">
<option value="INBOUND" selected>In Stock</option>
<option value="OUTBOUND">Out Of Stock</option>
<!-- <option value="OUTBOUND">Out Of Stock</option> -->
......
......@@ -58,7 +58,7 @@
</th>
<th scope="col" class="text-start">โครงการ</th>
<!-- <th scope="col" class="text-start">รหัสย่อโครงการ</th> -->
<th scope="col" class="text-start">ข้อมูลโครงการ</th>
<th scope="col" class="text-start">รายละเอียดโครงการ</th>
<!-- <th scope="col" class="text-start">{{"Status" | translate}}</th>
<th scope="col" class="text-start">{{"Update Date" | translate}}</th> -->
<th scope="col" class="text-start"></th>
......@@ -176,8 +176,7 @@
<div class="hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out">
<div class="ti-modal-content">
<div class="ti-modal-header">
<h6 class="modal-title text-[1rem] font-semibold text-defaulttextcolor" id="mail-ComposeLabel">{{ 'Create' |
translate }} {{ 'Company' | translate }}
<h6 class="modal-title text-[1rem] font-semibold text-defaulttextcolor" id="mail-ComposeLabel">{{ 'รายละเอียดโครงการ' }}
</h6>
<button type="button" class="hs-dropdown-toggle !text-[1rem] !font-semibold !text-defaulttextcolor"
data-hs-overlay="#modal-detail" #closeModal>
......@@ -210,22 +209,35 @@
</div>
</div>
<!-- <div class="xl:col-span-12 col-span-12">
<div class="xl:col-span-12 col-span-12">
<label for="deal-title" class="form-label">{{'รหัสโครงการ' | translate}}</label>
<input type="text" class="form-control" id="deal-title" placeholder=""
[(ngModel)]="selectModel.companyCode">
<div class="text-danger" *ngIf="!selectModel.companyCode">
[(ngModel)]="selectModel.project_code">
<div class="text-danger" *ngIf="!selectModel.project_code">
{{'Please fill in information' | translate}}
</div>
</div> -->
</div>
<div class="xl:col-span-12 col-span-12">
<label for="deal-title" class="form-label">{{'ผู้รับผิดชอบ' | translate}}</label>
<input type="text" class="form-control" id="deal-title" placeholder=""
[(ngModel)]="selectModel.responsible">
</div>
<div class="xl:col-span-12 col-span-12">
<label for="deal-title" class="form-label">{{'ข้อมูลโครงการ' | translate}}</label>
<label for="deal-title" class="form-label">{{'การติดต่อ' | translate}}</label>
<input type="text" class="form-control" id="deal-title" placeholder=""
[(ngModel)]="selectModel.contact">
</div>
<div class="xl:col-span-12 col-span-12">
<label for="deal-title" class="form-label">{{'รายละเอียดโครงการ' | translate}}</label>
<textarea class="form-control" id="job-description" [(ngModel)]="selectModel.project_desc" rows="4"></textarea>
<!-- <input type="text" class="form-control" id="deal-title" placeholder=""
[(ngModel)]="selectModel.project_desc">
<div class="text-danger" *ngIf="!selectModel.project_desc">
{{'Please fill in information' | translate}}
</div>
</div> -->
</div>
<!-- <div class="xl:col-span-12 col-span-12">
......
......@@ -6,6 +6,7 @@ export class EquipmentModel extends BaseModel {
equipmentId: string;
picture: string;
equipmentName: string;
serialNumber: string;
description?: string;
quantity: number;
is_returnable: boolean;
......@@ -17,6 +18,7 @@ export class EquipmentModel extends BaseModel {
this.picture = data?.picture ?? '';
this.equipmentId = data?.equipmentId!
this.equipmentName = data?.equipmentName ?? '';
this.serialNumber = data?.serialNumber ?? '';
this.description = data?.description ?? '';
this.quantity = data?.quantity ?? 0;
this.is_returnable = data?.is_returnable ?? true;
......
......@@ -5,6 +5,9 @@ export class ProjectModel {
picture: string;
project_name: string;
project_desc?: string;
project_code?: string;
responsible?: string;
contact?: string;
start_date: string;
end_date: string;
// created_at: string;
......@@ -14,7 +17,10 @@ export class ProjectModel {
this.picture = data?.picture ?? '';
this.projectId = data?.projectId
this.project_name = data?.project_name ?? '';
this.project_code = data?.project_code ?? '';
this.responsible = data?.responsible ?? '';
this.project_desc = data?.project_desc ?? '';
this.contact = data?.contact ?? '';
this.start_date = data?.start_date!
this.end_date = data?.end_date!
// this.created_at = data?.created_at!
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment