Example #1
0
 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);
 }
Example #2
0
 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));
     }
 }
Example #3
0
        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));
        }