Initial commit: Lagerbestand Blazor Projekt
This commit is contained in:
commit
cba9414e92
105 files changed
+36431
No files matched your search
@@ -0,0 +1,92 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Lagerbestand.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Represents a vehicle owned by a customer.
|
||||
/// A customer can have multiple vehicles, each with their own tire stacks.
|
||||
/// </summary>
|
||||
public class Vehicle
|
||||
{
|
||||
[Key]
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
|
||||
/// <summary>
|
||||
/// The customer who owns this vehicle
|
||||
/// </summary>
|
||||
public Guid CustomerId { get; set; }
|
||||
|
||||
[ForeignKey(nameof(CustomerId))]
|
||||
public Customer? Customer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Vehicle manufacturer (e.g., "BMW", "Mercedes", "VW")
|
||||
/// </summary>
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string Make { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Vehicle model (e.g., "3er", "C-Klasse", "Golf")
|
||||
/// </summary>
|
||||
[MaxLength(100)]
|
||||
public string? Model { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Tire size for this vehicle (e.g., "225/45 R17")
|
||||
/// </summary>
|
||||
[Required]
|
||||
[MaxLength(50)]
|
||||
public string TireSize { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Additional notes about the vehicle
|
||||
/// </summary>
|
||||
[MaxLength(500)]
|
||||
public string? Notes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether this is the customer's primary/default vehicle
|
||||
/// </summary>
|
||||
public bool IsPrimary { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether the vehicle is active (not deleted)
|
||||
/// </summary>
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
|
||||
public DateTime? UpdatedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Navigation property for tire stacks stored for this vehicle
|
||||
/// </summary>
|
||||
public ICollection<TireStack> TireStacks { get; set; } = new List<TireStack>();
|
||||
|
||||
/// <summary>
|
||||
/// Display name combining make, model, and tire size
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public string DisplayName
|
||||
{
|
||||
get
|
||||
{
|
||||
var name = Make;
|
||||
if (!string.IsNullOrEmpty(Model))
|
||||
name += $" {Model}";
|
||||
if (!string.IsNullOrEmpty(TireSize))
|
||||
name += $" ({TireSize})";
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Short display showing just make (for compact views)
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public string ShortName => !string.IsNullOrEmpty(Model)
|
||||
? $"{Make} {Model}"
|
||||
: Make;
|
||||
}
|
||||
Reference in new issue
Block a user