using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; using static EgwCoreLib.Lux.Core.Enums; namespace EgwCoreLib.Lux.Data.DbModel { // // This is here so CodeMaid doesn't reorganize this document // [Table("Offer")] public class OfferModel { /// /// ID del record /// [Key] public int OfferID { get; set; } /// /// Anno rif offerta /// public int RefYear { get; set; } = DateTime.Today.Year; /// /// Numero prog offerta nell'anno (da calcolare) /// public int RefNum { get; set; } = 0; /// /// Indice revisione /// public int RefRev { get; set; } = 1; /// /// Codice calcolato offerta ANNO.NUMERO.REV /// [NotMapped] public string OfferCode { get => $"{RefYear:00}.{RefNum:00000}.{RefRev:00}"; } /// /// Descrizione generale /// public string Description { get; set; } = ""; /// /// ID Cliente /// public int CustomerID { get; set; } /// /// ID Dealer /// public int DealerID { get; set; } /// /// Validità offerta /// public DateTime ValidUntil { get; set; } = DateTime.Now.AddMonths(1); /// /// DataOra inserimento /// public DateTime Inserted { get; set; } = DateTime.Now; /// /// DataOra ultima modifica /// public DateTime Modified { get; set; } = DateTime.Now; /// /// Enum stato offerta /// public OfferStates OffertState { get; set; } = OfferStates.Open; /// /// Numero Item compresi /// [NotMapped] public int NumItems { get => OfferRowNav?.Count ?? 0; } /// /// Imposto totale offerta /// [NotMapped] public double TotalCost { get => OfferRowNav?.Sum(x => x.Cost) ?? 0; } #if false /// /// ID Ordine (nullo se non c'è ordine) /// public int? OrderID { get; set; } = null; /// /// Navigazione Ordine /// [ForeignKey("OrderID")] public virtual OrderModel? OrderNav { get; set; } = null; #endif /// /// Navigazione Customer /// [ForeignKey("CustomerID")] public virtual CustomerModel CustomerNav { get; set; } = null!; /// /// Navigazione Dealer /// [ForeignKey("DealerID")] public virtual DealerModel DealerNav { get; set; } = null!; /// /// Navigazione alle righe offerta /// public virtual ICollection OfferRowNav { get; set; } = new List(); } }