Пример #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 async Task <ActionResult <RiskyVisitResponse> > GetRisks([FromQuery] int userId, [FromQuery] double lat, [FromQuery] double lng, [FromQuery] DateTime?from, [FromQuery] DateTime?to)
        {
            var claimUserId = UserUtilities.GetUserId(httpContextAccessor.HttpContext.User);

            if (claimUserId != userId)
            {
                //return Unauthorized();
            }
            var riskyVisits = await UserAccess.GetAtRiskVisits(userId, from, to);

            var riskyResponse      = new List <RiskyVisitResponse>();
            var groupedRiskyVisits = new Dictionary <int, RiskyVisitResponse>();

            if (riskyVisits.Count > 0)
            {
                foreach (var visit in riskyVisits.OrderBy(v => v.VisitId).ToList())
                {
                    if (!groupedRiskyVisits.ContainsKey(visit.VisitId))
                    {
                        var riskyVisit = new RiskyVisitResponse()
                        {
                            VisitId      = visit.VisitId,
                            Address      = visit.Address,
                            CheckIn      = visit.CheckIn,
                            CheckOut     = visit.CheckOut,
                            Latitude     = visit.Latitude,
                            Longitude    = visit.Longitude,
                            DistanceInKm = 0,
                            LinkedVisits = new List <RiskyVisitResponse>()
                        };

                        groupedRiskyVisits.Add(visit.VisitId, riskyVisit);
                    }

                    var distance     = GPSExtensions.GetDistanceInMeters(visit.Longitude, visit.Latitude, visit.Longitude2, visit.Latitude2);
                    var relatedVisit = new RiskyVisitResponse()
                    {
                        Address      = visit.Address2,
                        Latitude     = visit.Latitude2,
                        Longitude    = visit.Longitude2,
                        CheckIn      = visit.CheckIn2,
                        CheckOut     = visit.CheckOut2,
                        DistanceInKm = Convert.ToInt32(distance)
                    };

                    groupedRiskyVisits[visit.VisitId].LinkedVisits.Add(relatedVisit);
                }
            }

            var response = groupedRiskyVisits.Select(g => g.Value).ToList();

            return(new OkObjectResult(response));
        }