Пример #1
0
        public async Task <IActionResult> Edit(EditUserViewModel input)
        {
            var account = await _userManager.FindByNameAsync(input.UserName);

            var user = _pulseContext.User.Where(u => u.AccountId == account.Id).ToList()[0];

            if (ModelState.IsValid)
            {
                account.Email       = account.Email;
                user.Name           = input.Name;
                account.PhoneNumber = input.PhoneNumber;
                user.Location       = input.Location;

                var result = await _userManager.UpdateAsync(account);

                if (result.Succeeded)
                {
                    await _userManager.RemoveFromRoleAsync(account, (await _userManager.GetRolesAsync(account))[0].ToString());

                    await _userManager.AddToRoleAsync(account, input.Role);

                    await _pulseContext.SaveChangesAsync();
                }
            }
            return(RedirectToAction("Index", "Index"));
        }
        public async Task <IActionResult> Delete(string Id)
        {
            var account = await _userManager.FindByIdAsync(Id);

            var user = _pulseContext.User.Where(u => u.AccountId == Id).ToList()[0];

            var messages = _pulseContext.Message.Where(m => m.ReceiverId == user.Id || m.SenderId == user.Id).ToList();

            foreach (var message in messages)
            {
                _pulseContext.Remove(message);
            }

            if (_userManager.GetRolesAsync(account).Result.Contains("PeerCoach"))
            {
                var assignedPatients = _pulseContext.Assignment.Where(a => a.PeerCoachId == user.Id).ToList();
                foreach (var patient in assignedPatients)
                {
                    _pulseContext.Remove(patient);
                }
            }
            else if (_userManager.GetRolesAsync(account).Result.Contains("Patient"))
            {
                var assignedPeerCoach = _pulseContext.Assignment.Where(a => a.PatientId == user.Id).ToList();
                foreach (var coach in assignedPeerCoach)
                {
                    _pulseContext.Remove(coach);
                }
            }

            await _pulseContext.SaveChangesAsync();

            _pulseContext.Remove(user);
            await _pulseContext.SaveChangesAsync();

            var result = await _userManager.DeleteAsync(account);

            return(RedirectToAction("Index", "Index"));
        }
Пример #3
0
        public async Task <IActionResult> Register(RegisterViewModel input)
        {
            if (ModelState.IsValid)
            {
                Account account = new Account
                {
                    Email          = input.Email,
                    UserName       = input.UserName,
                    PhoneNumber    = input.PhoneNumber,
                    Active         = true,
                    DateJoined     = DateTime.Now,
                    LastLoginDate  = DateTime.Now,
                    EmailConfirmed = true
                };

                var result = await _userManager.CreateAsync(account, input.Password);

                if (result.Succeeded)
                {
                    _pulseContext.User.Add(new User
                    {
                        Location  = input.Location,
                        Name      = input.Name,
                        Id        = Guid.NewGuid().ToString(),
                        AccountId = account.Id
                    });

                    await _pulseContext.SaveChangesAsync();

                    await _userManager.AddToRoleAsync(account, "Patient");

                    return(RedirectToAction("Index", "Home"));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }
            return(View("Views/AccountManagement/Register.cshtml"));
        }
Пример #4
0
        public async Task <IActionResult> ChangePassword(ManageViewModel input)
        {
            var account = await _userManager.GetUserAsync(User);

            var user = _pulseContext.User.Where(u => u.AccountId == account.Id).ToList()[0];

            ManageViewModel model = new ManageViewModel
            {
                Email       = account.Email,
                UserName    = account.UserName,
                Name        = user.Name,
                PhoneNumber = account.PhoneNumber,
                Location    = user.Location
            };

            if (ModelState.IsValid)
            {
                var passwordResult = await _userManager.ChangePasswordAsync(account, input.Password, input.NewPassword);

                if (!passwordResult.Succeeded)
                {
                    foreach (var error in passwordResult.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                    return(View());
                }

                var result = await _userManager.UpdateAsync(account);

                if (result.Succeeded)
                {
                    await _pulseContext.SaveChangesAsync();

                    return(RedirectToAction("Index", "Home"));
                }
            }

            return(View("Views/AccountManagement/Manage.cshtml", model));
        }
Пример #5
0
 public async Task CommitAsync()
 {
     BeforeCommit();
     await _context.SaveChangesAsync();
 }