public string AuthenticateActivationCodeREST(UserLegitimation user, string activationCode) { string statusMessage = null; try { MongoDatabase resultDB = GetMongoDatabase(_dbName, _userName, _passWord); if (resultDB == null) { statusMessage = "Database is null"; return statusMessage; } MongoCollection<ActivationCode> activationCodes = resultDB.GetCollection<ActivationCode>("activationCodes"); if (activationCodes != null) { var activationCodeQuery = Query.And(Query.EQ("userName", user.userName), Query.EQ("activationCode", activationCode)); var existedCode = activationCodes.FindOne(activationCodeQuery); if (existedCode == null) statusMessage = "Invalid activation code for this user."; else statusMessage = "ok"; } } catch (Exception e) { statusMessage += "An exception has occured in AuthenticateActivationCodeREST method. " + e.Message; } return statusMessage; }
public string SendEmailForNewPasswordREST(UserLegitimation user) { string statusMessage = null; try { //Create activation code and save to database string activationCode = null; statusMessage = CreateAndSaveActivationCode(_dbName, _userName, _passWord, user.userName, out activationCode); if (statusMessage == "ok") { string from = "*****@*****.**"; string to = user.userName; System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(from, to); msg.Subject = "Reset password"; msg.Body = "Please use this code to activate reset password process: " + activationCode; System.Net.Mail.SmtpClient oSmtpClient = new System.Net.Mail.SmtpClient(); oSmtpClient.Send(msg); statusMessage = "ok"; } } catch (Exception e) { statusMessage = "An exception has occured in SendEmailForNewPasswordREST method. " + e.Message; } return statusMessage; }
public string ResetPasswordREST(UserLegitimation user, string activationCode) { string statusMessage = null; try { statusMessage = AuthenticateActivationCodeREST(user, activationCode); if (statusMessage == "ok") { InsertUser(_dbName, _userName, _passWord, user, false, out statusMessage); if (statusMessage == null) statusMessage = "ok"; } } catch (Exception e) { //Handle exception statusMessage += "An exception has occured in ResetPasswordREST method. " + e.Message; } return statusMessage; }
/// <summary> /// Insert a new user into data storage /// </summary> /// <param name="dbName"></param> /// <param name="dbUserName"></param> /// <param name="dbPassWord"></param> /// <param name="userName"></param> /// <param name="pinCode"></param> /// <param name="gender"></param> /// <param name="birthYear"></param> /// <param name="occupation"></param> /// <param name="travelCard"></param> /// <param name="community"></param> /// <param name="city"></param> /// <param name="phoneNumber"></param> /// <returns>userID</returns> public void InsertUser(string dbName, string dbUserName, string dbPassWord, UserLegitimation user, bool isInsert, out string statusMessage) { statusMessage = null; string userID; try { MongoDatabase resultDB = GetMongoDatabase(dbName, dbUserName, dbPassWord); if (resultDB == null) { statusMessage = "Database is null"; return; } MongoCollection<UserLegitimation> users = resultDB.GetCollection<UserLegitimation>("users"); userID = CheckUserExists(user.userName, users, out statusMessage); if (userID != null) { if (isInsert) { statusMessage = "Username is taken."; return; } else //remove the current user and insert new row with same userID and userName, only different pincode { var userQuery = Query.EQ("_id", userID); if (userQuery != null) users.Remove(userQuery); } } if (isInsert) userID = MakeId(user.userName, user.pinCode); UserLegitimation newUser = new UserLegitimation { userID = userID, userName = user.userName, pinCode = user.pinCode }; users.Insert(newUser); } catch (Exception e) { //Handle exception statusMessage = "An exception has occured in InsertUser method. " + e.Message; } }
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; } }
public string InsertNewUserREST(UserLegitimation user) { string statusMessage = null; try { InsertUser(_dbName, _userName, _passWord, user, true, out statusMessage); if (statusMessage == null) statusMessage = "ok"; } catch (Exception e) { //Handle exception statusMessage += "An exception has occured in InsertNewUserREST method. " + e.Message; } return statusMessage; }
public void DeleteTrip(UserLegitimation target, MongoDatabase resultDB) { MongoCollection<Trip> trips = resultDB.GetCollection<Trip>("trips"); MongoCollection<TripChain> tripChains = resultDB.GetCollection<TripChain>("tripChains"); MongoCollection<Mode> modes = resultDB.GetCollection<Mode>("modes"); var tripsQuery = Query.EQ("userID", target.userID); var existedTrips = trips.Find(tripsQuery); if (existedTrips != null) { List<Trip> userTrips = existedTrips.ToList<Trip>(); if (userTrips != null && userTrips.Count > 0) { foreach (Trip t in userTrips) { var tripChainsQuery = Query<TripChain>.EQ(e => e.tripID, t.tripID); if (tripChainsQuery != null) tripChains.Remove(tripChainsQuery); var modeQuery = Query<Mode>.EQ(e => e.tripID, t.tripID); if (modeQuery != null) modes.Remove(modeQuery); } } tripsQuery = Query<Trip>.EQ(e => e.userID, target.userID); trips.Remove(tripsQuery); } }
public void UpdateUser(string dbName, string dbUserName, string dbPassWord, UserLegitimation user, Person person, out string statusMessage) { statusMessage = null; try { MongoDatabase resultDB = GetMongoDatabase(dbName, dbUserName, dbPassWord); if (resultDB == null) { statusMessage = "Database is null"; return; } user.userID = AuthenticateUser(_dbName, _userName, _passWord, user, out statusMessage); if (statusMessage != null) return; MongoCollection<Person> persons = persons = resultDB.GetCollection<Person>("persons"); if (persons.Count() > 0) { var personQuery = Query<Person>.EQ(e => e.userID, user.userID); if (personQuery != null) { persons.Remove(personQuery); } } Person newPerson = new Person { userID = user.userID, GenderId = person.GenderId, birthyearId = person.birthyearId, occupationId = person.occupationId, residenceId = person.residenceId, areaId = person.areaId, numChildrenId = person.numChildrenId, maritalStatusId = person.maritalStatusId, subscriptionId = person.subscriptionId }; if (newPerson.birthyearId == 0) newPerson.birthyearName = "NotProvided"; else if (newPerson.birthyearId == 1) newPerson.birthyearName = "Under18"; else newPerson.birthyearName = newPerson.birthyearId.ToString(); newPerson.GenderName = ((Gender)newPerson.GenderId).ToString(); newPerson.occupationName = ((Occupation)newPerson.occupationId).ToString(); newPerson.residenceName = ((Residence)newPerson.residenceId).ToString(); newPerson.areaName = ((Area)newPerson.areaId).ToString(); newPerson.numChildrenName = ((NumberOfChildren)newPerson.numChildrenId).ToString(); newPerson.maritalStatusName = ((MaritalStatus)newPerson.maritalStatusId).ToString(); newPerson.subscriptionName = ((Subscription)newPerson.subscriptionId).ToString(); persons.Insert(newPerson); } catch (Exception e) { statusMessage += "An exception has occured in UpdateUser method. " + e.Message; } }
public List<Trip> GetTripsByDateREST(UserLegitimation user, DateTime date) { throw new NotImplementedException(); }
/// <summary> /// NOT TESTED /// Json object from front-end parse: userID /// </summary> /// <param name="dbName"></param> /// <param name="userName"></param> /// <param name="passWord"></param> /// <param name="user">json object</param> /// <returns>the Person object of the given userID</returns> public Person GetPersonByUserId(string dbName, string userName, string passWord, UserLegitimation user) { MongoCollection<Person> persons = null; Person result = null; try { MongoDatabase resultDB = GetMongoDatabase(dbName, userName, passWord); if (resultDB == null) throw new Exception(); persons = resultDB.GetCollection<Person>("persons"); if (persons.Count() > 0) { var personQuery = Query.EQ("userID", user.userID); var existedPerson = persons.FindOne(personQuery); //var personQuery = from p in persons.AsQueryable<Person>() where p.userID == user.userID select p; if (existedPerson != null) result = existedPerson as Person; } } catch (Exception e) { //Handle exception } return result; }
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; }
public string DeleteUserREST(UserLegitimation user) { //delete userlegitimation, person, trips, tripChains, modes, activationcode string statusMessage = null; UserLegitimation target = null; try { MongoDatabase resultDB = GetMongoDatabase(_dbName, _userName, _passWord); if (resultDB == null) { statusMessage = "Database is null"; return statusMessage; } AuthenticateUser(_dbName, _userName, _passWord, user, out statusMessage); if (statusMessage != null) return statusMessage; MongoCollection<UserLegitimation> users = resultDB.GetCollection<UserLegitimation>("users"); if (users != null) { var userQuery = Query.EQ("userName", user.userName); var existedUser = users.FindOne(userQuery); if (existedUser != null) { target = (existedUser as UserLegitimation); MongoCollection<Person> persons = resultDB.GetCollection<Person>("persons"); var personQuery = Query<Person>.EQ(e => e.userID, target.userID); if (personQuery != null) persons.Remove(personQuery); MongoCollection<ActivationCode> activationCodes = resultDB.GetCollection<ActivationCode>("activationCodes"); var codeQuery = Query<ActivationCode>.EQ(e => e.userName, user.userName); if (codeQuery != null) activationCodes.Remove(codeQuery); DeleteTrip(target, resultDB); userQuery = Query<UserLegitimation>.EQ(e => e.userName, user.userName); users.Remove(userQuery); statusMessage = "ok"; } else statusMessage += "Invalid user."; } } catch (Exception e) { statusMessage += "An exception has occured in DeleteUserREST method. " + e.Message; } return statusMessage; }
public string DeleteTripByIdREST(UserLegitimation user, long id) { string statusMessage = null; try { MongoDatabase resultDB = GetMongoDatabase(_dbName, _userName, _passWord); if (resultDB == null) { statusMessage = "Database is null"; return statusMessage; } AuthenticateUser(_dbName, _userName, _passWord, user, out statusMessage); if (statusMessage != null) return statusMessage; MongoCollection<Trip> trips = resultDB.GetCollection<Trip>("trips"); MongoCollection<TripChain> tripChains = resultDB.GetCollection<TripChain>("tripChains"); MongoCollection<Mode> modes = resultDB.GetCollection<Mode>("modes"); if (trips != null) { var tripChainsQuery = Query<TripChain>.EQ(e => e.tripID, id.ToString()); if (tripChainsQuery != null) tripChains.Remove(tripChainsQuery); var modeQuery = Query<Mode>.EQ(e => e.tripID, id.ToString()); if (modeQuery != null) modes.Remove(modeQuery); var tripQuery = Query<Trip>.EQ(e => e.tripID, id.ToString()); if (tripQuery != null) { trips.Remove(tripQuery); statusMessage = "ok"; } else statusMessage = "Cannot find this trip."; } } catch (Exception e) { statusMessage += "An exception has occured in DeleteTripByIdREST method. " + e.Message; } return statusMessage; }
/// <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; }
/// <summary> /// NOT TESTED /// Json object from front-end parse: userID /// </summary> /// <param name="dbName"></param> /// <param name="userName"></param> /// <param name="passWord"></param> /// <param name="user">json object</param> /// <returns>list of trips of this users</returns> public List<Trip> GetTripsByUserId(string dbName, string userName, string passWord, UserLegitimation user) { List<Trip> result = null; MongoCollection<Trip> trips = null; try { MongoDatabase resultDB = GetMongoDatabase(dbName, userName, passWord); if (resultDB == null) throw new Exception(); trips = resultDB.GetCollection<Trip>("trips"); if (trips.Count() > 0) { //var tripsQuery = from t in trips.AsQueryable<Trip>() where t.userID == user.userID select t; var tripsQuery = Query.EQ("userID", user.userID); var existedTrips = trips.Find(tripsQuery); if (existedTrips != null) result = existedTrips.ToList<Trip>(); } } catch (Exception e) { //Handle exception } return result; }
/// <summary> /// Json object from front-end parses: username, pincode /// if user exists returns userID /// if user not exists returns null /// </summary> /// <param name="user"></param> /// <returns>userID</returns> public string AuthenticateUser(string dbName, string userName, string passWord, UserLegitimation user, out string statusMessage) { statusMessage = null; string result = null; try { MongoDatabase resultDB = GetMongoDatabase(dbName, userName, passWord); if (resultDB == null) { statusMessage = "Database is null"; return result; } MongoCollection<UserLegitimation> users = resultDB.GetCollection<UserLegitimation>("users"); if (users.Count() > 0) { var userQuery = Query.And(Query.EQ("userName", user.userName), Query.EQ("pinCode", user.pinCode)); var existedUser = users.FindOne(userQuery); if (existedUser != null) result = (existedUser as UserLegitimation).userID; } if (result == null) { statusMessage = "Cannot authenticate this user."; } } catch (Exception e) { statusMessage += Environment.NewLine + "An exception has occured in AuthenticateUser method. " + e.Message; } return result; }
public List<Trip> GetTripsByUserIdREST(UserLegitimation user) { throw new NotImplementedException(); }
public string UpdateUserREST(UserLegitimation user, Person person) { string statusMessage = null; try { UpdateUser(_dbName, _userName, _passWord, user, person, out statusMessage); if (statusMessage == null) statusMessage = "ok"; } catch (Exception e) { //Handle exception statusMessage += "An exception has occured in UpdateUserREST method. " + e.Message; } //if (statusMessage != null) // File.AppendAllText(@"C:\logs.txt", Environment.NewLine + "<statusMessage - " + DateTime.Now + ">: " + statusMessage); return statusMessage; }
public string DeleteAllTripsREST(UserLegitimation user) { string statusMessage = null; UserLegitimation target = null; try { MongoDatabase resultDB = GetMongoDatabase(_dbName, _userName, _passWord); if (resultDB == null) { statusMessage = "Database is null"; return statusMessage; } AuthenticateUser(_dbName, _userName, _passWord, user, out statusMessage); if (statusMessage != null) return statusMessage; MongoCollection<UserLegitimation> users = resultDB.GetCollection<UserLegitimation>("users"); if (users != null) { var userQuery = Query.EQ("userName", user.userName); var existedUser = users.FindOne(userQuery); if (existedUser != null) { target = (existedUser as UserLegitimation); DeleteTrip(target, resultDB); statusMessage = "ok"; } else statusMessage += "Invalid user."; } } catch (Exception e) { statusMessage += "An exception has occured in DeleteAllTripsREST method. " + e.Message; } return statusMessage; }