private ICollection <ProgramTimeSlot> GetBasalPrgTimeSlots(Guid userId, DateTime creationDate) { var slots = MemoryMappings.GetAllBasalPrgTimeSlots(); ConcurrentBag <ProgramTimeSlot> results = new ConcurrentBag <ProgramTimeSlot>(); if (slots.ContainsKey(userId)) { var set = slots[userId]; Array.ForEach(set.ToArray(), s => { if (s.Key == creationDate) { Parallel.ForEach(s.Value.ToArray(), v => results.Add(v)); } }); } return(results.ToList()); }
public void CreatePumpTimeSlotsMapping() { try { var dataSet = TableAgent.DataSet.Tables[FbTableName].Rows; RecordCount = TableAgent.RowCount; foreach (DataRow row in dataSet) { // get userid from old aspnetdb matching on patientid #####.##### var patId = row["PATIENTID"].ToString(); var userId = MemoryMappings.GetUserIdFromPatientInfo(MigrationVariables.CurrentSiteId, patId); if (!mHelper.HasPatientMigrated(patId)) { // temp collecions var tempBasal = new List <ProgramTimeSlot>(); var tempBolus = new List <ProgramTimeSlot>(); var keyId = mu.ParseInt(row["KEYID"].ToString()); var programKey = mu.ParseInt(row["PROGRAMNUMBER"].ToString()); var programName = (row["PROGRAMNAME"] is DBNull) ? "Name" : row["PROGRAMNAME"].ToString(); var createDate = (row["CREATEDATE"] is DBNull) ? DateTime.MinValue : mu.ParseFirebirdDateTime(row["CREATEDATE"].ToString()); for (int i = 1; i < 25; i++) { DateTime bastart = (row[$"BASAL{i}STARTTIME"] is DBNull) ? DateTime.MinValue : mu.ParseFirebirdDateTime(row[$"BASAL{i}STARTTIME"].ToString()); DateTime bastop = (row[$"BASAL{i}STOPTIME"] is DBNull) ? DateTime.MinValue : mu.ParseFirebirdDateTime(row[$"BASAL{i}STOPTIME"].ToString()); if (bastart != DateTime.MinValue && bastop != DateTime.MinValue) { ProgramTimeSlot bats = new ProgramTimeSlot { Value = mu.ParseDouble(row[$"BASAL{i}VAL"].ToString()), StartTime = bastart.TimeOfDay, StopTime = bastop.TimeOfDay, DateSet = createDate }; if (createDate != DateTime.MinValue && IsValid(bats)) { tempBasal.Add(bats); } else { MappingStatistics.LogFailedMapping("PUMPTIMESLOTS", row["KEYID"].ToString(), "BasalProgramTimeSlots", typeof(ProgramTimeSlot), JsonConvert.SerializeObject(bats), "Unable to add BasalProgramTimeSlot to database because creation date was null."); FailedCount++; } } if (i < 13) { DateTime botime = (row[$"BOLUS{i}TIME"] is DBNull) ? DateTime.MinValue : mu.ParseFirebirdDateTime(row[$"BOLUS{i}TIME"].ToString()); if (botime != DateTime.MinValue) { ProgramTimeSlot bots = new ProgramTimeSlot { Value = mu.ParseDouble(row[$"BOLUS{i}VAL"].ToString()), StartTime = botime.TimeOfDay, DateSet = createDate }; if (createDate != DateTime.MinValue && IsValid(bots)) { tempBolus.Add(bots); } else { MappingStatistics.LogFailedMapping("PUMPTIMESLOTS", row["KEYID"].ToString(), "BolusProgramTimeSlots", typeof(ProgramTimeSlot), JsonConvert.SerializeObject(bots), "Unable to add BolusProgramTimeSlot to database because creation date was null."); FailedCount++; } } } } if (createDate == DateTime.MinValue) { FailedCount++; } Array.ForEach(tempBasal.ToArray(), a => { MemoryMappings.AddBasalPrgTimeSlot(userId, createDate, a); }); Array.ForEach(tempBolus.ToArray(), a => { MemoryMappings.AddBolusPrgTimeSlot(userId, createDate, a); }); } } MappingStatistics.LogMappingStat("PUMPTIMESLOTS", RecordCount, "BasalProgramTimeSlots", MemoryMappings.GetAllBasalPrgTimeSlots().Count, FailedCount); MappingStatistics.LogMappingStat("PUMPTIMESLOTS", RecordCount, "BolusProgramTimeSlots", MemoryMappings.GetAllBolusPrgTimeSlots().Count, FailedCount); } catch (Exception e) { throw new Exception("Error creating Pump Program Time Slot mapping.", e); } }