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));
        }