public async Task <IActionResult> Create([Bind("Id,FirstName,LastName,Info,BirthYear,DeathYear")] Author author, List <int> countries) { var IsRepeat = _context.Authors.Where(obj => obj.FirstName == author.FirstName && obj.LastName == author.LastName && obj.BirthYear == author.BirthYear); foreach (var item in IsRepeat) { bool flag = false; var IsRepeatCountries = thisAuthorCountries(item.Id); foreach (var c in countries) { if (IsRepeatCountries.Where(obj => obj.CountryId == c).Count() > 0) { flag = true; break; } } if (flag) { ModelState.AddModelError("", "Такий автор вже існує"); } } if (ModelState.IsValid) { _context.Add(author); foreach (var cID in countries) { AuthorsCountry ac = new AuthorsCountry { AuthorId = author.Id, CountryId = cID }; author.AuthorsCountries.Add(ac); } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewBag.CountriesList = _context.Countries.ToList(); return(View()); }
public async Task <IActionResult> Edit(int id, [Bind("Id,FirstName,LastName,Info,BirthYear,DeathYear")] Author author, int[] countries) { if (id != author.Id) { return(NotFound()); } var IsRepeat = _context.Authors.Where(obj => obj.Id != author.Id && obj.FirstName == author.FirstName && obj.LastName == author.LastName && obj.BirthYear == author.BirthYear); foreach (var item in IsRepeat) { bool flag = false; var IsRepeatCountries = thisAuthorCountries(item.Id); foreach (var c in countries) { if (IsRepeatCountries.Where(obj => obj.CountryId == c).Count() > 0) { flag = true; break; } } if (flag) { ModelState.AddModelError("", "Такий автор вже існує"); break; } } if (ModelState.IsValid) { try { _context.Update(author); var authorsCountries = thisAuthorCountries(id); foreach (var item in authorsCountries) { _context.AuthorsCountries.Remove(item); } { foreach (var cID in countries) { AuthorsCountry ac = new AuthorsCountry { AuthorId = author.Id, CountryId = cID }; author.AuthorsCountries.Add(ac); } } await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!AuthorExists(author.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } var thisC = _context.AuthorsCountries.Where(obj => obj.AuthorId == id).Join(_context.Countries, a => a.CountryId, c => c.Id, (a, c) => new { Id = a.CountryId, Name = c.Name }); List <string> CNames = new List <string>(); foreach (var tC in thisC) { CNames.Add(tC.Name); } ViewBag.OtherCountries = _context.Countries.Where(obj => !CNames.Contains(obj.Name)).ToList(); ViewBag.ThisCountries = thisC; return(View(author)); }