private static double GetDistance(BikeTbl point1, Coordinate point2) { //pythagorean theorem c^2 = a^2 + b^2 //thus c = square root(a^2 + b^2) double a = (double)(point2.latitude - point1.latitude); double b = (double)(point2.longitude - point1.longitude); return(Math.Sqrt(a * a + b * b)); }
public void makePayment(int tripId, int cost, int userId) { UserTbl user = DB.UserTbls.Find(userId); string card = user.cardNum; PaymentsTbl payment = new PaymentsTbl(); payment.cardNum = card; payment.cost = cost; payment.tripID = tripId; DB.PaymentsTbls.Add(payment); TripTbl trip = DB.TripTbls.Find(tripId); trip.status = "finished_paid"; BikeTbl bike = DB.BikeTbls.Find(trip.Bike); bike.status = "locked"; DB.SaveChanges(); }
public object FindNearest(Coordinate coordinate) { List <BikeTbl> bikes = DB.BikeTbls.ToList(); double min = double.PositiveInfinity; BikeTbl result = null; foreach (BikeTbl bike in bikes) { double distance = GetDistance(bike, coordinate); if (distance < min) { min = distance; result = bike; } } return(result); }
public void startTrip(int userId, int bikeID) { TripTbl newTrip = new TripTbl(); UserTbl user = DB.UserTbls.Find(userId); newTrip.startLongitude = user.longitude; newTrip.startLatitude = user.latitude; newTrip.status = "in-progress"; newTrip.startTime = DateTime.Now; BikeTbl bike = DB.BikeTbls.Find(bikeID); if (bike.status.Equals("unlocked")) { newTrip.BikeTbl = bike; newTrip.Bike = bikeID; newTrip.UserID = userId; DB.TripTbls.Add(newTrip); bike.status = "occupied"; DB.SaveChanges(); } }
public TripCost endTrip(int TripID) { TripTbl trip = DB.TripTbls.Find(TripID); trip.status = "finished_not_paid"; trip.endTime = DateTime.Now; BikeTbl bike = DB.BikeTbls.Find(trip.Bike); trip.endLongitude = bike.longitude; trip.endLatitude = bike.latitude; TimeSpan span = (TimeSpan)(trip.endTime - trip.startTime); double minutes = span.TotalMinutes; int finalCost = (int)(minutes * 0.5); trip.cost = finalCost; TripCost tripcost = new TripCost(); tripcost.cost = finalCost; tripcost.TripID = TripID; DB.SaveChanges(); return(tripcost); }