public void LockUserTest()
        {
            var testUser    = GetTestUser();
            var testCompany = GetTestCompany(testUser);

            // Create a record
            var model = GetTestUser(true, false);

            var error = MembershipManagementService.InsertOrUpdateUser(model, testUser, "");

            Assert.IsTrue(!error.IsError, $"Error: {error.Message}");

            // Get the current Lock
            string lockGuid = MembershipManagementService.LockUser(model);

            Assert.IsTrue(!string.IsNullOrEmpty(lockGuid), "Error: Lock record was not found");

            // Simulate another user updating the record
            var otherUser = GetTestUser();

            error = MembershipManagementService.InsertOrUpdateUser(model, otherUser, lockGuid);
            Assert.IsTrue(!error.IsError, error.Message);

            // Now get the first user to update the record
            error = MembershipManagementService.InsertOrUpdateUser(model, testUser, lockGuid);
            Assert.IsTrue(error.IsError, "Error: The lock should have caused an error as it has changed");

            // Try to update with the new lock
            lockGuid = MembershipManagementService.LockUser(model);
            error    = MembershipManagementService.InsertOrUpdateUser(model, testUser, lockGuid);
            Assert.IsTrue(!error.IsError, $"Error: {error.Message}");
        }
 public ActionResult Save(EditUserViewModel model, string command)
 {
     if (command.ToLower() == "save")
     {
         var modelError = MembershipManagementService.InsertOrUpdateUser(model.UserData, CurrentUser, model.LGS);
         if (modelError.IsError)
         {
             prepareEditModel(model, model.UserData.Id);
             model.SetErrorOnField(ErrorIcon.Error,
                                   modelError.Message,
                                   "UserData_" + modelError.FieldName);
             return(View("MyOptions", model));
         }
         else
         {
             // Return to dashboard
             model.SetError(ErrorIcon.Information, EvolutionResources.infChangesSuccessfullySaved, null, null, null, null, true);
             return(RedirectToAction("Index", "Home"));
         }
     }
     else
     {
         // Return to dashboard
         return(RedirectToAction("Index", "Home"));
     }
 }
        public void FindUserListItemModelTest()
        {
            // Warning: This test can fail if another test is creating users at the same time
            //          This occurs because users are global and not specific to an organisation,
            //          otherwise we segment users off into a separate test organisation.
            var user        = GetTestUser();
            var testCompany = GetTestCompany(user);
            var model       = MembershipManagementService.FindUserListItemModel();
            var dbData      = db.FindUsers();

            int expected = dbData.Count(),
                actual   = model.Count();

            Assert.IsTrue(actual == expected, $"Error: {actual} items were found when {expected} were expected");

            // Check that all the items match
            foreach (var item in model)
            {
                var dbItem = dbData.Where(m => m.Id.ToString() == item.Id).FirstOrDefault();
                Assert.IsTrue(dbItem != null, "Error: Model item not found in db item list");

                var test = MembershipManagementService.MapToModel(dbItem);
                AreEqual(item, test);
            }

            // Add another item a make sure it is found
            var newItem = GetTestUser(true, false);
            var error   = MembershipManagementService.InsertOrUpdateUser(newItem, user, "");

            Assert.IsTrue(!error.IsError, $"Error: {error.Message}");

            model = MembershipManagementService.FindUserListItemModel();
            var testItem = model.Where(i => i.Id.ToString() == newItem.Id.ToString()).FirstOrDefault();

            Assert.IsTrue(testItem != null, "Error: A NULL value was returned when a non-NULL value was expected");

            // Delete it and make sure it disappears
            MembershipManagementService.DeleteUser(newItem.Id);

            model    = MembershipManagementService.FindUserListItemModel();
            testItem = model.Where(i => i.Id == newItem.Id.ToString()).FirstOrDefault();
            Assert.IsTrue(testItem == null, "Error: A non-NULL value was returned when a NULL value was expected");
        }