public async Task <List <ValidationResult> > CreateMarketerUser(LandLordSetUpUser model)
        {
            _logger.Log(LogLevel.Debug, "Creating new Marketer User", model);
            Enum.TryParse(typeof(UserTypes), model.UserType.ToString(), out object userType);

            try
            {
                var user = new ImanageUser()
                {
                    UserName    = model.Email,
                    LastName    = model.Name,
                    FirstName   = model.Name,
                    MiddleName  = model.Name,
                    Gender      = 1,
                    Email       = model.Email,
                    UserType    = (UserTypes)userType,
                    PhoneNumber = model.PhoneNumber,
                    //TwoFactorEnabled = true
                };
                var status = await CreateIdentityUser(user);

                if (status.Any())
                {
                    return(status);
                }
                //Create new Account
                var account = new Account
                {
                    Name         = model.Name,
                    Address      = model.Address,
                    PhoneNumber  = model.PhoneNumber,
                    PhoneNumber2 = model.PhoneNumber2,
                    Website      = model.Website,
                    Email        = model.Email,
                    CAC          = model.CAC,
                    NIN          = model.NIN,
                    AccountType  = Enums.AccountType.LandLord,
                    Status       = Enums.AccountStatus.PendingVerification,
                    User_Id      = user.Id
                };
                var status2 = await AddAsync(account);

                model.Id        = user.Id.ToString();
                model.AccountId = account.Id.ToString();
                //Add Claims
                await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim(ClaimTypesHelper.AccountId, account.Id.ToString()));

                //Broadcast new user (accountId)

                /*await _producerClient.Produce("new_marketer", new BusMessage
                 * {
                 *  BusMessageType = (int)BusMessageTypes.NEW_MARKETER,
                 *  Data = JsonConvert.SerializeObject(model)
                 * });*/
                //Send Email Confirmation

                /*var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                 * code = WebUtility.UrlEncode(code);
                 * await SendMessage("email", BusMessageTypes.USER_MSG, new UserEmailTokenViewModel
                 * {
                 *  Code = code,
                 *  User = user,
                 *  EmailType = EmailTypeEnum.UserEmailActivation
                 * });*/

                //Activate User and Confirm Email
                //user.Activated = true;
                //user.EmailConfirmed = true;
                await _userManager.UpdateAsync(user);


                //send Password Reset Email
                await _userService.RequestPasswordReset(user.Email);

                return(results);
            }
            catch (Exception ex)
            {
                _logger.Log(LogLevel.Error, "Failed to create new Marketer User", model);
                results.Add(new ValidationResult(ex.Message));
                model.IsValid = false;
                return(results);
            }
        }
        public async Task <List <ValidationResult> > ValidatePEFUserRegistrationModel(LandLordSetUpUser model)
        {
            try
            {
                var user = await _userManager.FindByEmailAsync(model.Email);

                if (user != null)
                {
                    results.Add(new ValidationResult($"User with Email {model.Email} already exists"));
                    model.IsValid = false;
                    return(results);
                }
                model.IsValid = true;
                return(results);
            }
            catch (Exception e)
            {
                //TODO Log Error
                results.Add(new ValidationResult(e.Message));
                model.IsValid = false;
                return(results);
            }
        }