public async Task saveHistoryStatus(int thingId) { var status = await _context.ActiveThingStatus .Where(x => x.thingId == thingId) .Include(x => x.statusContexts) .FirstOrDefaultAsync(); var historyStatus = new HistoryThingStatus(); historyStatus.thing = status.thing; historyStatus.thingId = status.thingId; historyStatus.statusContexts = new List <HistoryContextStatus>(); foreach (var item in status.statusContexts) { var historyStatusContext = new HistoryContextStatus(); historyStatusContext.context = item.context; historyStatusContext.contextDescription = item.contextDescription; historyStatusContext.startTimestampTicks = item.startTimestampTicks; historyStatusContext.statusName = item.statusName; historyStatusContext.value = item.value; historyStatusContext.endTimestampTicks = DateTime.Now.Ticks; historyStatus.statusContexts.Add(historyStatusContext); } _context.HistoryThingStatus.Add(historyStatus); await _context.SaveChangesAsync(); }
public async Task saveHistoryContextStatus(int thingId, string context) { var curStatus = await _context.ActiveThingStatus .Where(x => x.thingId == thingId) .Include(x => x.statusContexts) .FirstOrDefaultAsync(); var updatedStatus = curStatus.statusContexts.Where(x => x.context == context).FirstOrDefault(); var histThingStatus = new HistoryThingStatus(); histThingStatus.thingId = thingId; histThingStatus.statusContexts = new List <HistoryContextStatus>(); if (updatedStatus != null) { var histContextStatus = new HistoryContextStatus(); histContextStatus.context = updatedStatus.context; histContextStatus.contextDescription = updatedStatus.contextDescription; histContextStatus.endTimestampTicks = DateTime.Now.Ticks; histContextStatus.startTimestampTicks = updatedStatus.startTimestampTicks; histContextStatus.statusName = updatedStatus.statusName; histContextStatus.value = updatedStatus.value; histThingStatus.statusContexts.Add(histContextStatus); _context.HistoryThingStatus.Add(histThingStatus); await _context.SaveChangesAsync(); } }