Files
elwig/Elwig/Models/Entities/DeliverySchedule.cs
Lorenz Stechauner 5c08f61963
All checks were successful
Test / Run tests (push) Successful in 2m28s
MailWindow: Add feature to address members with ancmts on specific day
2024-09-08 15:55:10 +02:00

75 lines
2.6 KiB
C#

using Elwig.Helpers;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
namespace Elwig.Models.Entities {
[Table("delivery_schedule"), PrimaryKey("Year", "DsNr")]
public class DeliverySchedule {
[Column("year")]
public int Year { get; set; }
[Column("dsnr")]
public int DsNr { get; set; }
[Column("date")]
public required string DateString { get; set; }
[NotMapped]
public DateOnly Date {
get => DateOnly.ParseExact(DateString, "yyyy-MM-dd");
set => DateString = value.ToString("yyyy-MM-dd");
}
[Column("zwstid")]
public required string ZwstId { get; set; }
[Column("description")]
public required string Description { get; set; }
[NotMapped]
public string Identifier => $"{Date:dd.MM.} - {ZwstId} - {Description}";
[Column("max_weight")]
public int? MaxWeight { get; set; }
[NotMapped]
public int AnnouncedWeight => Announcements.Sum(a => a.Weight);
[NotMapped]
public double? Percent => (double)AnnouncedWeight / MaxWeight * 100;
[Column("ancmt_from")]
public long? AncmtFromUnix { get; set; }
[NotMapped]
public DateTime? AncmtFrom {
get => AncmtFromUnix != null ? DateTimeOffset.FromUnixTimeSeconds(AncmtFromUnix.Value).LocalDateTime : null;
set => AncmtFromUnix = value != null ? new DateTimeOffset(value.Value).ToUnixTimeSeconds() : null;
}
[Column("ancmt_to")]
public long? AncmtToUnix { get; set; }
[NotMapped]
public DateTime? AncmtTo {
get => AncmtToUnix != null ? DateTimeOffset.FromUnixTimeSeconds(AncmtToUnix.Value).LocalDateTime : null;
set => AncmtToUnix = value != null ? new DateTimeOffset(value.Value).ToUnixTimeSeconds() : null;
}
[ForeignKey("Year")]
public virtual Season Season { get; private set; } = null!;
[ForeignKey("ZwstId")]
public virtual Branch Branch { get; private set; } = null!;
[InverseProperty(nameof(DeliveryScheduleWineVar.Schedule))]
public virtual ICollection<DeliveryScheduleWineVar> Varieties { get; private set; } = null!;
[InverseProperty(nameof(DeliveryAncmt.Schedule))]
public virtual ICollection<DeliveryAncmt> Announcements { get; private set; } = null!;
public int SearchScore(IEnumerable<string> keywords) {
return Utils.GetSearchScore([Description], keywords);
}
}
}