public void HouseHoldCreatePass()
        {
            //Arrange
            bool expected = true;
            //Act
            Account testAccount = new Account("testerEmail", "testHashedPassword", "testSalt");

            DeleteUser(testAccount.UserEmail);
            DeleteMapping(testAccount.UserEmail);
            DeleteAccount(testAccount.UserEmail);

            CreateAccountDAOs     daos = new CreateAccountDAOs(newAccountDAO, newMappingDAO, newUserDAO, mapperDAO);
            ICreateAccountService cas  = new SqlCreateAccountService(testAccount, daos);
            HouseHoldManager      mr   = new HouseHoldManager();

            cas.Create();
            int  sid      = mapperDAO.GetSysID("testerEmail");
            User testUser = new User(sid, "testerEmail", "testerFname", "testerLname", "Enable", DateTime.Today, "Male");
            HouseholdCreationRequestDTO request = new HouseholdCreationRequestDTO
            {
                Requester     = "testerEmail",
                StreetAddress = "TestStreetAddress",
                City          = "TestCity",
                Zip           = 92868,
                SuiteNumber   = "TestSuiteNumber",
                Rent          = 1500.00
            };
            IResult result = mr.CreateNewHouseHold(request);

            Console.WriteLine("New HouseHold ID is: " + result.Message);
            int hID = Int32.Parse(result.Message);

            Console.WriteLine("New HouseHold ID is: " + result.Message);
            DeleteUser(testAccount.UserEmail);
            DeleteMapping(testAccount.UserEmail);
            DeleteAccount(testAccount.UserEmail);
            mr.DeleteHouseHold(hID);
            bool actual = result.IsSuccess;

            //Assert
            Assert.AreEqual(expected, actual);
        }
        //Create a new acccount and a matching user. Execute deletion for a single user.
        public void DeleteSingleUser_Pass()
        {
            //Arrange
            bool expected = true;

            Account               testAccount = new Account("tester1Email", "testHashedPassword", "testSalt");
            CreateAccountDAOs     daos        = new CreateAccountDAOs(newAccountDAO, newMappingDAO, newUserDAO, mapperDAO);
            ICreateAccountService cas         = new SqlCreateAccountService(testAccount, daos);

            cas.Create();
            User testUser = new User(mapperDAO.GetSysID(testAccount.UserEmail), "tester1Email", "Collin", "Damarines", "Activated", DateTime.Now, "Male");

            //Act
            IDeleteAccountService deleter = new DeleteAccountSQLService(testUser, systemDB, mappingDB, accountDB);
            IResult deleteResult          = deleter.Delete();
            bool    actual = deleteResult.IsSuccess;

            Console.WriteLine(deleteResult.Message);

            //Assert
            Assert.AreEqual(expected, actual);
        }
        /// <summary>
        /// Method that gonna craft query for account, mapping and user table. After a new account is created, the new
        /// sysID will be used to create a mapping and then based on the mapping, a new user will be created.
        /// </summary>
        ///<returns>IResult true or false with error message</returns>
        public IResult Create()
        {
            string message        = "";
            bool   isSuccess      = true;
            int    totalSuccessed = 0;

            foreach (Account newAccount in _newAccounts)
            {
                var cmd = new SqlCommand(ConfigurationManager.AppSettings["queryCreateAccount"]);
                cmd.Parameters.AddWithValue("@email", newAccount.UserEmail);
                cmd.Parameters.AddWithValue("@hashedPw", newAccount.HashedPassword);
                cmd.Parameters.AddWithValue("@salt", newAccount.Salt);

                int rowsChanged = newAccountDAO.RunQuery(cmd);
                if (rowsChanged > 0)
                {
                    cmd = new SqlCommand(ConfigurationManager.AppSettings["queryCreateMapping"]);
                    cmd.Parameters.AddWithValue("@email", newAccount.UserEmail);
                    rowsChanged = newMappingDAO.RunQuery(cmd);
                    if (rowsChanged > 0)
                    {
                        int sysID = mapperDAO.GetSysID(newAccount.UserEmail);

                        if (sysID != -1)
                        {
                            cmd = new SqlCommand(ConfigurationManager.AppSettings["queryCreateUser"]);
                            cmd.Parameters.AddWithValue("@sysId", sysID);
                            cmd.Parameters.AddWithValue("@email", newAccount.UserEmail);
                            cmd.Parameters.AddWithValue("@status", "Enable");
                            rowsChanged = newUserDAO.RunQuery(cmd);
                            if (rowsChanged > 0)
                            {
                                totalSuccessed += 1;
                            }
                            else
                            {
                                message += "failed create user for " + newAccount.UserEmail + "\n"; //Environment.newline
                            }
                        }
                    }
                    else
                    {
                        message += "failed create mapping for " + newAccount.UserEmail + "\n"; //str concat memory inefficient --> stringbuilder
                    }
                }
                else
                {
                    message += newAccount.UserEmail + "\n"; //inversion--> if (rowsChanged < 0)
                    //use break/continue
                }
            }


            if (totalSuccessed == _newAccounts.Count)
            {
                message = ConfigurationManager.AppSettings["CreateAccountSuccess"];
            }
            else
            {
                isSuccess = false;
            }
            return(new CheckResult(message, isSuccess));
        }