Ejemplo n.º 1
0
        /// <summary>
        /// Adds pool to a users poolSet.
        /// </summary
        /// <param name="email">The email of the user to recieve the pool</param>
        /// <param name="name">The pools name</param>
        /// <param name="volume">the pools volume</param>
        /// <returns>true on succes, false on fail</returns>
        public bool AddPool(string email, string name, double volume)
        {
            if (name == "")
            {
                return false;
            }
            if (IsPoolNameAvailable(email, name) == false)
            {
                return false;
            }
            if (volume < 0)
            {
                return false;
            }

            Pool newPool = new Pool { Name = name, Volume = volume, UserId = UserAccess.FindUserByEmail(email).Id };

            using (var db = new DatabaseContext())
            {
                db.PoolSet.Add(newPool);
                db.SaveChanges();
            }

            return true;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates a data entry with all types of data
        /// </summary>
        /// <param name="ownerEmail"></param>
        /// <param name="poolName"></param>
        /// <param name="chlorine"></param>
        /// <param name="temp"></param>
        /// <param name="pH"></param>
        /// <param name="humidity"></param>
        /// <returns></returns>
        public bool CreateDataEntry(string ownerEmail, string poolName, double chlorine, double temp, double pH, double humidity)
        {
            // make value checks here!

            if (PoolAccess.IsPoolNameAvailable(ownerEmail, poolName) == true) return false;

            using (var db = new DatabaseContext())
            {
                // find pool to add mesurements for
                int userId = PoolAccess.FindSpecificPool(ownerEmail, poolName).UserId;

                var poolsearch = from pools in db.PoolSet
                                 where pools.UserId == userId && pools.Name == poolName
                                 select pools;

                // create 'Data' entity to store measurements in
                string time = DateTime.UtcNow.ToString();
                var newData = new Data() { PoolId = poolsearch.First().Id, Timestamp = time };
                db.DataSet.Add(newData);
                db.SaveChanges();   // the newdata must be saved to db, so that mesurement can find it by PK

                // get latest dataset from db
                var datasearch = from data in db.DataSet
                                 where data.Timestamp == time
                                 select data;

                // check for errors in datasearch
                if (datasearch.Count() > 1) return false;

                // create measurements
                var newChlorine = new Chlorine() { DataId = datasearch.First().Id, Value = chlorine };
                var newTemperature = new Temperature() { DataId = datasearch.First().Id, Value = temp };
                var newPH = new pH() { DataId = datasearch.First().Id, Value = pH };
                var newHumidity = new Humidity() { DataId = datasearch.First().Id, Value = humidity };

                // add mesurements to db
                db.ChlorineSet.Add(newChlorine);
                db.TemperatureSet.Add(newTemperature);
                db.pHSet.Add(newPH);
                db.HumiditySet.Add(newHumidity);

                db.SaveChanges();
            }

            return true;
        }
Ejemplo n.º 3
0
        public bool EditUserEmail(string email, string newEmail)
        {
            if (!IsEmailInUse(email) || newEmail.Length == 0)
            {
                return false;
            }

            using (var db = new DatabaseContext())
            {
                var original = db.UserSet.Find(FindUserByEmail(email).Id);
                if (original != null)
                {
                    original.Email = newEmail;
                    db.SaveChanges();
                }
            }
            return true;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Adds a 'User'-entry to database.
        /// </summary>
        /// <param name="fullname">String containing 2 or 3 names for user.</param>
        /// <param name="email">Email for user, only one user may exist per email.</param>
        /// <param name="password">Password for user.</param>
        /// <returns>Returns true is the user could be added to the database, false if the email is used.</returns>
        public bool AddUser(string fullname, string email, string password)
        {
            #region Checking 'email' and creating instance of 'User'

            if (IsEmailInUse(email))
            {
                return false;
            }

            User user;

            if (!ValidateName(fullname))
            {
                return false;
            }

            string[] names = fullname.Split(' ');

            if (names.Length <= 2)
            {
                user = new User() { Firstname = names[0], Lastname = names[1], Email = email, Password = password };
            }
            else
            {
                user = new User() { Firstname = names[0], Middelname = names[1], Lastname = names[2], Email = email, Password = password };
            }

            #endregion

            using (var db = new DatabaseContext())
            {
                db.UserSet.Add(user);
                db.SaveChanges();
            }

            return true;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Edits name of a pool.
        /// </summary>
        /// <param name="ownerEmail">Email of owner.</param>
        /// <param name="currentName">Current name of the pool.</param>
        /// <param name="newName">The new name, which should be set for pool.</param>
        /// <returns>True on success, false on fail</returns>
        public bool EditPoolName(string ownerEmail, string currentName, string newName)
        {
            if (newName == "") return false;
            if (!IsPoolNameAvailable(ownerEmail, newName)) return false;

            using (var db = new DatabaseContext())
            {
                var searchForPool = from pool in db.PoolSet
                                    where pool.User.Email == ownerEmail && pool.Name == currentName
                                    select pool;

                if (searchForPool.Any() == false) return false;

                searchForPool.First().Name = newName;

                db.SaveChanges();
            }

            return true;
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Removes a specific pool
        /// </summary>
        /// <param name="email">Identifies the administrating user</param>
        /// <param name="name">identifies the name of the pool</param>
        public bool RemovePool(string email, string name)
        {
            if (IsPoolNameAvailable(email, name))
            {
                return false;
            }

            using (var db = new DatabaseContext())
            {
                var searchForPool = from pool in db.PoolSet
                                    where pool.Name == name
                                    select pool;

                foreach (Pool pool in searchForPool)
                {
                    if (pool.UserId == UserAccess.FindUserByEmail(email).Id)
                    {
                        db.PoolSet.Remove(pool);
                    }
                }

                db.SaveChanges();
            }

            return true;
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Edits volume of pool.
        /// </summary>
        /// <param name="ownerEmail">Email of owner.</param>
        /// <param name="name">Name of pool to change value for.</param>
        /// <param name="newVolume">New value to be set.</param>
        /// <returns>True on success, false on fail</returns>
        public bool EditPoolVolume(string ownerEmail, string name, double newVolume)
        {
            if (newVolume <= 0) return false;

            using (var db = new DatabaseContext())
            {
                var searchForPool = from pool in db.PoolSet
                                    where pool.User.Email == ownerEmail && pool.Name == name
                                    select pool;

                if (searchForPool.Any() == false) return false;

                searchForPool.First().Volume = newVolume;

                db.SaveChanges();
            }

            return true;
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Changes owner of pool.
        /// </summary>
        /// <param name="currectOwnerEmail">Email of current owner.</param>
        /// <param name="name">Name of pool to change value for.</param>
        /// <param name="newUserEmail">New value to be set.</param>
        /// <returns>True on success, false on fail</returns>
        public bool EditPoolUser(string currectOwnerEmail, string name, string newUserEmail)
        {
            if (IsPoolNameAvailable(currectOwnerEmail, name) == true) return false;
            if (UserAccess.IsEmailInUse(newUserEmail) == false) return false;
            if (IsPoolNameAvailable(newUserEmail, name) == false) return false;

            using (var db = new DatabaseContext())
            {
                var searchForPool = from pool in db.PoolSet
                                    where pool.User.Email == currectOwnerEmail && pool.Name == name
                                    select pool;

                searchForPool.First().UserId = UserAccess.FindUserByEmail(newUserEmail).Id;

                db.SaveChanges();
            }

            return true;
        }
Ejemplo n.º 9
0
        public void FindUserByEmail_TwoUsersWithSameEmailExistInDB_ThrowsMultipleOccourencesOfEmailWasFoundException()
        {
            User user1 = new User() { Firstname = "John", Middelname = "Derp", Lastname = "Herpson", Email = "email", Password = "******" };
            User user2 = new User() { Firstname = "Simon", Middelname = "Siggy", Lastname = "Sergson", Email = "email", Password = "******" };

            using (var db = new DatabaseContext())
            {
                db.UserSet.Add(user1);
                db.UserSet.Add(user2);
                db.SaveChanges();
            }

            Assert.Throws<MultipleOccourencesOfEmailWasFoundException>(() => _uut.FindUserByEmail("email"));
        }
Ejemplo n.º 10
0
        public void Setup()
        {
            _userAccess = new UserAccess();
            _uut = new PoolAccess(_userAccess);

            _testUser1 = new User() { Firstname = "John", Middelname = "Derp", Lastname = "Andersen", Email = "*****@*****.**", Password = "******" };
            _testUser2 = new User() { Firstname = "Sire", Middelname = "Herp", Lastname = "Jensenei", Email = "*****@*****.**", Password = "******" };

            using (var db = new DatabaseContext())
            {
                db.UserSet.Add(_testUser1);
                db.UserSet.Add(_testUser2);
                db.SaveChanges();
            }
        }
Ejemplo n.º 11
0
        public bool EditUserName(string email, string newName)
        {
            if (!IsEmailInUse(email))
            {
                return false;
            }

            string[] names = newName.Split(' ');
            if (names.Length < 2)
            {
                return false;
            }

            using (var db = new DatabaseContext())
            {
                var original = db.UserSet.Find(FindUserByEmail(email).Id);

                if (original != null)
                {
                    if (names.Length == 2)
                    {
                        original.Firstname = names[0];
                        original.Middelname = null;
                        original.Lastname = names[1];
                    }

                    if (names.Length == 3)
                    {
                        original.Firstname = names[0];
                        original.Middelname = names[1];
                        original.Lastname = names[2];
                    }
                    db.SaveChanges();
                }
            }
            return true;
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Method will search for a User with argument email and remove
        /// user from database.
        /// </summary>
        /// <param name="email">Email of user to be deleted from database.</param>
        public void RemoveUser(string email)
        {
            using (var db = new DatabaseContext())
            {
                if (!IsEmailInUse(email))
                {
                    throw new UserNotFoundException();
                }

                var removeUserByEmail = from user in db.UserSet
                                        where user.Email == email
                                        select user;

                foreach (var user in removeUserByEmail)
                {
                    db.UserSet.Remove(user);
                }

                db.SaveChanges();
            }
        }