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))); }
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); } }
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)); }