Пример #1
0
        /// <summary>        
        /// </summary>
        /// <param name="user"></param>
        /// <param name="trip"></param>
        /// <param name="tripChain"></param>
        /// <returns></returns>
        public string UpdateTripDataREST(long id, UserLegitimation user, Person person, TripJson trip)
        {
            string statusMessage = null;
            Trip tripData = new Trip();
            List<TripChainJson> locations = new List<TripChainJson>();
            List<TransportModeJson> modes = new List<TransportModeJson>();

            try
            {
                statusMessage = ExtractTripData(id, user, person, trip, out tripData, out locations, out modes, out statusMessage);
                if (statusMessage == null)
                {
                    InsertTripData(_dbName, _userName, _passWord, user, person, tripData, locations, modes, false, out statusMessage);
                    if (statusMessage == null)
                        statusMessage = "ok";
                }
            }
            catch (Exception e)
            {
                statusMessage += "An exception has occured in UpdateTripDataREST method. " + e.Message;
            }
            //if (statusMessage != null)
            //    File.AppendAllText(@"C:\logs.txt", Environment.NewLine + "<statusMessage - " + DateTime.Now + ">: " + statusMessage);
            return statusMessage;
        }
Пример #2
0
        public void InsertTripData(string dbName, string dbUserName, string dbPassWord, UserLegitimation user, Person person, Trip trip, List<TripChainJson> locations, List<TransportModeJson> modes, bool isInsert, out string statusMessage)
        {
            statusMessage = null;
            string locID = null;
            try
            {
                MongoDatabase resultDB = GetMongoDatabase(dbName, dbUserName, dbPassWord);
                if (resultDB == null)
                {
                    statusMessage = "Database is null";
                    return;
                }

                UpdateUser(_dbName, _userName, _passWord, user, person, out statusMessage);
                if (statusMessage != null) return;
                //Check locations exists. If not, add and return new locID. If exists, return locID.

                MongoCollection<TripChain> tripChains = resultDB.GetCollection<TripChain>("tripChains");
                MongoCollection<Location> mgLocations = resultDB.GetCollection<Location>("locations");
                MongoCollection<Mode> mgModes = resultDB.GetCollection<Mode>("modes");
                foreach (TripChainJson tj in locations)
                {
                    locID = CheckLocExists(tj.latitude, tj.longitude, mgLocations, out statusMessage);
                    if (locID == null && statusMessage == null)
                        locID = AddLocation(dbName, dbUserName, dbPassWord, tj, out statusMessage);
                    if (statusMessage != null) return;
                    TripChain tc = new TripChain
                    {
                        tripID = trip.tripID,
                        tripChainID = tj.timestamp.ToString(),
                        locationChainID = locID,
                        timeStamp = tj.timestamp,
                        accuracy = tj.accuracy,
                        altitude = tj.altitude,
                        altitudeAccuracy = tj.altitudeAccuracy,
                        heading = tj.heading,
                        speed = tj.speed
                    };
                    if (isInsert == false) //this trip chain is existed -> remove it -> insert new info with same id (= existed id)
                    {
                        var tripChainQuery = Query<TripChain>.EQ(e => e.tripChainID, tc.tripChainID);
                        if (tripChainQuery != null)
                            tripChains.Remove(tripChainQuery);
                    }
                    tripChains.Insert(tc);
                }

                foreach (TransportModeJson tm in modes)
                {
                    Mode m = new Mode
                    {
                        modeID = tm.time.ToString(),
                        tripID = trip.tripID,
                        timestamp = tm.time,
                        mode = tm.mode
                    };
                    if (isInsert == false) //this trip chain is existed -> remove it -> insert new info with same id (= existed id)
                    {
                        var modeQuery = Query<Mode>.EQ(e => e.timestamp, m.timestamp);
                        if (modeQuery != null)
                            mgModes.Remove(modeQuery);
                    }
                    mgModes.Insert(m);
                }

                MongoCollection<Trip> trips = resultDB.GetCollection<Trip>("trips");
                //tripID will be made from the front end
                Trip newTrip = new Trip
                {
                    tripID = trip.tripID,
                    userID = user.userID,
                    distance = trip.distance,
                    tripDate = trip.tripDate,
                    tripPurposeId = trip.tripPurposeId,
                    tripPurposeName = ((TripPurpose)trip.tripPurposeId).ToString()
                };
                if (isInsert == false) //this trip chain is existed -> remove it -> insert new info with same id (= existed id)
                {
                    var tripQuery = Query<Trip>.EQ(e => e.tripID, newTrip.tripID);
                    if (tripQuery != null)
                        trips.Remove(tripQuery);
                }
                trips.Insert(newTrip);
            }
            catch (Exception e)
            {
                statusMessage += "An exception has occured in InsertTripData method. " + e.Message;
            }
        }
