private void FixupComputerBuildReport(ComputerBuildReport previousValue) { if (previousValue != null && previousValue.HardwareBindingReports.Contains(this)) { previousValue.HardwareBindingReports.Remove(this); } if (ComputerBuildReport != null) { if (!ComputerBuildReport.HardwareBindingReports.Contains(this)) { ComputerBuildReport.HardwareBindingReports.Add(this); } if (CustomerReportUniqueID != ComputerBuildReport.CustomerReportUniqueID) { CustomerReportUniqueID = ComputerBuildReport.CustomerReportUniqueID; } } }
public Guid ReportBindings(ComputerBuildReport cbr) { var msReportUniqueId = Guid.NewGuid(); var cbrKeys = cbr.HardwareBindingReports.ToList(); using (var db = GetContext()) { var dbKeys = GetProductKeyInfoes(db, cbrKeys.Select(k => k.ProductKeyID).ToList()); cbrKeys.ForEach(cbrKey => { var reasonCode = Validate(dbKeys, cbrKey); cbrKey.CustomerReportUniqueID = cbr.CustomerReportUniqueID; cbrKey.ReasonCode = reasonCode; cbrKey.ReasonCodeDescription = GetReasonCodeDescription(reasonCode); var productKeyInfo = dbKeys.Single(k => k.ProductKeyID == cbrKey.ProductKeyID); productKeyInfo.ProductKeyStateID = 3; productKeyInfo.HardwareID = cbrKey.HardwareHash; productKeyInfo.OEMAdditionalInfo = cbrKey.OEMOptionalInfo; }); cbr.MSReportUniqueID = msReportUniqueId; cbr.MSReceivedDateUTC = DateTime.UtcNow; cbr.Status = true; db.ComputerBuildReports.AddObject(cbr); db.SaveChanges(); return msReportUniqueId; } }