using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Reflection.Emit;

namespace PricingCatalog.Models;

public class TDSPriceAvailability
{
    public int Id { get; set; }
    public required string PartnerCode { get; set; }
    public string? RecordId { get; set; }
    [Display(Name = "Mfg PartNo")]
    [MaxLength(60)]
    public required string MfgPartNo { get; set; }
    [Display(Name = "Vendor PartNo")]
    [MaxLength(80)]
    public required string VendorPartNo { get; set; }
    public string? VendorSKUNo { get; set; }
    public string? StatusCode { get; set; }
    [Display(Name = "Product Description")]
    [MaxLength(80)]
    public string? PartDescription { get; set; }
    [Display(Name = "Mfg Name")]
    [MaxLength(30)]
    public string? MfgName { get; set; }
    [Display(Name = "Total Quantity")]
    public int? TotalQtyOnHand { get; set; }
    [Column(TypeName = "decimal(12, 2)")]
    [Precision(12, 2)]
    [Display(Name = "Contract Price")]
    public decimal? ContractPrice { get; set; }
    [Column(TypeName = "decimal(12, 2)")]
    [Precision(12, 2)]
    public decimal? MSRP { get; set; }
    public int? WQtyOnHand_16DFL { get; set; }
    public int? WQtyOnHand_3DFR_26DHA { get; set; }
    public string? ReturnableFlag { get; set; }
    public int? WQtyOnHand_Future1 { get; set; }
    public string? ParcelShippableFlag { get; set; }
    public int? WQtyOnHand_31DCG { get; set; }
    [Column(TypeName = "decimal(12, 2)")]
    [Precision(12, 2)]
    [Display(Name = "Unit Cost")]
    public decimal? UnitCost { get; set; }
    public int? WQtyOnHand_6DCH_29DGU { get; set; }
    public string? MediaTypeCode { get; set; }
    public int? WQtyOnHand_7DTN { get; set; }
    [Display(Name = "Category Code")]
    public string? VendorCategoryCode { get; set; }
    public int? WQtyOnHand_Future2 { get; set; }
    [Column(TypeName = "decimal(7, 2)")]
    [Precision(7, 2)]
    public decimal? ShipWeight { get; set; }
    public string? SerializedFlag { get; set; }
    public int WQtyOnHand_50DCO { get; set; }
    [Column(TypeName = "decimal(12, 2)")]
    [Precision(12, 2)]
    public decimal? MAPPrice { get; set; }
    public string? COOListCode { get; set; }
    [Column(TypeName = "decimal(12, 2)")]
    [Precision(12, 2)]
    public decimal? TDS_HCPrice { get; set; }
    public string? UPCCode { get; set; }
    [Display(Name = "UNSPSC Code")]
    public string? UNSPSCCode { get; set; }
    [Display(Name = "SKU Created Date")]
    [DataType(DataType.Date)]
    public DateTime? SKUCreatedDate { get; set; }
    public string? SKUAttribute { get; set; }
    [Display(Name = "ETA Date")]
    [DataType(DataType.Date)]
    public DateTime? ETADate {  get; set; }
    public string? ABCCode { get; set; }
    public string? KitStandAloneFlag { get; set; }
    [Column(TypeName = "decimal(12, 2)")]
    [Precision(12, 2)]
    public decimal? StateGovPrice { get; set; }
    [Column(TypeName = "decimal(12, 2)")]
    [Precision(12, 2)]
    public decimal? FederalGovPrice { get; set; }
    [Column(TypeName = "decimal(12, 2)")]
    [Precision(12, 2)]
    public decimal? EduPrice { get; set; }
    public string? TAAFlag { get; set; }
    [Column(TypeName = "decimal(12, 2)")]
    [Precision(12, 2)]
    public decimal? GSAPricing {  get; set; }
    [Display(Name = "Promo Flag")]
    public string? PromoFlag { get; set; }
    [Display(Name = "Promo Comment")]
    public string? PromoComment { get; set; }
    [Display(Name = "Promo Expiration Date")]
    [DataType(DataType.Date)]
    public DateTime? PromoExpDate { get; set; }
    public string? LongDescription1 { get; set; }
    public string? LongDescription2 { get; set; }
    public string? LongDescription3 { get; set; }
    public string? Length {  get; set; }
    public string? Width { get; set; }
    public string? Height { get; set; }
    public int? WQtyOnHand_502DGA { get; set; }
    [Column(TypeName = "decimal(12, 2)")]
    [Precision(12, 2)]
    public decimal? GSANTEPrice { get; set; }
    public string? PlatformType { get; set; }
    public string? ProductDescription { get; set; }
    [Display(Name = "Product Street Date")]
    [DataType(DataType.Date)]
    public DateTime? ProductStreetDate { get; set; }
    public int? WQtyOnHand_80DMS { get; set; }
    public int? WQtyOnHand_81DRN { get; set; }
    public int? WQtyOnHand_504DIN { get; set; }
    public int? WQtyOnHand_505DFW { get; set; }
    public string? ReplacementSKU { get; set; }
    public int? MinimumQtyOrder { get; set; }
    public string? PurchasingRequirements { get; set; }
    public string? GovClass { get; set; }
    public int? WQtyOnHand_506DFO { get; set; }
    public int? MfgDropShipWHouseQty { get; set; }
}
