55 lines
1.7 KiB
C#
55 lines
1.7 KiB
C#
using NodaTime;
|
|
|
|
namespace DysonNetwork.Shared.Models;
|
|
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
|
|
public enum LotteryDrawStatus
|
|
{
|
|
Pending = 0,
|
|
Drawn = 1
|
|
}
|
|
|
|
public class SnLotteryRecord : ModelBase
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
|
|
public Instant DrawDate { get; set; } // Date of the draw
|
|
|
|
[Column(TypeName = "jsonb")]
|
|
public List<int> WinningRegionOneNumbers { get; set; } = new(); // 5 winning numbers
|
|
|
|
[Range(0, 99)]
|
|
public int WinningRegionTwoNumber { get; set; } // 1 winning number
|
|
|
|
public int TotalTickets { get; set; } // Total tickets processed for this draw
|
|
public int TotalPrizesAwarded { get; set; } // Total prizes awarded
|
|
public long TotalPrizeAmount { get; set; } // Total ISP prize amount awarded
|
|
}
|
|
|
|
public class SnLottery : ModelBase
|
|
{
|
|
public Guid Id { get; init; } = Guid.NewGuid();
|
|
|
|
public SnAccount Account { get; init; } = null!;
|
|
public Guid AccountId { get; init; }
|
|
|
|
[Column(TypeName = "jsonb")]
|
|
public List<int> RegionOneNumbers { get; set; } = []; // 5 numbers, 0-99, unique
|
|
|
|
[Range(0, 99)]
|
|
public int RegionTwoNumber { get; init; } // 1 number, 0-99, can repeat
|
|
|
|
public int Multiplier { get; init; } = 1; // Default 1x
|
|
|
|
public LotteryDrawStatus DrawStatus { get; set; } = LotteryDrawStatus.Pending; // Status to track draw processing
|
|
|
|
public Instant? DrawDate { get; set; } // Date when this ticket was drawn
|
|
|
|
[Column(TypeName = "jsonb")]
|
|
public List<int>? MatchedRegionOneNumbers { get; set; } // The actual numbers that matched in region one
|
|
|
|
public int? MatchedRegionTwoNumber { get; set; } // The matched number if special number matched (null otherwise)
|
|
}
|