Пример #1
0
 public static string GenerateDefaultPassword(SunridgeHOA.Models.Owner owner)
 {
     return("1234");
 }
Пример #2
0
        public static async Task <string> GenerateUsername(UserManager <ApplicationUser> userManager, SunridgeHOA.Models.Owner owner)
        {
            // Find a default username - adds a number to the end if there is a duplicate
            var username = $"{owner.FirstName}{owner.LastName}";

            // Remove unwanted characters
            username = Regex.Replace(username, "[^a-zA-Z0-9]", String.Empty);

            int count = 0;

            while (await userManager.FindByNameAsync(username) != null)
            {
                count++;
                username = $"{username}{count}";
            }

            return(username);
        }
Пример #3
0
        public async Task <IActionResult> CreateMany(BatchOwnerCreateVM vm)
        {
            var validUsers = new List <MinOwnerInfo>();

            // Make sure that at least the first and last name for the primary owner is set
            if (String.IsNullOrEmpty(vm.PrimaryOwner.FirstName) || String.IsNullOrEmpty(vm.PrimaryOwner.LastName))
            {
                ModelState.AddModelError("PrimaryOwner", "Please enter at least one user as a primary owner");
            }
            else
            {
                validUsers.Add(vm.PrimaryOwner);
            }

            foreach (var owner in vm.OwnerList)
            {
                var firstEmpty = String.IsNullOrEmpty(owner.FirstName);
                var lastEmpty  = String.IsNullOrEmpty(owner.LastName);
                // Check that all first names have a last name and vice versa
                if ((firstEmpty && !lastEmpty) || (!firstEmpty && lastEmpty))
                {
                    ModelState.AddModelError("OwnerList", "Make sure all first names have a matching last name");
                }
                else
                {
                    // Add the information to the list so we don't have to check the entire list again
                    validUsers.Add(owner);
                }
            }

            if (ModelState.IsValid)
            {
                var identityUser = await _userManager.GetUserAsync(HttpContext.User);

                var loggedInUser = _context.Owner.Find(identityUser.OwnerId);

                vm.Address.LastModifiedBy   = loggedInUser.FullName;
                vm.Address.LastModifiedDate = DateTime.Now;
                _context.Add(vm.Address);

                foreach (var ownerInfo in validUsers)
                {
                    var owner = new SunridgeHOA.Models.Owner
                    {
                        Address          = vm.Address,
                        FirstName        = ownerInfo.FirstName,
                        LastName         = ownerInfo.LastName,
                        Email            = ownerInfo.Email,
                        LastModifiedBy   = loggedInUser.FullName,
                        LastModifiedDate = DateTime.Now
                    };

                    _context.Add(owner);
                    await _context.SaveChangesAsync();

                    //// Find a default username - adds a number to the end if there is a duplicate
                    //var username = $"{owner.FirstName}{owner.LastName}";
                    //int count = 0;
                    //while (await _userManager.FindByNameAsync(username) != null)
                    //{
                    //    count++;
                    //    username = $"{username}{count}";
                    //}
                    var username = await OwnerUtility.GenerateUsername(_userManager, owner);

                    var defaultPassword = OwnerUtility.GenerateDefaultPassword(owner);

                    // Create user with default credentials
                    //  - Username: FirstnameLastname (e.g. JessBrunker)
                    //  - Password: 1234 (change in Areas/Admin/Data/OwnerUtility.cs)
                    var newOwner = new ApplicationUser
                    {
                        UserName = username,
                        Email    = owner.Email,
                        OwnerId  = owner.OwnerId
                    };

                    //var defaultPassword = $"Sunridge{username}123$";
                    var result = await _userManager.CreateAsync(newOwner, defaultPassword);

                    if (result.Succeeded)
                    {
                        var roles = new List <string> {
                            "Owner"
                        };
                        if (ownerInfo.IsAdmin)
                        {
                            roles.Add("Admin");
                        }
                        ;
                        await _userManager.AddToRolesAsync(newOwner, roles);

                        // Link Owner to the Application User
                        owner.ApplicationUserId = newOwner.Id;
                        //_context.Add(vm.Owner);
                        await _context.SaveChangesAsync();

                        // Add the Owner to a Lot
                        if (vm.LotId != -1)
                        {
                            _context.OwnerLot.Add(new OwnerLot
                            {
                                LotId     = vm.LotId,
                                OwnerId   = owner.OwnerId,
                                StartDate = DateTime.Now,
                                IsPrimary = ownerInfo == vm.PrimaryOwner
                            });

                            await _context.SaveChangesAsync();
                        }
                    }
                }

                return(RedirectToAction(nameof(Index)));
            }

            ViewData["LotsSelect"] = new SelectList(_context.Lot.OrderBy(u => u.LotNumber).ToList(), "LotId", "LotNumber", vm.LotId);
            return(View());
        }