public IActionResult Edit(EditAuthorDTO newData)
        {
            string fullName = NameRefactorer
                              .GetFullName(newData.FirstName, newData.MiddleName, newData.LastName);

            Author newAuthor = authorServices.FindAuthor(fullName);
            Author oldAuthor = authorServices.FindAuthor(newData.Id);

            string oldFullName = NameRefactorer
                                 .GetFullName(oldAuthor.FirstName, oldAuthor.MiddleName, oldAuthor.LastName);

            if (newAuthor != null && fullName != oldFullName)
            {
                ViewData.Add("NameRepeatingError", "An author with this name already exists!");
                return(View(newData));
            }

            try
            {
                authorServices.UpdateAuthor(newData);
            }
            catch (ArgumentException ae)
            {
                ViewData.Add("ShortName", ae.Message);
                return(View(newData));
            }

            return(RedirectToAction(nameof(Authors)));
        }
示例#2
0
        public void UpdateAuthor(EditAuthorDTO newData)
        {
            Author author = FindAuthor(newData.Id);

            author.Id = newData.Id;

            if (newData.FirstName != null && newData.FirstName != author.FirstName)
            {
                author.FirstName = newData.FirstName;
            }
            if (newData.MiddleName != null && newData.MiddleName != author.MiddleName)
            {
                author.MiddleName = newData.MiddleName;
            }
            if (newData.LastName != null && newData.LastName != author.LastName)
            {
                author.LastName = newData.LastName;
            }
            if (newData.Nickname != null && newData.Nickname != author.Nickname)
            {
                author.Nickname = newData.Nickname;
            }
            if (newData.Birthday != null && newData.Birthday != author.Birthday)
            {
                author.Birthday = newData.Birthday;
            }
            if (newData.Country != null)
            {
                Country country = db.Countries
                    .FirstOrDefault(c => c.Name == newData.Country);

                if (country == null)
                {
                    country = new Country
                    {
                        Name = newData.Country
                    };

                    db.Countries.Add(country);
                    db.SaveChanges();
                }

                author.CountryId = country.Id;
            }

            db.SaveChanges();
        }
        public void IsChangingLastNameCorrectly()
        {
            Author        author        = db.Authors.FirstOrDefault();
            EditAuthorDTO editAuthorDTO = new EditAuthorDTO
            {
                Id         = author.Id,
                FirstName  = author.FirstName,
                MiddleName = author.MiddleName,
                LastName   = "LasteName1",
                Birthday   = author.Birthday,
                Nickname   = author.Nickname,
                Country    = db.Countries.FirstOrDefault().Name
            };

            authorServices.UpdateAuthor(editAuthorDTO);

            Assert.AreEqual("LasteName1", author.LastName);
        }
        public void NotChangingAuthorFirstNameWhenNewValueIsEqualToOldValue()
        {
            Author        author        = db.Authors.FirstOrDefault();
            EditAuthorDTO editAuthorDTO = new EditAuthorDTO
            {
                Id         = author.Id,
                FirstName  = "FirstName1",
                MiddleName = author.MiddleName,
                LastName   = author.LastName,
                Birthday   = author.Birthday,
                Nickname   = author.Nickname,
                Country    = db.Countries.FirstOrDefault().Name
            };

            authorServices.UpdateAuthor(editAuthorDTO);

            Assert.AreEqual(author.FirstName, "FirstName1");
        }
        public void NotChangingAuthorBirthdayWhenNewValueIsEqualToOldValue()
        {
            Author        author        = db.Authors.FirstOrDefault();
            EditAuthorDTO editAuthorDTO = new EditAuthorDTO
            {
                Id         = author.Id,
                FirstName  = author.FirstName,
                MiddleName = author.MiddleName,
                LastName   = author.LastName,
                Birthday   = DateTime.Parse("20-12-20"),
                Nickname   = author.Nickname,
                Country    = db.Countries.FirstOrDefault().Name
            };

            authorServices.UpdateAuthor(editAuthorDTO);

            Assert.AreEqual(DateTime.Parse("20-12-20"), author.Birthday);
        }
        public void NotChangingAuthorCountryNameWhenNewValueIsNull()
        {
            Author        author        = db.Authors.FirstOrDefault();
            EditAuthorDTO editAuthorDTO = new EditAuthorDTO
            {
                Id         = author.Id,
                FirstName  = author.FirstName,
                MiddleName = author.MiddleName,
                LastName   = author.LastName,
                Birthday   = author.Birthday,
                Nickname   = author.Nickname,
                Country    = null
            };

            authorServices.UpdateAuthor(editAuthorDTO);

            Assert.AreEqual("Bulgaria", author.Country.Name);
        }
        public void IsChangingBirthdayCorrectly()
        {
            Author        author        = db.Authors.FirstOrDefault();
            EditAuthorDTO editAuthorDTO = new EditAuthorDTO
            {
                Id         = author.Id,
                FirstName  = author.FirstName,
                MiddleName = author.MiddleName,
                LastName   = author.LastName,
                Birthday   = DateTime.Parse("1212-12-12"),
                Nickname   = author.Nickname,
                Country    = db.Countries.FirstOrDefault().Name
            };

            authorServices.UpdateAuthor(editAuthorDTO);

            Assert.AreEqual(DateTime.Parse("1212-12-12"), author.Birthday);
        }
        public IActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction(nameof(Authors)));
            }

            Author author = authorServices.FindAuthor(id);

            EditAuthorDTO result = new EditAuthorDTO
            {
                Id         = author.Id,
                FirstName  = author.FirstName,
                MiddleName = author.MiddleName,
                LastName   = author.LastName,
                Birthday   = author.Birthday,
                Nickname   = author.Nickname,
                Country    = authorServices.GetAuthorCountry(author)
            };

            return(View(result));
        }