Пример #3
0
        /// <summary>
        /// NOT TESTED
        /// Json object from front-end parse: tripID
        /// </summary>
        /// <param name="dbName"></param>
        /// <param name="userName"></param>
        /// <param name="passWord"></param>
        /// <param name="trip"></param>
        /// <returns>A list of trip chains in the given tripID</returns>
        public List<TripChain> GetTripChains(string dbName, string userName, string passWord, Trip trip)
        {
            List<TripChain> result = null;
            try
            {
                MongoDatabase resultDB = GetMongoDatabase(dbName, userName, passWord);
                if (resultDB == null)
                    throw new Exception();
                MongoCollection<TripChain> tripChains = resultDB.GetCollection<TripChain>("tripChains");

                if (tripChains.Count() > 0)
                {
                    var tripChainsQuery = Query.EQ("tripID", trip.tripID);
                    var existedtripChains = tripChains.Find(tripChainsQuery);
                    //var tripChainsQuery = from tc in tripChains.AsQueryable<TripChain>() where tc.tripID == trip.tripID select tc;
                    if (existedtripChains != null)
                        result = existedtripChains.ToList<TripChain>();
                }
            }
            catch (Exception e)
            {
                //Handle exception
            }
            return result;
        }
Пример #4
0
 public List<TripChain> GetTripChainsOfATripREST(Trip trip)
 {
     throw new NotImplementedException();
 }
Пример #5
0
        public string ExtractTripData(long id, UserLegitimation user, Person person, TripJson trip, out Trip tripData, out List<TripChainJson> locations, out List<TransportModeJson> modes, out string statusMessage)
        {
            statusMessage = null;
            tripData = new Trip();
            locations = new List<TripChainJson>();
            modes = new List<TransportModeJson>();
            try
            {
                tripData.tripID = id.ToString();
                if (trip.meta != null)
                {
                    tripData.tripDate = new DateTime(1970, 1, 1) + new TimeSpan(trip.meta.startTime * 10000);
                    tripData.distance = trip.meta.distance;
                    tripData.tripPurposeId = trip.meta.purpose;
                }
                if (trip.entries != null)
                {
                    foreach (var e in trip.entries)
                    {
                        TripChainJson tcjs = new TripChainJson()
                        {
                            timestamp = e.timestamp,
                            latitude = e.latitude,
                            longitude = e.longitude,
                            altitude = e.altitude,
                            accuracy = e.accuracy,
                            altitudeAccuracy = e.altitudeAccuracy,
                            heading = e.heading,
                            speed = e.speed
                        };
                        locations.Add(tcjs);
                    }
                }

                if (trip.modes != null)
                {
                    foreach (var m in trip.modes)
                    {
                        TransportModeJson tmjs = new TransportModeJson()
                        {
                            time = m.time,
                            mode = m.mode
                        };
                        modes.Add(tmjs);
                    }
                }
            }
            catch (Exception e)
            {
                statusMessage = "An exception has occured in ExtractTripData method. " + e.Message;
            }
            return statusMessage;
        }