feat(warteliste): Nachfrage/Warteliste für Interessenten
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
43
GerbilManagerWebAPI/Models/WaitingListEntry.cs
Normal file
43
GerbilManagerWebAPI/Models/WaitingListEntry.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace GerbilManagerWebAPI.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// WAITLIST (RennmausPro nachfrage_tb): a prospective buyer's standing request for a
|
||||
/// future animal with wish criteria (colour, gender). Decoupled from the rest of the
|
||||
/// model on purpose — ContactId is a plain nullable Guid column (NOT an enforced
|
||||
/// foreign key), so the import re-ingest wipe (IngestResolvedService) can delete and
|
||||
/// recreate contacts without deleting or breaking waiting-list rows. The captured
|
||||
/// ContactName keeps the entry human-readable even when no contact exists yet (or the
|
||||
/// referenced contact is gone). Same survives-the-wipe pattern as Feedback.
|
||||
/// </summary>
|
||||
public class WaitingListEntry
|
||||
{
|
||||
[Key]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>Loose reference (no FK) to the interested contact, if one exists.</summary>
|
||||
public Guid? ContactId { get; set; }
|
||||
|
||||
/// <summary>Free-text name of the interested party (used when no contact is linked).</summary>
|
||||
public string? ContactName { get; set; }
|
||||
|
||||
/// <summary>Wished-for colour variety (free text / catalog name), if any.</summary>
|
||||
public string? WishColor { get; set; }
|
||||
|
||||
/// <summary>Wished-for gender: "male" | "female" | null (no preference).</summary>
|
||||
public string? WishGender { get; set; }
|
||||
|
||||
/// <summary>When the request was made.</summary>
|
||||
public DateTime? RequestedAt { get; set; }
|
||||
|
||||
/// <summary>Workflow status: "offen" | "erfuellt" | "storniert".</summary>
|
||||
public required string Status { get; set; }
|
||||
|
||||
/// <summary>Optional free-text note.</summary>
|
||||
public string? Note { get; set; }
|
||||
|
||||
/// <summary>Server-side creation time.</summary>
|
||||
public DateTimeOffset CreatedAt { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user