public static string ImportBooks(BookShopContext context, string xmlString) { var sb = new StringBuilder(); var dtos = XMLCustomSerializer.Deserialize <ImportBooks[]>(xmlString, "Books"); var validModels = new List <Book>(); foreach (var dto in dtos) { if (!IsValid(dto)) { sb.AppendLine("Invalid data!"); continue; } var book = new Book { Name = dto.Name, Genre = (Genre)Enum.Parse(typeof(Genre), dto.Genre), Price = dto.Price, Pages = dto.Pages, PublishedOn = DateTime.ParseExact(dto.PublishedOn, "MM/dd/yyyy", CultureInfo.InvariantCulture) }; validModels.Add(book); sb.AppendLine(string.Format(SuccessfullyImportedBook, book.Name, book.Price)); } context.AddRange(validModels); context.SaveChanges(); return(sb.ToString().Trim()); }
public static string ImportBooks(BookShopContext context, string xmlString) { var books = XmlConverter.Deserializer <BooksXmlImportDTO>(xmlString, "Books"); var bookList = new List <Book>(); var sb = new StringBuilder(); foreach (var book in books) { if (!IsValid(book)) { sb.AppendLine(ErrorMessage); continue; } var bookToAdd = new Book { Name = book.Name, Genre = (Genre)Enum.Parse(typeof(Genre), book.Genre), Price = book.Price, Pages = book.Pages, PublishedOn = DateTime.ParseExact(book.PublishedOn, "MM/dd/yyyy", CultureInfo.InvariantCulture) }; sb.AppendLine($"Successfully imported book {book.Name} for {book.Price:f2}."); bookList.Add(bookToAdd); } context.AddRange(bookList); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportAuthors(BookShopContext context, string jsonString) { StringBuilder sb = new StringBuilder(); var authors = new List <Author>(); var authorsDTO = JsonConvert.DeserializeObject <ImportAuthorDTO[]>(jsonString); foreach (var aDto in authorsDTO) { if (!IsValid(aDto)) { sb.AppendLine(ErrorMessage); continue; } if (authors.Any(x => x.Email == aDto.Email)) { sb.AppendLine(ErrorMessage); continue; } Author author = new Author() { FirstName = aDto.FirstName, LastName = aDto.LastName, Email = aDto.Email, Phone = aDto.Phone }; foreach (var book in aDto.Books) { if (context.Books.Any(b => b.Id == book.Id)) { author.AuthorsBooks.Add(new AuthorBook() { Author = author, BookId = (int)book.Id }); } } if (author.AuthorsBooks.Count == 0) { sb.AppendLine(ErrorMessage); continue; } sb.AppendLine(String.Format(SuccessfullyImportedAuthor, (author.FirstName + ' ' + author.LastName), author.AuthorsBooks.Count)); authors.Add(author); } context.AddRange(authors); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportBooks(BookShopContext context, string xmlString) { var sb = new StringBuilder(); var serializer = new XmlSerializer(typeof(ImportBooksDTO[]), new XmlRootAttribute("Books")); using (StringReader stringReader = new StringReader(xmlString)) { var booksDto = (ImportBooksDTO[])serializer.Deserialize(stringReader); var validBooks = new List <Book>(); foreach (var book in booksDto) { if (!IsValid(book)) { sb.AppendLine(ErrorMessage); continue; } DateTime publishedOn; var isValidDate = DateTime.TryParseExact(book.PublishedOn, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out publishedOn); if (!isValidDate) { sb.AppendLine(ErrorMessage); continue; } var bookToImport = new Book() { Name = book.Name, Genre = (Genre)book.Genre, Pages = book.Pages, Price = book.Price, PublishedOn = publishedOn, }; validBooks.Add(bookToImport); sb.AppendLine(string.Format(SuccessfullyImportedBook, book.Name, book.Price)); } context.AddRange(validBooks); context.SaveChanges(); return(sb.ToString().TrimEnd()); } }
public static string ImportAuthors(BookShopContext context, string jsonString) { var sb = new StringBuilder(); var dtos = JsonConvert.DeserializeObject <IEnumerable <ImportAuthorsDTO> >(jsonString, JsonSetting.DefaultSettingJSON()); var validModels = new List <Author>(); foreach (var dto in dtos) { if (!IsValid(dto) || context.Authors.Any(a => a.Email == dto.Email) || !dto.Books.Any()) { sb.AppendLine("Invalid data!"); continue; } var author = new Author { FirstName = dto.FirstName, LastName = dto.LastName, Phone = dto.Phone, Email = dto.Email, AuthorsBooks = dto.Books .Where(b => context.Books.Any(x => x.Id == b.Id)) .Select(b => new AuthorBook { BookId = b.Id }) .ToList() }; if (!author.AuthorsBooks.Any() || validModels.Any(m => m.Email == dto.Email)) { sb.AppendLine("Invalid data!"); continue; } validModels.Add(author); sb.AppendLine(string.Format(SuccessfullyImportedAuthor, author.FirstName + " " + author.LastName, author.AuthorsBooks.Count)); } context.AddRange(validModels); context.SaveChanges(); return(sb.ToString().Trim()); }
public static string ImportBooks(BookShopContext context, string xmlString) { var rootAttribute = new XmlRootAttribute("Books"); var xmlSerializer = new XmlSerializer(typeof(ImportBooksDto[]), rootAttribute); var booksDtos = (ImportBooksDto[])xmlSerializer.Deserialize(new StringReader(xmlString)); var validBooks = new List <Book>(); StringBuilder sb = new StringBuilder(); foreach (var bookDto in booksDtos) { if (!IsValid(bookDto)) { sb.AppendLine(ErrorMessage); continue; } var book = new Book { Name = bookDto.Name, Genre = Enum.Parse <Genre>(bookDto.Genre), Price = bookDto.Price, Pages = bookDto.Pages, PublishedOn = DateTime.ParseExact(bookDto.PublishedOn, "MM/dd/yyyy", CultureInfo.InvariantCulture), }; sb.AppendLine(string.Format(SuccessfullyImportedBook, book.Name, book.Price)); validBooks.Add(book); } context.AddRange(validBooks); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public async Task <IActionResult> Edit(BooksCreateEditViewModel ViewModel) { ViewBag.LanguageID = new SelectList(_context.Languages, "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(_context.Publishers, "PublisherID", "PublisherName"); ViewBag.AuthorID = new SelectList(_context.Authors.Select(t => new AuthorList { AuthorID = t.AuthorID, NameFamily = t.FirstName + " " + t.LastName }), "AuthorID", "NameFamily"); ViewBag.TranslatorID = new SelectList(_context.Translator.Select(t => new TranslatorList { TranslatorID = t.TranslatorID, NameFamily = t.Name + " " + t.Family }), "TranslatorID", "NameFamily"); ViewModel.SubCategoriesVM = new BooksSubCategoriesViewModel(_repository.GetAllCategories(), ViewModel.CategoryID); if (ModelState.IsValid) { try { DateTime?PublishDate; if (ViewModel.IsPublish == true && ViewModel.RecentIsPublish == false) { PublishDate = DateTime.Now; } else if (ViewModel.RecentIsPublish == true && ViewModel.IsPublish == false) { PublishDate = null; } else { PublishDate = ViewModel.PublishDate; } Book book = new Book() { BookID = ViewModel.BookID, Title = ViewModel.Title, ISBN = ViewModel.ISBN, NumOfPages = ViewModel.NumOfPages, Price = ViewModel.Price, Stock = ViewModel.Stock, IsPublish = ViewModel.IsPublish, LanguageID = ViewModel.LanguageID, PublisherID = ViewModel.PublisherID, PublishYear = ViewModel.PublishYear, Summary = ViewModel.Summary, Weight = ViewModel.Weight, PublishDate = PublishDate, Delete = false, }; _context.Update(book); var RecentAuthors = (from a in _context.Author_Books where (a.BookID == ViewModel.BookID) select a.AuthorID).ToArray(); var RecentTranslators = (from a in _context.Book_Translators where (a.BookID == ViewModel.BookID) select a.TranslatorID).ToArray(); var RecentCategories = (from c in _context.Book_Categories where (c.BookID == ViewModel.BookID) select c.CategoryID).ToArray(); var DeletedAuthors = RecentAuthors.Except(ViewModel.AuthorID); var DeletedTranslators = RecentTranslators.Except(ViewModel.TranslatorID); var DeletedCategories = RecentCategories.Except(ViewModel.CategoryID); var AddedAuthors = ViewModel.AuthorID.Except(RecentAuthors); var AddedTranslators = ViewModel.TranslatorID.Except(RecentTranslators); var AddedCategories = ViewModel.CategoryID.Except(RecentCategories); if (DeletedAuthors.Count() != 0) { _context.RemoveRange(DeletedAuthors.Select(a => new Author_Book { AuthorID = a, BookID = ViewModel.BookID }).ToList()); } if (DeletedTranslators.Count() != 0) { _context.RemoveRange(DeletedTranslators.Select(a => new Book_Translator { TranslatorID = a, BookID = ViewModel.BookID }).ToList()); } if (DeletedCategories.Count() != 0) { _context.RemoveRange(DeletedCategories.Select(a => new Book_Category { CategoryID = a, BookID = ViewModel.BookID }).ToList()); } if (AddedAuthors.Count() != 0) { _context.AddRange(AddedAuthors.Select(a => new Author_Book { AuthorID = a, BookID = ViewModel.BookID }).ToList()); } if (AddedTranslators.Count() != 0) { _context.AddRange(AddedTranslators.Select(a => new Book_Translator { TranslatorID = a, BookID = ViewModel.BookID }).ToList()); } if (AddedCategories.Count() != 0) { _context.AddRange(AddedCategories.Select(a => new Book_Category { CategoryID = a, BookID = ViewModel.BookID }).ToList()); } await _context.SaveChangesAsync(); ViewBag.MsgSuccess = "ذخیره تغییرات با موفقیت انجام شد."; return(View(ViewModel)); } catch { ViewBag.MsgFailed = "در ذخیره تغییرات خطایی رخ داده است."; return(View(ViewModel)); } } else { ViewBag.MsgFailed = "اطلاعات فرم نامعتبر است."; return(View(ViewModel)); } }
public async Task <IActionResult> Edit(BooksCreateEditViewModel ViewModel) { ViewBag.LanguageID = new SelectList(_context.Languages, "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(_context.Publishers, "PublisherID", "PublisherName"); if (ModelState.IsValid) { try { DateTime?PublishDate; if (ViewModel.IsPublish == true && ViewModel.RecentIsPublish == false) { PublishDate = DateTime.Now; } else if (ViewModel.RecentIsPublish == true && ViewModel.IsPublish == false) { PublishDate = null; } else { PublishDate = ViewModel.PublishDate; } Book book = new Book() { BookID = ViewModel.BookID, LanguageID = ViewModel.LanguageID, PublisherID = ViewModel.PublisherID, PublishYear = ViewModel.PublishYear, }; _context.Update(book); var RecentCategories = (from c in _context.Book_Categories where (c.BookID == ViewModel.BookID) select c.CategoryID).ToArray(); var DeletedCategories = RecentCategories.Except(ViewModel.CategoryID); var AddedCategories = ViewModel.CategoryID.Except(RecentCategories); if (DeletedCategories.Count() != 0) { _context.RemoveRange(DeletedCategories.Select(a => new Book_Category { CategoryID = a, BookID = ViewModel.BookID }).ToList()); } if (AddedCategories.Count() != 0) { _context.AddRange(AddedCategories.Select(a => new Book_Category { CategoryID = a, BookID = ViewModel.BookID }).ToList()); } await _context.SaveChangesAsync(); ViewBag.MsgSuccess = "ذخیره تغییرات با موفقیت انجام شد."; return(View(ViewModel)); } catch { ViewBag.MsgFailed = "در ذخیره تغییرات خطایی رخ داده است."; return(View(ViewModel)); } } else { ViewBag.MsgFailed = "اطلاعات فرم نامعتبر است."; return(View(ViewModel)); } }
public static string ImportAuthors(BookShopContext context, string jsonString) { var authorDtos = JsonConvert.DeserializeObject <ImportAuthorDto[]>(jsonString); var validAuthors = new List <Author>(); var sb = new StringBuilder(); foreach (var authorDto in authorDtos) { var emails = context.Authors.Select(a => a.Email).ToArray(); var emailExists = emails.Any(e => e == authorDto.Email); if (!IsValid(authorDto) || emailExists) { sb.AppendLine(ErrorMessage); continue; } var author = new Author { FirstName = authorDto.FirstName, LastName = authorDto.LastName, Phone = authorDto.Phone, Email = authorDto.Email }; var validAuthorBooks = new List <AuthorBook>(); foreach (var book in authorDto.Books) { var bookExists = context.Books.Find(book); if (bookExists == null) { continue; } if (!IsValid(book)) { sb.AppendLine(ErrorMessage); continue; } var newBook = new AuthorBook { BookId = book.Id, AuthorId = author.Id }; validAuthorBooks.Add(newBook); } if (!validAuthorBooks.Any()) { sb.AppendLine(ErrorMessage); continue; } author.AuthorsBooks = validAuthorBooks; validAuthors.Add(author); sb.AppendLine(string .Format(SuccessfullyImportedAuthor, author.FirstName + " " + author.LastName, author.AuthorsBooks.Count)); } context.AddRange(validAuthors); context.SaveChanges(); return(sb.ToString().TrimEnd()); }