Commit eceb34fc by Ooh-Ao

equirment

parent cd8b71cc
......@@ -22,6 +22,7 @@ async def create_equipment(equipment_data: EquipmentCreate, db: AsyncSession):
new_equipment = Equipment(
equipmentName=equipment_data.equipmentName,
description=equipment_data.description,
quantity=equipment_data.quantity,
is_returnable=equipment_data.is_returnable
)
db.add(new_equipment)
......
# myproject/models/equipment.py
import uuid
from sqlalchemy import Column, String, Integer ,Boolean,ForeignKey
from sqlalchemy import Column, String, Integer ,Boolean,ForeignKey,DateTime
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.sql import func
from datetime import datetime
......@@ -21,9 +21,10 @@ class Equipment(Base):
quantity = Column(Integer, nullable=False)
is_returnable = Column(Boolean, nullable=False, default=True)
categoryId = Column(UUID(as_uuid=True), ForeignKey("equipment_category.categoryId"), nullable=True)
picture = Column(String)
# ถ้าต้องการวันเวลาสร้าง/แก้ไข
# createdAt = Column(DateTime, nullable=False, server_default=func.now())
# updatedAt = Column(DateTime, nullable=False, server_default=func.now(), onupdate=func.now())
createdAt = Column(DateTime, nullable=False, default=datetime.utcnow)
updatedAt = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
# Relationship เชื่อมไปยัง ProjectEquipment
project_equipment = relationship(
......
......@@ -2,11 +2,12 @@
from pydantic import BaseModel
from typing import Optional
from uuid import UUID
from datetime import datetime
class EquipmentBase(BaseModel):
equipmentName: str
description: Optional[str] = None
quantity: int
quantity: int = 0
is_returnable: bool = True
class EquipmentCreate(EquipmentBase):
......@@ -17,6 +18,8 @@ class EquipmentUpdate(EquipmentBase):
class EquipmentResponse(EquipmentBase):
equipmentId: UUID
createdAt: datetime
updatedAt: datetime
class Config:
orm_mode = True
\ No newline at end of file
from_attributes = True
\ No newline at end of file
......@@ -15,7 +15,7 @@
</a>
<div>
<input [(ngModel)]='searchTerm' class="form-control form-control" type="text"
placeholder="{{ 'ค้นหาข้อมูลพนักงาน' | translate}}" aria-label=".form-control-sm example">
placeholder="{{ 'ค้นหาอุปกรณ์' | translate}}" aria-label=".form-control-sm example">
</div>
<!-- <a href="javascript:void(0);" class="ti-btn ti-btn-primary-full !py-1 !px-2" aria-expanded="false">
เรียงตาม<i class="ri-arrow-down-s-line align-middle ms-1 inline-block"></i>
......@@ -67,7 +67,7 @@
</div> -->
<div class="xxl:col-span-2 xl:col-span-3 lg:col-span-4 md:col-span-4 sm:col-span-6 col-span-12">
<div class="box custom-box">
<img src="./assets/images/nft-images/18.png" class="!rounded-t-md" alt="...">
<img [src]="item.getPicture()" class="!rounded-t-md" alt="...">
<div class="flex items-center justify-between nft-like-section w-full px-4">
<!-- <div class="flex-grow">
<button type="button" aria-label="button"
......@@ -164,14 +164,29 @@
</div>
</div>
<div class="xl:col-span-6 col-span-12">
<label for="deal-name" class="form-label">ชื่อ</label>
<input type="text" class="form-control" id="deal-name" placeholder="ชื่อ"
<label for="deal-name" class="form-label">ชื่ออุปกรณ์</label>
<input type="text" class="form-control" id="deal-name" placeholder="ชื่ออุปกรณ์"
[(ngModel)]="selectModel.equipmentName">
</div>
<div class="xl:col-span-6 col-span-12">
<label for="deal-name" class="form-label">จำนวน</label>
<input type="text" class="form-control" id="deal-name" placeholder="จำนวน"
[(ngModel)]="selectModel.quantity">
</div>
<div class="xl:col-span-12 col-span-12">
<label for="deal-lead-score" class="form-label">รายละเอียด</label>
<input type="text" class="form-control" id="deal-lead-score" placeholder="นามสกุล"
[(ngModel)]="selectModel.description">
<!-- <input type="text" class="form-control" id="deal-lead-score" placeholder="รายละเอียด"
[(ngModel)]="selectModel.description"> -->
<textarea class="form-control" id="job-description" [(ngModel)]="selectModel.description"
rows="4"></textarea>
</div>
<div class="xl:col-span-12 col-span-12">
<div class="form-check form-check-lg flex items-center">
<input class="form-check-input" type="checkbox" value="" id="checkebox-lg" [(checked)]="selectModel.is_returnable">
<label class="form-check-label" for="checkebox-lg">
ตรวจสอบการคืน
</label>
</div>
</div>
......
......@@ -3,30 +3,28 @@ import { BaseModel } from "./base.model";
import { environment } from "../../../environments/environment";
export class EquipmentModel extends BaseModel {
equipment_id: string;
equipmentId: string;
picture: string;
equipmentName: string;
description?: string;
quantity: number;
is_returnable: boolean;
location?: string;
created_at: string;
updated_at: string;
createdAt: string;
updatedAt: string;
constructor(data?: Partial<EquipmentModel>, translateService?: TranslateService) {
super(data, translateService);
this.picture = data?.picture ?? '';
this.equipment_id = data?.equipment_id ?? '';
this.equipmentId = data?.equipmentId!
this.equipmentName = data?.equipmentName ?? '';
this.description = data?.description ?? '';
this.quantity = data?.quantity ?? 0;
this.is_returnable = data?.is_returnable ?? true;
this.location = data?.location ?? '';
this.created_at = data?.created_at ?? new Date().toISOString();
this.updated_at = data?.updated_at ?? new Date().toISOString();
this.createdAt = data?.createdAt ?? new Date().toISOString();
this.updatedAt = data?.updatedAt ?? new Date().toISOString();
}
getPicture(): string {
return this.picture ? environment.baseUrl + '/images/' + this.picture : './assets/images/faces/9.jpg'
return this.picture ? environment.baseUrl + '/images/' + this.picture : './assets/images/faces/111.jpg'
}
}
......@@ -39,14 +39,14 @@ export class EquipmentService {
return this.http.put<{
"message": string,
"user": EquipmentModel
}>(this.apiBaseUrl + "/" + body.equipment_id, new EquipmentModel(body));
}>(this.apiBaseUrl + "/" + body.equipmentId, new EquipmentModel(body));
}
delete(body: EquipmentModel) {
return this.http.delete<{
"message": string,
"user": EquipmentModel
}>(this.apiBaseUrl + "/" + body.equipment_id);
}>(this.apiBaseUrl + "/" + body.equipmentId);
}
......
<!doctype html>
<html lang="en" dir="ltr" data-nav-layout="vertical" class="" data-header-styles="color" data-menu-styles="color"
data-vertical-style="overlay" data-page-style="modern">
data-vertical-style="overlay" data-page-style="regular">
<head>
<meta charset="utf-8">
......
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