Пример #1
0
        public async Task <IActionResult> Unassign(string username, string patientId)
        {
            var account = await _userManager.FindByNameAsync(username);

            var user       = _pulseContext.User.Where(u => u.AccountId == account.Id).ToList()[0];
            var assignment = _pulseContext.Assignment.Where(a => a.PatientId == patientId && a.PeerCoachId == user.Id).ToList()[0];

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

            return(RedirectToAction("Edit", new RouteValueDictionary(new { controller = "EditUser", action = "Edit", Id = account.Id })));
        }
        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"));
        }