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; }
}