initial commit

This commit is contained in:
cubecraft-agents[bot]
2026-04-25 18:51:05 +00:00
commit 230c3b295d
78 changed files with 8093 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
using System.ComponentModel.DataAnnotations;
namespace Extrudex.API.DTOs.Materials;
/// <summary>
/// Response DTO for MaterialBase entity.
/// </summary>
public class MaterialBaseResponse
{
/// <summary>Unique identifier for the material base.</summary>
public Guid Id { get; set; }
/// <summary>Human-readable name (e.g., "PLA", "PETG", "ABS").</summary>
public string Name { get; set; } = string.Empty;
/// <summary>Density in g/cm³ used for grams-derived calculations.</summary>
public decimal DensityGperCm3 { get; set; }
/// <summary>Timestamp when this record was created (UTC).</summary>
public DateTime CreatedAt { get; set; }
/// <summary>Timestamp when this record was last updated (UTC).</summary>
public DateTime UpdatedAt { get; set; }
}
/// <summary>
/// Request DTO for creating a new MaterialBase.
/// </summary>
public class CreateMaterialBaseRequest
{
/// <summary>Human-readable name (e.g., "PLA", "PETG", "ABS"). Required, max 50 characters.</summary>
[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;
/// <summary>Density in g/cm³. Must be greater than zero.</summary>
[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; }
}
/// <summary>
/// Request DTO for updating an existing MaterialBase.
/// </summary>
public class UpdateMaterialBaseRequest
{
/// <summary>Human-readable name (e.g., "PLA", "PETG", "ABS"). Required, max 50 characters.</summary>
[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;
/// <summary>Density in g/cm³. Must be greater than zero.</summary>
[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; }
}

View File

@@ -0,0 +1,57 @@
using System.ComponentModel.DataAnnotations;
namespace Extrudex.API.DTOs.Materials;
/// <summary>
/// Response DTO for MaterialFinish entity.
/// </summary>
public class MaterialFinishResponse
{
/// <summary>Unique identifier for the finish.</summary>
public Guid Id { get; set; }
/// <summary>Human-readable name (e.g., "Basic", "Matte", "Silk").</summary>
public string Name { get; set; } = string.Empty;
/// <summary>Foreign key to the parent MaterialBase.</summary>
public Guid MaterialBaseId { get; set; }
/// <summary>Name of the parent material base (for display).</summary>
public string MaterialBaseName { get; set; } = string.Empty;
/// <summary>Timestamp when this record was created (UTC).</summary>
public DateTime CreatedAt { get; set; }
/// <summary>Timestamp when this record was last updated (UTC).</summary>
public DateTime UpdatedAt { get; set; }
}
/// <summary>
/// Request DTO for creating a new MaterialFinish.
/// </summary>
public class CreateMaterialFinishRequest
{
/// <summary>Human-readable name (e.g., "Basic", "Matte", "Silk"). Required, max 50 characters.</summary>
[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;
/// <summary>Foreign key to the parent MaterialBase. Required.</summary>
[Required(ErrorMessage = "MaterialBaseId is required.")]
public Guid MaterialBaseId { get; set; }
}
/// <summary>
/// Request DTO for updating an existing MaterialFinish.
/// </summary>
public class UpdateMaterialFinishRequest
{
/// <summary>Human-readable name (e.g., "Basic", "Matte", "Silk"). Required, max 50 characters.</summary>
[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;
/// <summary>Foreign key to the parent MaterialBase. Required.</summary>
[Required(ErrorMessage = "MaterialBaseId is required.")]
public Guid MaterialBaseId { get; set; }
}

View File

@@ -0,0 +1,57 @@
using System.ComponentModel.DataAnnotations;
namespace Extrudex.API.DTOs.Materials;
/// <summary>
/// Response DTO for MaterialModifier entity.
/// </summary>
public class MaterialModifierResponse
{
/// <summary>Unique identifier for the modifier.</summary>
public Guid Id { get; set; }
/// <summary>Human-readable name (e.g., "Carbon Fiber", "Wood Fill").</summary>
public string Name { get; set; } = string.Empty;
/// <summary>Foreign key to the parent MaterialBase.</summary>
public Guid MaterialBaseId { get; set; }
/// <summary>Name of the parent material base (for display).</summary>
public string MaterialBaseName { get; set; } = string.Empty;
/// <summary>Timestamp when this record was created (UTC).</summary>
public DateTime CreatedAt { get; set; }
/// <summary>Timestamp when this record was last updated (UTC).</summary>
public DateTime UpdatedAt { get; set; }
}
/// <summary>
/// Request DTO for creating a new MaterialModifier.
/// </summary>
public class CreateMaterialModifierRequest
{
/// <summary>Human-readable name (e.g., "Carbon Fiber", "Wood Fill"). Required, max 50 characters.</summary>
[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;
/// <summary>Foreign key to the parent MaterialBase. Required.</summary>
[Required(ErrorMessage = "MaterialBaseId is required.")]
public Guid MaterialBaseId { get; set; }
}
/// <summary>
/// Request DTO for updating an existing MaterialModifier.
/// </summary>
public class UpdateMaterialModifierRequest
{
/// <summary>Human-readable name (e.g., "Carbon Fiber", "Wood Fill"). Required, max 50 characters.</summary>
[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;
/// <summary>Foreign key to the parent MaterialBase. Required.</summary>
[Required(ErrorMessage = "MaterialBaseId is required.")]
public Guid MaterialBaseId { get; set; }
}