package models

const (
    StatusWarehouse = "Склад"
    StatusSawing = "Пила"
    StatusEdging = "Кромка"
    StatusEdgingHand = "Кромка ручная"
    StatusCNCDelta = "ЧПУ Дельта"
    StatusCNCTrepan = "ЧПУ Трепан"
    StatusHandDrilling = "Присадка на ручном станке"
    StatusSawHand = "Циркулярная пила"
    StatusAssembly = "Сборка"
    StatusAbrasive = "Шлифовка"
    StatusDrying = "Сушка после малярки"
    StatusPainting = "Малярная камера"
    StatusGlass = "Стекольный цех"
    StatusMetalSelf = "Сварочный цех"
    StatusPaintingOutsource = "Порошковая покраска"
    StatusAdv = "Рекламный участок"
    StatusLight = "Светодиодный участок"
    StatusSemiFinished = "Упаковка полуфабриката"
    StatusFinished = "Упаковка изделия"
    StatusShipment = "Отгружено на монтаж"
    StatusInstallation = "Монтаж оборудования"
    StatusRejected = "Отбраковано/сломано"
)

func IsValidStatus(s string) bool {
    switch s {
    case StatusWarehouse, StatusSawing, StatusEdging, StatusEdgingHand,
        StatusCNCDelta, StatusCNCTrepan, StatusHandDrilling, StatusSawHand,
        StatusAssembly, StatusAbrasive, StatusDrying, StatusPainting,
        StatusGlass, StatusMetalSelf, StatusPaintingOutsource, StatusAdv,
        StatusLight, StatusSemiFinished, StatusFinished, StatusShipment,
        StatusInstallation, StatusRejected:
        return true
    }
    return false
}

type Part struct {
	ID           string  `gorm:"primaryKey" json:"id" binding:"required"` // № или Обозначение
	OrderNo      string  `json:"order_no" binding:"required"`             // Заказ изделия
	Name         string  `json:"name" binding:"required"`                 // Наименование детали
	Material     string  `json:"material" binding:"required"`             // Наименование материала
	Thickness    float64 `json:"thickness" binding:"required"`            // Толщина
	Quantity     int     `json:"quantity" binding:"required"`             // Количество
	
	// Размеры (используем Готовую деталь как основной стандарт)
	Length       float64 `json:"length" binding:"required"`               // Готовая деталь [L]
	Width        float64 `json:"width" binding:"required"`                // Готовая деталь [W]
	
	// Кромка
	EdgeL1       string  `json:"edge_l1"`              // Обозначение кромки [L1]
	EdgeL2       string  `json:"edge_l2"`              // Обозначение кромки [L2]
	EdgeW1       string  `json:"edge_w1"`              // Обозначение кромки [W1]
	EdgeW2       string  `json:"edge_w2"`              // Обозначение кромки [W2]
	
	// Доп. инфо
	Groove       string  `json:"groove"`               // Паз
	Note         string  `json:"note"`                 // Примечание
	ProductName  string  `json:"product_name" binding:"required"`         // Наимен. изделия
	
	Status       string  `json:"status" gorm:"default:'Ожидает распила'"`
}

