#pragma warning disable CS8019 using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using Fab2ApprovalSystem.ViewModels; #if !NET8 using System.Web.Mvc; #endif using System.Text.RegularExpressions; #pragma warning restore CS8019 namespace Fab2ApprovalSystem.Models; public class CredentialsStorage { public string UserName { get; set; } public string Password { get; set; } } public class Lot { public int LotID { get; set; } [Display(Name = "Wafer Lot#")] public string LotNumber { get; set; } public string ParentLotNumber { set; get; } public int MRBNumber { get; set; } public string MRBDispoType { get; set; } public bool GoodToSubmit { get; set; } public string SubmitErrorMessage { get; set; } // Lot Disposition Issue Number public int IssueID { get; set; } public string IssueIDWithoutMRB { get; set; } public string DieLotNumber { get; set; } public string Description { get; set; } [Display(Name = "New PN#")] public string NewPartNo { get; set; } [Display(Name = "WIP PN#")] public string WipPartNo { get; set; } [Display(Name = "Die PN#")] public string DiePartNo { get; set; } [Display(Name = "Device Type")] public string ProductFamily { get; set; } public string Gen { get; set; } public string Channel { get; set; } public string Hexsize { get; set; } public double Voltage { get; set; } public int WaferCount { get; set; } public int ReleaseCount { get; set; } public int ScrapCount { get; set; } public int DieCount { get; set; } public string Location { get; set; } public double TotalCost { get; set; } public int LotStatusOptionID { get; set; } public string LotStatusOptionName { get; set; } public double WaferCost { get; set; } public double DieCost { get; set; } [UIHint("LotStatusOptionTemplate")] [Display(Name = "Lot Status")] public LotStatusOptionViewModel LotStatusOption { get; set; } public ScrapLot ScrapLotWafer { get; set; } [Display(Name = "Lot Dispos")] public string OtherLotDispos { get; set; } public char? DispoType { get; set; } [Display(Name = "Lot Dispos")] public string LotDispositionsLinkedToLot { get; set; } [Display(Name = "MRBs")] public string MRBsLinkedToLot { get; set; } public string Status { get; set; } public int OpenIssueWithExistingLots { get; set; } public string QualityCode { get; set; } [Display(Name = "Source Lot#")] public string SourceLot { get; set; } public string SourceAction { get; set; } public DateTime? SourceActionTime { get; set; } public DateTime? SPNTransmitTime { get; set; } public string SPNTransmitMsg { get; set; } [Display(Name = "MRBs")] public string OtherMRBs { get; set; } public Lot() { LotStatusOption = new LotStatusOptionViewModel(); ScrapLotWafer = new ScrapLot(); } public bool IsDirty { get; set; } } public class MRBHoldFlagReport { public string LotNo { get; set; } public string TransactionType { get; set; } public string PartNo { get; set; } public string CurrentLocation { get; set; } public string CurrentOperation { get; set; } public int StartQty { get; set; } public int CurrentQty { get; set; } public string LotStatus { get; set; } public string OperStatus { get; set; } public string Successful { get; set; } public string Comment { get; set; } public string PriorMRBHoldLocation { get; set; } public string PriorMRBHoldOperation { get; set; } public string PriorMRB_DispoType { get; set; } public string CurrentMRBHoldLocation { get; set; } public string CurrentMRBHoldOperation { get; set; } public string CurrentMRB_DispoType { get; set; } public string MRB_DispoType { get; set; } public DateTime TransactionDateTime { get; set; } public string MRBLocation { get; set; } public string MRBOperation { get; set; } public bool Reprocess { get; set; } public bool HasErrors { get; set; } } public class MRBLotsTobeSentToSPN { public string LotNumber { get; set; } public int MRBNumber { get; set; } public char? DispoType { get; set; } public char AddRemoveChangeMRBFlag { get; set; } public bool IsDirty { get; set; } public bool SentToSPN { get; set; } public DateTime MRBLotLastSentToSPNDatetime { get; set; } } #if !NET8 [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)] public class CustomDispoTypeValidationAttribute : ValidationAttribute, IClientValidatable { public override bool IsValid(object value) { char tem = (char)value; var productName = tem.ToString(); if (!string.IsNullOrEmpty(productName)) { return Regex.IsMatch(productName, "^[A,B,C,D]"); } return true; } public IEnumerable GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { yield return new ModelClientValidationRule { ErrorMessage = ErrorMessage, ValidationType = "dispotypevalidation" }; } } #endif public class Department { public int DepartmentID { get; set; } public string DepartmentName { get; set; } } public class AffectedModule { public int ModuleID { get; set; } public string ModuleName { get; set; } } public class WIPPart { public string WIPPartData { get; set; } public string PartNumber { get; set; } public string SiliconPartNumber { get; set; } public string ProcessFlow { get; set; } } public class ProductFamilies { public int ProductFamilyID { get; set; } public string ProductFamily { get; set; } } public class LotSplitAnalysisResult { public int ID { get; set; } public string ParentLotNo { get; set; } public string LotNo { get; set; } public DateTime ActionTime { get; set; } public string ActionType { get; set; } public bool? IsAffected { get; set; } }