public async Task <IActionResult> PostHistory([FromBody] SensorHistoryEntry value) { if (ModelState.IsValid) { await _db.SensorHistory.AddAsync(value); await _db.SaveChangesAsync(); return(Ok("Ok")); } else { return(new BadRequestObjectResult("Not Found")); } }
public async Task <ActionResult> Put(int id) { var oldMonitor = await _db.Monitors .Where(monitor => monitor.Id == id) .FirstOrDefaultAsync(); if (oldMonitor == null) { return(NotFound()); } var updateMonitor = oldMonitor; updateMonitor.Status = "normal"; _db.Entry(oldMonitor).CurrentValues.SetValues(updateMonitor); await _db.SaveChangesAsync(); var oldhistories = await _db.SensorHistory.Where(history => history.SensorId == id).ToListAsync(); if (oldhistories != null) { var latesthistory = oldhistories.Where(history => history.SensorResolved == EnumResolveStatus.UNRESOLVED) .OrderByDescending(history => history.FaultDate).FirstOrDefault(); if (latesthistory != null) { SensorHistoryEntry newHistory = latesthistory; newHistory.SensorResolved = latesthistory.SensorResolved == EnumResolveStatus.UNRESOLVED ? EnumResolveStatus.RESOLVED : EnumResolveStatus.UNRESOLVED; newHistory.AttendedDate = DateTime.Now; _db.Entry(latesthistory).CurrentValues.SetValues(newHistory); await _db.SaveChangesAsync(); } } return(Ok(updateMonitor)); }
public async Task Post([FromBody] InputSensor values) { if (values.valueIn == 0 && values.valueOut != 0) { MonitorsEntry mon = await _db.Monitors.FindAsync(values.IdIn); MonitorsEntry old = await _db.Monitors.FindAsync(values.IdIn); mon.Status = "faulty"; mon.FaultCount = mon.FaultCount + 1; _db.Entry(old).CurrentValues.SetValues(mon); await _db.SaveChangesAsync(); var sensorHistory = await _db.SensorHistory .Where(h => h.SensorId == mon.Id) .OrderByDescending(h => h.FaultDate) .FirstOrDefaultAsync(); if (sensorHistory == null) { SensorHistoryEntry history = new SensorHistoryEntry(); history.SensorId = values.IdIn; history.SensorType = EnumSensorType.WATER_FLOW_SENSOR; history.SensorResolved = EnumResolveStatus.UNRESOLVED; history.FaultDate = DateTime.Now; history.EmailSentDate = DateTime.Now; history.AttendedDate = DateTime.MinValue; await _db.SensorHistory.AddAsync(history); } else { var updatedHistory = sensorHistory; updatedHistory.SensorResolved = EnumResolveStatus.UNRESOLVED; updatedHistory.EmailSentDate = DateTime.Now; _db.Entry(sensorHistory).CurrentValues.SetValues(updatedHistory); await _db.SaveChangesAsync(); } } else if (values.valueOut == 0 && values.valueIn != 0 || values.valueOut > values.valueIn) { MonitorsEntry mon = await _db.Monitors.FindAsync(values.IdOut); MonitorsEntry old = await _db.Monitors.FindAsync(values.IdOut); mon.Status = "faulty"; mon.FaultCount = mon.FaultCount + 1; _db.Entry(old).CurrentValues.SetValues(mon); await _db.SaveChangesAsync(); var sensorHistory = await _db.SensorHistory .Where(h => h.SensorId == mon.Id) .OrderByDescending(h => h.FaultDate) .FirstOrDefaultAsync(); if (sensorHistory == null) { SensorHistoryEntry history = new SensorHistoryEntry(); history.SensorId = values.IdOut; history.SensorType = EnumSensorType.WATER_FLOW_SENSOR; history.SensorResolved = EnumResolveStatus.UNRESOLVED; history.FaultDate = DateTime.Now; history.EmailSentDate = DateTime.Now; history.AttendedDate = DateTime.MinValue; await _db.SensorHistory.AddAsync(history); } else { var updatedHistory = sensorHistory; updatedHistory.SensorResolved = EnumResolveStatus.UNRESOLVED; updatedHistory.EmailSentDate = DateTime.Now; _db.Entry(sensorHistory).CurrentValues.SetValues(updatedHistory); await _db.SaveChangesAsync(); } } ReadingsEntry reading = new ReadingsEntry(); ReadingsEntry reading2 = new ReadingsEntry(); reading.TimesStamp = DateTime.Now; reading2.TimesStamp = DateTime.Now; reading.Value = (values.valueIn) * Globals.MinuteToHour; reading2.Value = (values.valueOut) * Globals.MinuteToHour; reading.MonitorsId = values.IdIn; reading2.MonitorsId = values.IdOut; await _db.Readings.AddAsync(reading); await _db.SaveChangesAsync(); await _db.Readings.AddAsync(reading2); await _db.SaveChangesAsync(); Procedures procedure = new Procedures(_db, _config); await procedure.TriggerInsert(reading); }