using System.ComponentModel.DataAnnotations; namespace Extrudex.API.DTOs.Materials; /// /// Response DTO for MaterialBase entity. /// public class MaterialBaseResponse { /// Unique identifier for the material base. public Guid Id { get; set; } /// Human-readable name (e.g., "PLA", "PETG", "ABS"). public string Name { get; set; } = string.Empty; /// Density in g/cm³ used for grams-derived calculations. public decimal DensityGperCm3 { get; set; } /// Timestamp when this record was created (UTC). public DateTime CreatedAt { get; set; } /// Timestamp when this record was last updated (UTC). public DateTime UpdatedAt { get; set; } } /// /// Request DTO for creating a new MaterialBase. /// public class CreateMaterialBaseRequest { /// Human-readable name (e.g., "PLA", "PETG", "ABS"). Required, max 50 characters. [Required(ErrorMessage = "Name is required.")] [StringLength(50, MinimumLength = 1, ErrorMessage = "Name must be between 1 and 50 characters.")] public string Name { get; set; } = string.Empty; /// Density in g/cm³. Must be greater than zero. [Required(ErrorMessage = "Density is required.")] [Range(0.001, 100.0, ErrorMessage = "Density must be between 0.001 and 100.0 g/cm³.")] public decimal DensityGperCm3 { get; set; } } /// /// Request DTO for updating an existing MaterialBase. /// public class UpdateMaterialBaseRequest { /// Human-readable name (e.g., "PLA", "PETG", "ABS"). Required, max 50 characters. [Required(ErrorMessage = "Name is required.")] [StringLength(50, MinimumLength = 1, ErrorMessage = "Name must be between 1 and 50 characters.")] public string Name { get; set; } = string.Empty; /// Density in g/cm³. Must be greater than zero. [Required(ErrorMessage = "Density is required.")] [Range(0.001, 100.0, ErrorMessage = "Density must be between 0.001 and 100.0 g/cm³.")] public decimal DensityGperCm3 { get; set; } }