public bool AddViaPoint(ViaPoint viaPoint) { string query = "insert into ViaPoint(Id,RideId,Name,[Index],Distance) values(@Id,@RideId,@Name,@Index,@Distance)"; DynamicParameters parameters = new DynamicParameters(); string viaPointId = Guid.NewGuid().ToString(); parameters.Add("Id", viaPointId); parameters.Add("RideId", viaPoint.RideId); parameters.Add("Name", viaPoint.Name.ToLower()); parameters.Add("Index", viaPoint.Index); parameters.Add("Distance", viaPoint.Distance); ExtensionObject extensionObject = new ExtensionObject() { Query = query, ConnectionString = connectionString }; if (extensionObject.AddOrUpdateItem <ViaPoint>(parameters)) { return(true); } else { return(false); } }
public void UpdateAvailableSeat(ViaPoint city, int updatedSeats) { using (var db = new CarPoolContext()) { ViaPoint City = db.Cities.Where(c => c.Id == city.Id).Single(); City.SeatAvailable = updatedSeats; db.SaveChanges(); } }
public void CreateRide([FromBody] RideVM ride, [FromQuery] string userId) { int[] res = new int[2]; Ride newRide; newRide = _mapper.Map <Ride>(ride); string From, To; if (ride.Route.ViaPoints != null) { for (int i = 0; i < ride.Route.ViaPoints.Count; i++) { ViaPoint viaPoint = new ViaPoint(); if (i == 0) { From = ride.Route.Source; } else { From = ride.Route.ViaPoints[i - 1].Location; viaPoint.Distance = newRide.Route.ViaPoints[i - 1].Distance; viaPoint.Duration = newRide.Route.ViaPoints[i - 1].Duration; } To = ride.Route.ViaPoints[i].Location; res = GetDetails(From, To); viaPoint.Distance += res[0] / 1000; viaPoint.Duration += TimeSpan.FromSeconds(res[1]); viaPoint.Location = ride.Route.ViaPoints[i].Location; newRide.Route.ViaPoints.Add(viaPoint); } From = ride.Route.ViaPoints.Last().Location; newRide.Distance = newRide.Route.ViaPoints.Last().Distance; // newRide.EndDateTime += newRide.Route.ViaPoints.Last().Duration; } else { From = ride.Route.Source; } res = GetDetails(From, ride.Route.Destination); newRide.Distance += res[0] / 1000; // newRide.EndDateTime += TimeSpan.FromSeconds(res[1]); newRide.ProviderId = userId; _rideService.CreateRide(newRide); }
public int GetAvailableSeatAtSource(Booking booking) { List <ViaPoint> cities = _viaPointData.GetAllViaPointsByBookedRideId(booking.RideId); ViaPoint SourceCity = cities.Where(c => c.CityName == booking.Source).Single(); ViaPoint DestinationCity = cities.Where(c => c.CityName == booking.Destination).Single(); int seat = 10; foreach (ViaPoint city in cities) { if (city.Id >= SourceCity.Id && city.Id < DestinationCity.Id) { if (seat >= city.SeatAvailable) { seat = city.SeatAvailable; } } } return(seat); }
public List <Ride> GetRideByRoute(string source, string destination) { List <Ride> AvailableRide = new List <Ride>(); ViaPoint Source = null; List <Ride> Rides = _rideData.GetAllRides(); foreach (ViaPoint city in _viaPointData.GetAllViaPoints()) { if (city.CityName == source) { Source = city; } if (city.CityName == destination && Source != null && city.RideID == Source.RideID && city.Id > Source.Id) { AvailableRide.Add(Rides.Where(r => r.Id == Source.RideID).SingleOrDefault()); } } return(AvailableRide); }
public void CreateRide() { Ride ride = new Ride(); ViaPoint cities; activeUser = UserUI.activeUser; User user = userService.GetProfile(activeUser); if (user.Car.TotalSeats > 0) { ride.Id = "R" + activeUser.Substring(0, 3) + DateTime.Now.Hour + DateTime.Now.Minute; GeoService geoService = new GeoService(); string city; Console.Clear(); ride.ViaPoints = new List <ViaPoint>(); do { Console.WriteLine("Enter Available Seat"); ride.AvailableSeats = Int32.Parse(Console.ReadLine().DigitValidator()); if (ride.AvailableSeats > user.Car.TotalSeats) { Console.WriteLine("\nValue exceeds your's car capacity\n"); } } while (ride.AvailableSeats > user.Car.TotalSeats); do { cities = new ViaPoint(); Console.WriteLine("Enter Source city"); city = Console.ReadLine().NotEmptyValidator().NameValidator(); if (geoService.IsCityAvailable(city)) { cities.CityName = city; cities.RideID = ride.Id; cities.SeatAvailable = ride.AvailableSeats; ride.ViaPoints.Add(cities); } } while (!geoService.IsCityAvailable(city)); string Response; do { Console.WriteLine("Add via points? (Y/N)"); Response = Console.ReadLine().NotEmptyValidator().YesNOValidator(); if (Response == "N") { break; } do { cities = new ViaPoint(); Console.WriteLine("\nEnter ViaPoint city"); city = Console.ReadLine().NotEmptyValidator().NameValidator(); if (geoService.IsCityAvailable(city)) { cities.CityName = city; cities.RideID = ride.Id; cities.SeatAvailable = ride.AvailableSeats; ride.ViaPoints.Add(cities); } } while (!geoService.IsCityAvailable(city)); } while (Response == "Y" || Response != "N"); do { cities = new ViaPoint(); Console.WriteLine("Enter Destination city"); city = Console.ReadLine().NotEmptyValidator().NameValidator(); if (geoService.IsCityAvailable(city)) { cities.CityName = city; cities.RideID = ride.Id; cities.SeatAvailable = ride.AvailableSeats; ride.ViaPoints.Add(cities); } } while (!geoService.IsCityAvailable(city)); Console.WriteLine("\nEnter Start Date and Time { mm/dd/yyyy hh/mm/ss AM/PM}"); ride.StartTime = DateTime.Parse(Console.ReadLine()); Console.WriteLine("Enter Price per km"); ride.PricePerKm = double.Parse(Console.ReadLine().NotEmptyValidator()); ride.UserId = activeUser; if (rideService.CreateRide(ride)) { Console.WriteLine("Added Successfully"); Console.WriteLine("Press any key to go back"); Console.ReadKey(); } } else { Console.WriteLine("You dont have a car"); Console.ReadKey(); } Program.UserChoices(); }
static void Menu(User user) { //int choice; Choice choice; string pickUp; string drop; float amount; do { Console.WriteLine("\nPlease enter your Choice\n" + "1.Offer ride\n" + "2.Book a Car\n" + "3.View Offered Rides and Approve Requests\n" + "4.View Bookings\n" + "5.Add Amount to Wallet\n" + "6.View Balance\n" + "7.Add a Car\n" + "8.Logout"); choice = Enum.Parse <Choice>(Reader.ReadInt(1, 8).ToString()); switch (choice) { case Choice.OfferRide: Ride ride = new Ride(); if (userService.HasVehicle(user.Id)) { if (user.Age < 18) { Console.WriteLine("Sorry,Minors can't offer a ride"); } else { ride.ProviderId = user.Id; Console.WriteLine("Please enter the date and time (dd/mm/yyyy hh:mm) of your journey "); ride.StartDateTime = Reader.ReadDateTime(); Console.WriteLine("Please enter the starting place of your journey"); ride.Route.Source = Reader.ReadString().ToLower(); Console.WriteLine("Please enter the destination of your journey"); ride.Route.Destination = Reader.ReadString().ToLower(); Console.WriteLine("Please enter the distance in KM"); ride.Distance = Reader.ReadFloat(); ride.EndDateTime = ride.StartDateTime + rideService.CalculateTime(ride.Distance); ride.Route.TotalDistance = ride.Distance; if (rideService.FindOfferedRides(user.Id).Any(_ => (_.StartDateTime <= ride.StartDateTime && ride.StartDateTime < _.EndDateTime) || (_.StartDateTime < ride.EndDateTime && _.EndDateTime > ride.EndDateTime))) { Console.WriteLine("Sorry,You can't Offer two rides simultaneously"); break; } do { Console.WriteLine("Please enter Y to add a stop Over point,N otherwise"); bool isWilling = Reader.ReadBool(); if (isWilling) { ViaPoint viaPoint = new ViaPoint(); Console.WriteLine("Please enter the Address"); viaPoint.Location = Reader.ReadString().ToLower(); Console.WriteLine("Please enter the distance from " + ride.Route.Source); viaPoint.Distance = Reader.ReadFloat(0, ride.Distance); ride.Route.ViaPoints.Add(viaPoint); } else { break; } } while (true); Console.WriteLine("Please enter the cost per unit distance"); ride.UnitDistanceCost = Reader.ReadFloat(); ride.ProviderName = user.Name; int carIndex; if (user.Vehicles.Count == 1) { carIndex = 0; } else { Console.WriteLine("Please select the car "); foreach (var item in user.Vehicles.Select((value, index) => new { value, index })) { Console.WriteLine(item.index + 1 + ". "); DisplayCarDetails(item.value); } carIndex = Reader.ReadInt(1, user.Vehicles.Count) - 1; } int numberOfSeats = user.Vehicles[carIndex].Capacity - 1; Console.WriteLine("Please enter the number of seats to Offer"); ride.NoOfOfferedSeats = Reader.ReadInt(1, numberOfSeats); ride.VehicleId = user.Vehicles[carIndex].Number; rideService.CreateRide(ride); } } else { Console.WriteLine("Please Add a car to Offer Ride"); } break; case Choice.BookACar: Console.WriteLine("Please enter the Starting place"); pickUp = Reader.ReadString().ToLower(); Console.WriteLine("Please enter the Destination"); drop = Reader.ReadString().ToLower(); Console.WriteLine("Please enter the date"); DateTime dateTime = Reader.ReadDate(); Console.WriteLine("Please enter the number of seats"); int noOfSeats = Reader.ReadInt(); List <Ride> AvailableRides = rideService.FindRides(pickUp, drop, dateTime, user.Id, noOfSeats, VehicleType.Car); if (AvailableRides.Count == 0) { Console.WriteLine("Rides are not available"); } else { foreach (var item in AvailableRides.Select((value, index) => new { value, index })) { Console.Write(item.index + 1 + ". "); //Vehicle car = userService.FindVehicle(item.value.VehicleId, item.value.ProviderId); Vehicle car = userService.FindVehicle(item.value.VehicleId); DisplayAvailableRide(item.value); DisplayCarDetails(car); Console.WriteLine("Start Time:" + item.value.StartDateTime + rideService.CalculateTime(item.value, pickUp, drop)); Console.WriteLine("Cost: " + rideService.CalculateCostForRide(item.value.Id, pickUp, drop) * noOfSeats); } Console.WriteLine("Please enter Y to book a car,N to Go Back"); bool isWilling = Reader.ReadBool(); if (!isWilling) { break; } Console.WriteLine("Please select a ride "); int rideIndex = Reader.ReadInt(1, AvailableRides.Count) - 1; Ride availableRide = AvailableRides[rideIndex]; float cost = rideService.CalculateCostForRide(availableRide.Id, pickUp, drop) * noOfSeats; if (userService.IsBalanceAvailable(cost, user.Id)) { rideService.RequestRide(user.Id, availableRide.Id, pickUp, drop, noOfSeats); Console.WriteLine("The Ride is Requested Successfully\n" + "Please wait for the approval"); } else { Console.WriteLine("Sorry,Your Balance is not Sufficient"); } } break; case Choice.ViewOfferedRidesAndApproveRequests: List <Ride> offeredRides = rideService.FindOfferedRides(user.Id); if (offeredRides.Count == 0) { Console.WriteLine("Whoops,No rides are offered"); } else { foreach (var item in offeredRides.Select((value, index) => new { value, index })) { Console.Write(item.index + 1 + ". "); DisplayRide(item.value); if (item.value.IsRideCompleted) { Console.WriteLine("The Ride is Completed"); } else { Console.WriteLine("The Ride is not Completed"); } Console.WriteLine("car number: " + item.value.VehicleId); } Console.WriteLine("Please select the ride to view Requests"); int rideIndex = Reader.ReadInt(1, offeredRides.Count) - 1; Ride offeredRide = offeredRides[rideIndex]; ViewResponses(offeredRide); if (offeredRide.IsRideCompleted) { break; } while (offeredRide.Requests.Count != 0) { ViewRequests(offeredRide); Console.WriteLine("Please enter Y to Accept or Reject Request,N otherwise"); bool isWilling = Reader.ReadBool(); if (!isWilling) { break; } Console.WriteLine("Please select Request to Accept or Reject"); int requestIndex = Reader.ReadInt(1, offeredRide.Requests.Count) - 1; string riderId = offeredRide.Requests[requestIndex].RiderId; Console.WriteLine("Please enter Y to Approve Request,N to Reject"); bool isApprove = Reader.ReadBool(); if (isApprove) { amount = rideService.CalculateCostForRide(offeredRide.Id, offeredRide.Requests[requestIndex].PickUp, offeredRide.Requests[requestIndex].Drop); User rider = userService.FindUser(riderId); if (userService.IsBalanceAvailable(amount, rider.Id)) { if (rideService.ApproveRequest(offeredRide.Id, offeredRide.Requests[requestIndex].RequestId, isApprove)) { userService.PayBill(user.Id, rider.Id, amount); Console.WriteLine("The request is Accepted Successfully"); } else { Console.WriteLine("The Request can't be Accepted"); } } } else if (rideService.ApproveRequest(offeredRide.Id, offeredRide.Requests[requestIndex].RequestId, isApprove)) { Console.WriteLine("The request is Rejected "); } } } break; case Choice.ViewBookings: ViewBookings(user.Id); break; case Choice.AddAmountToWallet: Console.WriteLine("Please enter the amount"); amount = Reader.ReadFloat(); userService.AddAmount(amount, user.Id); break; case Choice.ViewBalance: float balance = userService.GetBalance(user.Id); Console.WriteLine("The Available Balance is " + balance); break; case Choice.AddACar: Console.WriteLine("Please select the type of vehicle" + "1.Car,2.Bike"); VehicleType type = Reader.ReadVehicleType(); userService.AddVehicle(user.Id, NewVehicle(type)); break; case Choice.Logout: break; } } while (choice != Choice.Logout); }
public bool AddViaPoint([FromBody] ViaPoint viaPoint) { return(viaPointService.AddViaPoint(viaPoint)); }