示例#1
0
        public async Task <ActionResult <IList <RiskyVisitResponse> > > GetForVisit([FromQuery] int visitId)
        {
            var visit = await DataAccess.Get <Visit, int>(visitId);

            var visits = await RiskAccess.GetRiskyVisitsFor(visit);

            var response = new List <RiskyVisitResponse>();

            foreach (var item in visits)
            {
                var distance   = GPSExtensions.GetDistanceInMeters(visit.Longitude, visit.Latitude, item.Longitude, item.Latitude);
                var riskyVisit = new RiskyVisitResponse()
                {
                    VisitId      = item.VisitId,
                    Address      = item.Address,
                    CheckIn      = item.CheckIn,
                    CheckOut     = item.CheckOut.GetValueOrDefault(item.CheckIn),
                    Latitude     = item.Latitude,
                    Longitude    = item.Longitude,
                    DistanceInKm = Convert.ToInt32(distance)
                };
                response.Add(riskyVisit);
            }

            return(new OkObjectResult(response.OrderBy(r => r.DistanceInKm)));
        }
示例#2
0
        public static async Task <IList <VisitResponse> > GetVisitResponseFor(int userId)
        {
            using (var conn = ContextProvider.Instance.Conn)
            {
                var visits = await conn.QueryAsync <Visit>(
                    @"SELECT * FROM Visits v WHERE v.UserId = @UserId",
                    new { UserId = userId });

                var response = new List <VisitResponse>();

                foreach (var visit in visits)
                {
                    var riskyInteractions = await RiskAccess.GetRiskyVisitsFor(visit);

                    response.Add(new VisitResponse()
                    {
                        Address           = visit.Address,
                        CheckIn           = visit.CheckIn,
                        CheckOut          = visit.CheckOut,
                        Latitude          = visit.Latitude,
                        Longitude         = visit.Longitude,
                        PlaceName         = visit.PlaceName,
                        VisitId           = visit.VisitId,
                        AtRisk            = visit.AtRisk,
                        RiskyInteractions = riskyInteractions == null ? 0 : riskyInteractions.Count()
                    });
                }

                return(response);
            }
        }
示例#3
0
        public async Task <ActionResult <string> > Create([FromBody] VisitRequest request)
        {
            var user = await DataAccess.Get <User, int>(request.UserId);

            var entity = await request.ToPersistedData();

            entity.AtRisk = user.AtRisk;

            await entity.Insert();

            var riskyVisits = await RiskAccess.GetRiskyVisitsFor(entity);

            var response = JsonConvert.SerializeObject(riskyVisits);

            return(new OkObjectResult(response));
        }