public IActionResult GetStatus(string device, int seq) { do { SigfoxPayload item = _db.SigFoxPayloads.Where(s => s.device == device) .OrderByDescending(p => p.timestamp) .FirstOrDefault(); if (item == null) { return(new StatusCodeResult(404)); } else { if (seq == 0) { return(Ok(item)); } else { if (item.seqNumber == seq) { System.Threading.Thread.Sleep(1000); } else { return(Ok(item)); } } } }while (true); }
public IActionResult Callback(SigfoxPayload payload) { try { _db.SigFoxPayloads.Add(payload); Sensor sensor = _db.Sensors.FirstOrDefault(s => s.DeviceId == payload.device); if (sensor == null) { // toate locurile de parcare sunt detinute de 88281e5b-2943-4f1b-b9b0-58538da1b2a8 sensor = new Sensor { DeviceId = payload.device, OwnerId = "88281e5b-2943-4f1b-b9b0-58538da1b2a8" }; _db.Sensors.Add(sensor); } _db.SaveChanges(); return(Ok()); } catch (Exception ex) { return(new StatusCodeResult(500)); } }
public IActionResult GetSensors(bool includeReservations) { List <Sensor> sensors; if (includeReservations) { sensors = _db.Sensors.Include(s => s.Reservations).ToList(); DateTime now = DateTime.UtcNow; foreach (Sensor sensor in sensors) { Reservation reservation = sensor.Reservations.FirstOrDefault(r => r.ReservationStartUtc <now && r.ReservationEndUtc> now); if (reservation != null) { sensor.IsReserved = reservation.UserName; } SigfoxPayload lastSignal = _db.SigFoxPayloads.Where(s => s.device == sensor.DeviceId) .OrderByDescending(p => p.timestamp) .FirstOrDefault(); if (lastSignal == null || lastSignal.seqNumber % 2 == 0) { sensor.IsUsed = false; } else { sensor.IsUsed = true; } } } else { sensors = _db.Sensors.ToList(); } return(Ok(sensors)); }