/// <summary>
        /// constructor that creates a user object identified by the data from the user with the given email-password-combination
        /// </summary>
        /// <param name="email">email address the user uses to login</param>
        /// <param name="password">users password to login</param>
        /// <returns>the user object if password/email match, otherwise null</returns>
        public UserModel(string email, string password)
        {
            var service = new UtilityService();
            string hashedPassword = service.GetMd5Hash(password);
            ml_User user = null;
            using (MuscleLogContext context = new MuscleLogContext())
            {
                user = context.ml_User.Where(u => u.userEmail == email && u.userPassword == hashedPassword).FirstOrDefault();
            }

            if(user != null) {
                // set values if user/password combination is correct
                userEmail = user.userEmail;
                userName = user.userName;
                userStatus = (Util.Enum.UserStatus)(user.userStatus ?? 100);
                _userID = user.ID;
            } else {
                // otherwise set UserID to -1 and indicate a non-existant user
                _userID = -1;
            }
        }
 /// <summary>
 /// laedt ein UserModel-Object anhand der Login Daten
 /// </summary>
 /// <param name="email">Login-Email</param>
 /// <param name="password">Login-Passwort</param>
 /// <returns>Gibt das UserModel bei erfolgreichen Login zurueck, andernfalls NULL</returns>
 public ml_User Load(string email, string password)
 {
     var service = new UtilityService();
     string hashedPwd = service.GetMd5Hash( password );
     var userObject = _repo.GetAll(u => u.userEmail == email && u.userPassword == hashedPwd).FirstOrDefault();
     if (userObject == null)
     {
         throw new muscle_log.framework.Exceptions.InvalidCredentialsException("The e-mail-address or the password are incorrect.");
     }
     return userObject;
 }
        public ActionResult SaveUserInfo(UserInfoSettings model, FormCollection formData)
        {
            var utilityService = new UtilityService();

            // Formular-Daten validieren
            if (ModelState.IsValid)
            {
                bool errors = false;

                // custom validation
                if (model.Password != null && !model.Password.Equals(model.PasswordConfirm) && !String.IsNullOrEmpty(model.Password.Trim()))
                {
                    ModelState.AddModelError("passwordsUnequal", "Die Passwörter stimmen nicht überein.");
                    errors = true;
                }

                if (!utilityService.ValidateDatetime(model.Birthday) && model.Birthday != null)
                {
                    ModelState.AddModelError("birthdayInvalid", "Der angegebene Geburtstag ist kein gültiges Datum.");
                    errors = true;
                }

                if (!errors)
                {

                    // Daten fuer CurrentUser speichern
                    CurrentUser.birthday = DateTime.Parse(model.Birthday);
                    CurrentUser.firstName = model.FirstName;
                    CurrentUser.lastName = model.LastName;
                    CurrentUser.userName = model.UserName;

                    if (model.Password != null && !String.IsNullOrEmpty(model.Password.Trim()))
                    {
                        CurrentUser.userPassword = utilityService.GetMd5Hash(model.Password);
                    }
                    _service.Save(CurrentUser);
                    _unitOfWork.SaveChanges();
                }
            }

            return View("Settings");
        }