public async Task <IActionResult> Edit(string id)
        {
            Certification certification = await _db.Certifications.FindAsync(id);

            _db.Certifications.Where(x => x.Id == certification.Id).Include(x => x.Topic).Load();
            if (certification == null)
            {
                return(NotFound());
            }

            var topic = _db.Topics.Select(x => x.Name).Where(x => x != certification.Topic.Name).ToList();
            var users = _db.UserCertifications
                        .Where(e => e.CertificationId == certification.Id)
                        .Select(e => e.UserId)
                        .ToArray();

            EditCertificationViewModel editCertificationViewModel = new EditCertificationViewModel {
                Id          = id,
                Name        = certification.Name,
                Description = certification.Description,
                DatetimeEnd = certification.DatetimeEnd,
                Users       = users,
                TopicList   = topic,
                Topic       = certification.Topic.Name
            };

            return(View(editCertificationViewModel));
        }
        public async Task <IActionResult> Edit(EditCertificationViewModel model)
        {
            model.Users = Request.Form["user"];
            if (ModelState.IsValid && model.DatetimeEnd != null)
            {
                Certification certification = await _db.Certifications.FindAsync(model.Id);

                if (certification == null)
                {
                    return(NotFound());
                }

                certification.Name        = model.Name;
                certification.Description = model.Description;
                certification.DatetimeEnd = (DateTime)model.DatetimeEnd;
                certification.Topic       = _db.Topics.Where(x => x.Name == model.Topic).FirstOrDefault();

                var usersByCertification = _db.UserCertifications
                                           .Where(e => e.CertificationId == certification.Id)
                                           .ToList();
                _db.UserCertifications.RemoveRange(usersByCertification);

                foreach (string userId in Request.Form["user"])
                {
                    User user = await _userManager.FindByIdAsync(userId);

                    UserCertifications userCertifications = new UserCertifications {
                        UserId          = userId,
                        CertificationId = certification.Id,
                        User            = user,
                        Certification   = certification
                    };

                    await _db.UserCertifications.AddAsync(userCertifications);
                }

                await _db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(model));
        }