public Model.Usage GetUsage(LogEntry logEntry) { var baseTimestamp = GetUsageTimestamp(logEntry.Timestamp); Usage usage = null; bool updateUsage = false; if (lastHourlyUsage.ContainsKey(logEntry.UserId) && lastHourlyUsage[logEntry.UserId].Timestamp == baseTimestamp) { usage = lastHourlyUsage[logEntry.UserId]; } if (usage == null) { updateUsage = true; usage = context.Usages.FirstOrDefault(x => x.UserId == logEntry.UserId && x.Timestamp == baseTimestamp); } if (usage == null) { usage = new Model.Usage() { Timestamp = baseTimestamp, UserId = logEntry.UserId }; var prevUsage = context.Usages.Where(x => x.UserId == logEntry.UserId && x.Timestamp < baseTimestamp).OrderByDescending(x => x.Timestamp).FirstOrDefault(); if (prevUsage != null) { usage.E1Start = prevUsage.E1Current; usage.E2Start = prevUsage.E2Current; usage.E1RetourStart = prevUsage.E1RetourCurrent; usage.E2RetourStart = prevUsage.E2RetourCurrent; usage.PvProductionStart = prevUsage.PvProductionCurrent; } else { usage.E1Start = logEntry.E1; usage.E2Start = logEntry.E2; usage.E1RetourStart = logEntry.E1Retour; usage.E2RetourStart = logEntry.E2Retour; usage.PvProductionStart = 0; } context.Usages.Add(usage); } if (updateUsage) { lastHourlyUsage[logEntry.UserId] = usage; } return(usage); }
private void PopulateUsage(Model.Usage usage, Model.LogEntry entry) { usage.E1Current = entry.E1; usage.E2Current = entry.E2; usage.E1RetourCurrent = entry.E1Retour; usage.E2RetourCurrent = entry.E2Retour; if (entry.PvCounter > 0 && entry.Timestamp.Hour >= 3) { var refDate = entry.Timestamp.Date; var minDailyProduction = context.Usages.Where(x => x.Timestamp >= refDate).Min(x => x.PvProductionStart); usage.PvProductionCurrent = minDailyProduction + entry.PvCounter; } else { usage.PvProductionCurrent = usage.PvProductionStart; } }
public Model.Usage GetUsage(LogEntry logEntry) { var baseTimestamp = GetUsageTimestamp(logEntry.Timestamp); Usage usage = null; bool updateUsage = false; if (lastHourlyUsage.ContainsKey(logEntry.UserId) && lastHourlyUsage[logEntry.UserId].Timestamp == baseTimestamp) { usage = lastHourlyUsage[logEntry.UserId]; } if (usage == null) { updateUsage = true; usage = context.Usages.FirstOrDefault(x => x.UserId == logEntry.UserId && x.Timestamp == baseTimestamp); } if (usage == null) { usage = new Model.Usage() { Timestamp = baseTimestamp, UserId = logEntry.UserId }; var prevUsage = context.Usages.Where(x => x.UserId == logEntry.UserId && x.Timestamp < baseTimestamp).OrderByDescending(x => x.Timestamp).FirstOrDefault(); if (prevUsage != null) { usage.E1Start = prevUsage.E1Current; usage.E2Start = prevUsage.E2Current; usage.E1RetourStart = prevUsage.E1RetourCurrent; usage.E2RetourStart = prevUsage.E2RetourCurrent; usage.PvProductionStart = prevUsage.PvProductionCurrent; } else { usage.E1Start = logEntry.E1; usage.E2Start = logEntry.E2; usage.E1RetourStart = logEntry.E1Retour; usage.E2RetourStart = logEntry.E2Retour; usage.PvProductionStart = 0; } context.Usages.Add(usage); } if (updateUsage) { lastHourlyUsage[logEntry.UserId] = usage; } return usage; }