private void AddNewUserAndTrips(string userId, List <Trip> trips) { List <TripDocument> docList = new List <TripDocument>(); AddTripsToDocument(trips, ref docList); TripsCollection collection = new TripsCollection(userId, docList); _trips.InsertOne(collection); }
private void AddTripsToExistingUser(TripsCollection collection, List <Trip> trips) { List <TripDocument> newDocsList = collection.TripDocuments; AddTripsToDocument(trips, ref newDocsList); FilterDefinition <TripsCollection> filter = Builders <TripsCollection> .Filter.Eq(x => x.UserId, collection.UserId); UpdateDefinition <TripsCollection> update = Builders <TripsCollection> .Update.Set(x => x.TripDocuments, newDocsList); _trips.UpdateOne(filter, update); }
/// <summary> /// Gets the TripDocument from a userId and date /// </summary> /// <param name="userId">The userId to look for</param> /// <param name="date">The date to look for</param> /// <returns>A TripDocument containing the trips for the specific user and date</returns> public TripDocument GetTripsOfUserAndDate(string userId, string date) { TripsCollection tripCol = _trips.Find(collection => collection.UserId == userId).FirstOrDefault(); TripDocument tripDoc = null; if (tripCol != null) { tripDoc = tripCol.TripDocuments.FirstOrDefault(x => x.DateId == date); } return(tripDoc); }
public List <TripDocument> GetTrips(string userId) { TripsCollection tripsCollection = _trips.Find(collection => collection.UserId == userId).FirstOrDefault(); if (tripsCollection == null) { return(null); } // This step is done to avoid sending the list of positions from a trip foreach (TripDocument document in tripsCollection.TripDocuments) { foreach (Trip trip in document.TripList) { trip.TripPositions = null; } } return(tripsCollection.TripDocuments); }
/// <summary> /// Saves a list of Trips to the given userId in the database /// </summary> /// <param name="trips">The trips to save</param> /// <param name="userId">The userId to save the trips to</param> /// <returns>A bool indicating success</returns> public bool SaveTrips(List <Trip> trips, string userId) { try { TripsCollection tripsCollection = _trips.Find(collection => collection.UserId == userId).FirstOrDefault(); if (tripsCollection != null) { AddTripsToExistingUser(tripsCollection, trips); } else { AddNewUserAndTrips(userId, trips); } } catch (Exception) { return(false); } return(true); }
public bool UpdateTrip(string date, string tripId, string userId, Transport transport) { TripsCollection tripsCollection = _trips.Find(collection => collection.UserId == userId).FirstOrDefault(); TripDocument tripsOnDate; if (tripsCollection != null) { tripsOnDate = tripsCollection.TripDocuments.FirstOrDefault(x => x.DateId == date); if (tripsOnDate != null) { Trip trip = tripsOnDate.TripList.FirstOrDefault(x => x.Id == tripId); trip.Transport = transport; FilterDefinition <TripsCollection> filter = Builders <TripsCollection> .Filter.Eq(x => x.UserId, userId); UpdateDefinition <TripsCollection> update = Builders <TripsCollection> .Update.Set(x => x.TripDocuments, tripsCollection.TripDocuments); _trips.UpdateOne(filter, update); return(true); } } return(false); }
async Task ExecuteLoadDirectionsCommand() { if (IsBusy) { return; } IsBusy = true; try { StopsCollection.Clear(); var stops = await StopDataStore.GetItemsAsync(true); foreach (Stop stop in stops) { StopsCollection.Add(stop); } StopTimesCollection.Clear(); StopTimeDataStore.Clear(); var stopsTime = await StopTimeDataStore.GetItemsAsync(Route.RouteId, Route.i, true); foreach (StopTime stopTime in stopsTime) { StopTimesCollection.Add(stopTime); } foreach (Stop stop in StopsCollection) { foreach (StopTime stopTime in StopTimesCollection) { if (stop.StopId == stopTime.StopId) { stopTime.StopDesc = stop.StopDesc; } } } foreach (StopTime stopTime in StopTimesCollection) { stopTime.ArrivalTime = stopTime.ArrivalTime.Replace("1899-12-30T", ""); stopTime.DepartureTime = stopTime.DepartureTime.Replace("1899-12-30T", ""); stopTime.ArrivalTime = stopTime.ArrivalTime.Replace("1899-12-31T", "Następnego dnia o:"); stopTime.DepartureTime = stopTime.DepartureTime.Replace("1899-12-31T", "Następnego dnia o:"); } TripsCollection.Clear(); var trips = await TripsDataStore.GetItemsAsync(Route.i, true); foreach (Trip trip in trips) { TripsCollection.Add(trip); } DirectionsCollection.Clear(); Direction DirectionZero = new Direction(); DirectionZero.variants = new List <Variant>(); Direction DirectionOne = new Direction(); DirectionOne.variants = new List <Variant>(); foreach (Trip trip in TripsCollection) { if (Route.RouteId == int.Parse(trip.RouteId)) { if (trip.DirectionId == "2") { Variant variantV2 = new Variant(); variantV2.stopTimesTest = new List <StopTime>(); DirectionZero.directionId = trip.DirectionId; variantV2.directionId = int.Parse(trip.DirectionId); variantV2.tripId = int.Parse(trip.TripId); variantV2.tripHeadsign = trip.TripHeadsign; foreach (StopTime stopTime in StopTimesCollection) { if (int.Parse(stopTime.RouteId) == Route.RouteId && stopTime.TripId == trip.TripId) { variantV2.stopTimesTest.Add(stopTime); } } DirectionZero.variants.Add(variantV2); } if (trip.DirectionId == "1") { Variant variantV1 = new Variant(); variantV1.stopTimesTest = new List <StopTime>(); DirectionOne.directionId = trip.DirectionId; variantV1.directionId = int.Parse(trip.DirectionId); variantV1.tripId = int.Parse(trip.TripId); variantV1.tripHeadsign = trip.TripHeadsign; foreach (StopTime stopTime in StopTimesCollection) { if (int.Parse(stopTime.RouteId) == Route.RouteId && stopTime.TripId == trip.TripId) { variantV1.stopTimesTest.Add(stopTime); } } DirectionOne.variants.Add(variantV1); } } } DirectionsCollection.Add(DirectionOne); DirectionsCollection.Add(DirectionZero); } catch (Exception ex) { Debug.WriteLine(ex); await App.Current.MainPage.DisplayAlert("Błąd", "Coś poszło nie tak", "OK"); } finally { IsBusy = false; } }