Ejemplo n.º 1
0
        public ActionResult Post(PushModel data)
        {
            UserMocker.Mock(data.Id);

            using (var db = new RescContext())
            {
                var firstResponder = db.FirstResponders.SingleOrDefault(p => p.Id == data.Id);
                if (firstResponder == null)
                {
                    return(Ok("Fail"));
                }

                firstResponder.PushEndpoint = data.Endpoint;
                var tmp = data.Keys.SingleOrDefault(k => k.Key == "auth");
                firstResponder.PushAuth = tmp.Value;
                tmp = data.Keys.SingleOrDefault(k => k.Key == "p256dh");
                firstResponder.PushKey = tmp.Value;

                db.FirstResponders.Update(firstResponder);

                db.SaveChanges();
            }

            return(Ok());
        }
Ejemplo n.º 2
0
        public ActionResult Post(PositionModel data)
        {
            UserMocker.Mock(data.Id);

            using (var db = new RescContext())
            {
                var position = db.ActivePositions.SingleOrDefault(p => p.FirstResponderId == data.Id);
                if (position == null)
                {
                    position = new ActivePosition {
                        FirstResponderId = data.Id
                    }
                }
                ;

                position.Lat = data.Lat;
                position.Lng = data.Lng;

                if (position.Id != 0)
                {
                    db.ActivePositions.Update(position);
                }
                else
                {
                    db.ActivePositions.Add(position);
                }

                db.SaveChanges();
            }

            return(Ok());
        }
    }
Ejemplo n.º 3
0
        public static void Notify(Intervention intervention)
        {
            var radius = GetNearestStation(intervention.Lat, intervention.Lng);

            var responders = GetRespondersInRadius(radius, intervention.Lat, intervention.Lng);
            var contr      = new PushControllerExtension();

            foreach (var responder in responders)
            {
                contr.SendNotification(responder, intervention);
            }

            using (var db = new RescContext())
            {
                foreach (var responder in responders)
                {
                    db.FirstResponderInterventions.Add(new FirstResponderIntervention
                    {
                        State            = FirstResponderIntervationState.None,
                        FirstResponderId = responder.Id,
                        InterventionId   = intervention.Id
                    });
                }
                db.SaveChanges();
            }
        }
Ejemplo n.º 4
0
        public ActionResult Post(InterventionModel data)
        {
            using (var db = new RescContext())
            {
                var intervention = new Intervention {
                    Detail   = data.Detail,
                    Overview = data.Overview,
                    Lat      = data.Lat,
                    Lng      = data.Lng,
                    State    = IntervationState.Open
                };

                db.Interventions.Add(intervention);
                db.SaveChanges();
            }

            using (var db = new RescContext())
            {
                var intervention = db.Interventions.Where(i => i.State == IntervationState.Open).LastOrDefault();
                if (intervention != null)
                {
                    InterventionExtension.Notify(intervention);
                }
            }
            return(Ok());
        }
Ejemplo n.º 5
0
 public ActionResult <string> Get(int id)
 {
     using (var db = new RescContext())
     {
         var intervention = db.Interventions.FirstOrDefault(i => i.Id == id);
         return(Ok(intervention));
     }
 }
Ejemplo n.º 6
0
 public ActionResult <string> Deny(int id)
 {
     using (var db = new RescContext())
     {
         var responderInterventions = db.FirstResponderInterventions.Where(i => i.FirstResponderId == id);
         foreach (var tmp in responderInterventions)
         {
             tmp.State = FirstResponderIntervationState.Denied;
         }
         db.SaveChanges();
     }
     return(Ok());
 }
Ejemplo n.º 7
0
        public static void Mock(int id)
        {
            using (var db = new RescContext())
            {
                var user = db.FirstResponders.SingleOrDefault(r => r.Id == id);
                if (user != null)
                {
                    return;
                }

                user = new FirstResponder {
                    Id = id
                };
                user.Name        = "TestName" + id;
                user.Description = "TestDescription" + id;

                db.FirstResponders.Add(user);

                db.SaveChanges();
            }
        }
Ejemplo n.º 8
0
        public static List <FirstResponder> GetRespondersInRadius(double radius, double Lat, double Lng)
        {
            var responders = new List <FirstResponder>();

            using (var db = new RescContext())
            {
                var positions = db.ActivePositions.Include(p => p.FirstResponder).ToList();

                foreach (var position in positions)
                {
                    var distance = GeoCoordinates.DistanceTo(Lat, Lng, position.Lat, position.Lng);

                    if (distance < radius)
                    {
                        responders.Add(position.FirstResponder);
                    }
                }
            }

            return(responders);
        }
Ejemplo n.º 9
0
        public static double GetNearestStation(double Lat, double Lng)
        {
            Station nearestStation = null;
            double  nearest        = 150;


            using (var db = new RescContext())
            {
                var stations = db.Stations.ToList();

                foreach (var station in stations)
                {
                    var distance = GeoCoordinates.DistanceTo(Lat, Lng, station.Lat, station.Lng);

                    if (distance < nearest)
                    {
                        nearestStation = station;
                        nearest        = distance;
                    }
                }
            }

            return(nearest);
        }