using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Data.Entity.Core.Objects; using System.Linq; using System.Web; using System.Runtime.Serialization; using Resources; using Newtonsoft.Json; using Weee.Models.Survey_form_metadata; using Weee.Models.ExtensionMethods; namespace Weee.Models { [Table("ProductLCAReplyRequests")] public class ProductLCAReplyRequest { public ProductLCAReplyRequest() { Uid = Guid.NewGuid(); //CreatedDate = DateTime.UtcNow;//DL-13 CreatedDate = DateTime.Now; AcceptDate = null; ReplyDate = null; AcceptReplyDate = null; } public int ID { get; set; } public string Distribute { get; set; } public decimal? RepliedValue { get; set; } public string ReferenceFileLink { get; set; } public string DescriptionFromReceiver { get; set; } public string DescriptionFromSender { get; set; } public DivideByOptions DivideBy { get; set; } public enum DivideByOptions { [Display(Name = "Weight", ResourceType = typeof(Resource))] byWeight, [Display(Name = "AreaB", ResourceType = typeof(Resource))] byArea, [Display(Name = "WorkHour", ResourceType = typeof(Resource))] byWorkHour } [Column(TypeName = "DateTime2")] public DateTime CreatedDate { get; set; } [Column(TypeName = "DateTime2")] public DateTime? AcceptDate { get; set; } [Column(TypeName = "DateTime2")] public DateTime? ReplyDate { get; set; } [Column(TypeName = "DateTime2")] public DateTime? AcceptReplyDate { get; set; } [Column(TypeName = "DateTime2")] public DateTime? LastResentDate { get; set; } [Required] public string SenderCompanyName { get; set; } [JsonIgnore] [IgnoreDataMember] public virtual Material SentByWhichMaterial { get; set; } public Guid Uid { get; set; } public int? RepliedLCAID { get; set; } [ForeignKey("RepliedLCAID")] [JsonIgnore] [IgnoreDataMember] public virtual ProductLCA RepliedByWhichLCA { get; set; } [NotMapped] public string MaterialSupplierName { get { return SentByWhichMaterial.SupplierCompanyName; } } [NotMapped] public string MaterialSupplierEmail { get { return SentByWhichMaterial.SupplierCompanyEmail; } } [NotMapped] public string MaterialPartNumber { get { return SentByWhichMaterial.PartNumber; } } [NotMapped] public string MaterialName { get { return SentByWhichMaterial.Name; } } [NotMapped] public string ReplyStatusDisplay { get { if (RepliedValue == null) return Resource.NoReply; else return Resource.Replied; } } [NotMapped] public string RequestLink { get { return Weee.ProgramConstants.RequestLink + Uid.ToString(); } } [NotMapped] public string AnonymousReplyLink { get { return Weee.ProgramConstants.AnonymousReplyLink + Uid.ToString(); } } [NotMapped] public string SupplierLCAStatus { get { if (RepliedByWhichLCA != null) return RepliedByWhichLCA.StatusDisplayName; else if (RepliedValue != null) return Resource.AnonymousReply; else return null; } } [NotMapped] public bool CanBeReplied { get { return AcceptReplyDate == null; } } [NotMapped] public bool CanBeDelete { get { return ReceiverCompanyID == null && AcceptReplyDate == null; } } [NotMapped] public bool CanBeApply { get { return AcceptReplyDate == null && RepliedValue != null; } } [NotMapped] public int SendLCAID { get { return SentByWhichMaterial.LCAID; } } public int? ReceiverCompanyID { get; set; } [ForeignKey("ReceiverCompanyID")] [Display(Name = "LCAReceiveby", ResourceType = typeof(Resource))] [JsonIgnore] [IgnoreDataMember] public virtual NormalCompany ReceiveBy { get; set; } } }