using System; using System.Linq; using System.Windows; using DTS.Common.Base; using DTS.Common.DataModel; using DTS.Common.SharedResource.Strings; // ReSharper disable once CheckNamespace namespace DataPROWin7.DataModel { public class LabratoryDetails : BasePropertyChanged { private readonly DTS.Common.ISO.LabratoryDetails _lab; public enum Tags { LabratoryName, LabratoryContactName, LabratoryContactPhone, LabratoryContactFax, LabratoryContactEmail, LabratoryTestRefNumber, LabratoryProjectRefNumber, Name } public string LabratoryName { get => _lab.LabratoryName; set { _lab.LabratoryName = value; _isBlank = false; OnPropertyChanged(Tags.LabratoryName.ToString()); } } public string LabratoryContactName { get => _lab.LabratoryContactName; set { _lab.LabratoryContactName = value; _isBlank = false; OnPropertyChanged(Tags.LabratoryContactName.ToString()); } } public string LabratoryContactPhone { get => _lab.LabratoryContactPhone; set { _lab.LabratoryContactPhone = value; _isBlank = false; OnPropertyChanged(Tags.LabratoryContactPhone.ToString()); } } public string LabratoryContactFax { get => _lab.LabratoryContactFax; set { _lab.LabratoryContactFax = value; _isBlank = false; OnPropertyChanged(Tags.LabratoryContactFax.ToString()); } } public string LabratoryContactEmail { get => _lab.LabratoryContactEmail; set { _lab.LabratoryContactEmail = value; _isBlank = false; OnPropertyChanged(Tags.LabratoryContactEmail.ToString()); } } public string LabratoryTestRefNumber { get => _lab.LabratoryTestRefNumber; set { _lab.LabratoryTestRefNumber = value; _isBlank = false; OnPropertyChanged(Tags.LabratoryTestRefNumber.ToString()); } } public string LabratoryProjectRefNumber { get => _lab.LabratoryProjectRefNumber; set { _lab.LabratoryProjectRefNumber = value; _isBlank = false; OnPropertyChanged(Tags.LabratoryProjectRefNumber.ToString()); } } public string Name { get => _lab.Name; set { _lab.Name = value; _isBlank = false; OnPropertyChanged(Tags.Name.ToString()); } } public bool LocalOnly => _lab.LocalOnly; public DateTime LastModified => _lab.LastModified; public string LastModifiedBy => _lab.LastModifiedBy; public int Version => _lab.Version; public LabratoryDetails() { _lab = new DTS.Common.ISO.LabratoryDetails(); _lab.Name = StringResources.TestTemplate_EmptyListName; } public bool HasBlankName() { return _lab.Name == StringResources.TestTemplate_EmptyListName; } public LabratoryDetails(DTS.Common.ISO.LabratoryDetails lab) { _lab = new DTS.Common.ISO.LabratoryDetails(lab); _isBlank = false; } public DTS.Common.ISO.LabratoryDetails GetIsoLab() { return _lab; } public override string ToString() { return Name; } public bool IsBlank() { return _isBlank; } private bool _isBlank = true; } public class LabratoryDetailsList { protected LabratoryDetailsList() { } public static LabratoryDetails[] GetAllLabs() { var isoLabs = DTS.Common.ISO.LabratoryDetails.GetAllLabratoryDetails(); var labs = isoLabs.Select(isolab => new LabratoryDetails(isolab)).ToList(); labs.Sort(CompareLabs); return labs.ToArray(); } public enum Tags { Labs } public static void DeleteAll() { DTS.Common.ISO.LabratoryDetails.DeleteLabratoryDetails(); } private static int CompareLabs(LabratoryDetails a, LabratoryDetails b) { if (a == b) { return 0; } if (null == a) { return -1; } return null == b ? 1 : string.Compare(a.Name, b.Name, StringComparison.Ordinal); } public static void Delete(LabratoryDetails lab) { lab?.GetIsoLab().Delete(ApplicationProperties.CurrentUser.UserName); } public static void Delete(LabratoryDetails[] labs) { foreach (var lab in labs) { Delete(lab); } } public static LabratoryDetails GetLab(string name) { if (string.IsNullOrEmpty(name)) { return null; } var iso = DTS.Common.ISO.LabratoryDetails.GetLabratoryDetails(name); return null == iso ? null : new LabratoryDetails(iso); } public static void AddLab(LabratoryDetails lab) { lab.GetIsoLab().Commit(ApplicationProperties.CurrentUser.UserName); } } }