public async Task <int> Handle(CreateBookAdminCommand request, CancellationToken cancellationToken)
        {
            var entity = new Book
            {
                Title       = request.Title,
                Description = request.Description,
                Image       = request.Image,
                Slug        = request.Slug,
                AuthorId    = request.AuthorID
            };

            _context.Books.Add(entity);
            foreach (var idCateBook in request.CategoriesID)
            {
                var categoryBook = new BookCategory
                {
                    BookId     = entity.Id,
                    CategoryId = idCateBook
                };
                _context.BookCategories.Add(categoryBook);
            }
            foreach (var idGenre in request.GenreID)
            {
                var genreBook = new BookGenre
                {
                    BookId  = entity.Id,
                    GenreId = idGenre
                };
                _context.BookGenres.Add(genreBook);
            }
            await _context.SaveChangesAsync(cancellationToken);

            return(entity.Id);
        }
        public async Task <object> Handle(DeleteGenreCommand request, CancellationToken cancellationToken)
        {
            var entity = await _context.Genres.Include(c => c.BookGenres).
                         Where(c => c.Id == request.Id && c.Id != 1).FirstOrDefaultAsync(cancellationToken);

            if (entity == null)
            {
                return(null);
            }
            if (entity.BookGenres.Count() != 0)
            {
                _context.BookGenres.RemoveRange(entity.BookGenres);
            }
            foreach (var iterm in entity.BookGenres)
            {
                var testIdGenre = await _context.BookGenres
                                  .SingleOrDefaultAsync(u => u.GenreId == 1 && u.BookId == iterm.BookId, cancellationToken);

                if (testIdGenre == null)
                {
                    var bookGenre = new BookGenre
                    {
                        GenreId = 1,
                        BookId  = iterm.BookId
                    };
                    _context.BookGenres.Add(bookGenre);
                }
            }
            _context.Genres.Remove(entity);
            await _context.SaveChangesAsync(cancellationToken);

            return(entity);
        }
示例#3
0
        public async Task <object> Handle(DeleteChapterAdminCommand request, CancellationToken cancellationToken)
        {
            var entity = await _context.Chapters.SingleOrDefaultAsync(u => u.Id == request.Id, cancellationToken);

            if (entity == null)
            {
                return(null);
            }
            _context.Chapters.Remove(entity);
            await _context.SaveChangesAsync(cancellationToken);

            return(entity);
        }
        public async Task <int> Handle(CategoryAdminCommand request, CancellationToken cancellationToken)
        {
            var entity = new Category()
            {
                Name        = request.Name,
                Description = request.Description,
                Status      = request.Status
            };

            _context.Categories.Add(entity);
            await _context.SaveChangesAsync(cancellationToken);

            return(entity.Id);
        }
        public async Task <int> Handle(CreateUserCommand request, CancellationToken cancellationToken)
        {
            var entity = new User
            {
                Username = request.Username,
                Password = request.Password,
                Role     = request.Role
            };

            _context.Users.Add(entity);

            await _context.SaveChangesAsync(cancellationToken);

            return(entity.Id);
        }
        public async Task <object> Handle(CreateChapterAdminCommand request, CancellationToken cancellationToken)
        {
            var entity = new Chapter
            {
                BookId      = request.BookId,
                Content     = request.Content,
                Title       = request.Title,
                Description = request.Description,
                Status      = request.Status
            };

            _context.Chapters.Add(entity);
            await _context.SaveChangesAsync(cancellationToken);

            return(entity);
        }
示例#7
0
        public async Task <UserViewModel> Handle(UpdateUserCommand request, CancellationToken cancellationToken)
        {
            var user = await _context.Users.SingleOrDefaultAsync(u => u.Id == request.Id, cancellationToken);

            if (user == null)
            {
                return(null);
            }
            user.Username     = request.Username;
            user.Password     = request.Password;
            user.DateModified = DateTime.Now;
            await _context.SaveChangesAsync(cancellationToken);

            var userModel = _mapper.Map <UserViewModel>(user);

            return(userModel);
        }
示例#8
0
        public async Task <object> Handle(UpdateBookAdminCommand request, CancellationToken cancellationToken)
        {
            var entity = await _context.Books.Include(b => b.BookCategories).Include(b => b.Chapters).Include(b => b.BookGenres)
                         .SingleOrDefaultAsync(c => c.Id == request.Id, cancellationToken);

            if (entity == null)
            {
                return(null);
            }
            if (request.Image != null)
            {
                entity.Image = request.Image;
            }
            if (entity.Chapters.Count() != 0 && !entity.Chapters.Select(c => c.Status).Contains(2))
            {
                entity.Status = request.Status;
            }
            entity.Slug         = request.Slug;
            entity.Title        = request.Title;
            entity.AuthorId     = request.AuthorID;
            entity.DateModified = DateTime.Now;
            entity.Description  = request.Description;
            _context.BookCategories.RemoveRange(entity.BookCategories);
            _context.BookGenres.RemoveRange(entity.BookGenres);
            foreach (var idCateBook in request.CategoriesID)
            {
                var category = new BookCategory
                {
                    BookId     = entity.Id,
                    CategoryId = idCateBook
                };
                _context.BookCategories.Add(category);
            }
            foreach (var idGenre in request.GenreID)
            {
                var genre = new BookGenre
                {
                    BookId  = entity.Id,
                    GenreId = idGenre
                };
                _context.BookGenres.Add(genre);
            }
            await _context.SaveChangesAsync(cancellationToken);

            return(entity);
        }
        public async Task <int> Handle(CreateGenreCommand request, CancellationToken cancellationToken)
        {
            var entity = new Genre
            {
                Name         = request.Name,
                Description  = request.Description,
                DateCreated  = DateTime.Now,
                DateModified = DateTime.Now,
                Status       = 1
            };

            _context.Genres.Add(entity);

            await _context.SaveChangesAsync(cancellationToken);

            return(entity.Id);
        }
示例#10
0
        public async Task <object> Handle(EditGenreCommand request, CancellationToken cancellationToken)
        {
            var entity = await _context.Genres
                         .SingleOrDefaultAsync(c => c.Id == request.Id, cancellationToken);

            if (entity == null)
            {
                return(null);
            }
            entity.Name         = request.Name;
            entity.Description  = request.Description;
            entity.DateModified = DateTime.Now;
            entity.Status       = request.Status;
            await _context.SaveChangesAsync(cancellationToken);

            return(entity);
        }
        public async Task <object> Handle(DeleteBookAdminCommand request, CancellationToken cancellationToken)
        {
            var entity = await _context.Books.Include(b => b.Chapters).SingleOrDefaultAsync(b => b.Id == request.Id, cancellationToken);

            if (entity == null)
            {
                return(null);
            }
            if (entity.Chapters.Count() != 0)
            {
                return(null);
            }
            _context.Books.Remove(entity);
            await _context.SaveChangesAsync(cancellationToken);

            return(entity);
        }
示例#12
0
        public async Task <object> Handle(UpdateChapterAdminCommand request, CancellationToken cancellationToken)
        {
            var entity = await _context.Chapters.SingleOrDefaultAsync(c => c.Id == request.Id, cancellationToken);

            if (entity == null)
            {
                return(null);
            }
            entity.Title        = request.Title;
            entity.Content      = request.Content;
            entity.Description  = request.Description;
            entity.Status       = request.Status;
            entity.DateModified = DateTime.Now;
            await _context.SaveChangesAsync(cancellationToken);

            return(entity);
        }
示例#13
0
        public async Task <int> Handle(CreateAuthorCommand request, CancellationToken cancellationToken)
        {
            var entity = new Author
            {
                FullName     = request.Fullname,
                Nickname     = request.Nickname,
                Description  = request.Description,
                DateCreated  = DateTime.Now,
                DateModified = DateTime.Now,
                Status       = 1
            };

            _context.Authors.Add(entity);

            await _context.SaveChangesAsync(cancellationToken);

            return(entity.Id);
        }
示例#14
0
        public async Task <object> Handle(UpdateCategoryAdminCommand request, CancellationToken cancellationToken)
        {
            var entity = await _context.Categories.SingleOrDefaultAsync(c => c.Id == request.Id, cancellationToken);

            if (entity == null)
            {
                return(null);
            }
            entity.Name         = request.Name;
            entity.Description  = request.Description;
            entity.Status       = request.Status;
            entity.DateModified = DateTime.Now;

            /* foreach (var iterm in entity.BookCategories)
             * {
             *   var categoryEntity = await _context.BookCategories.SingleOrDefaultAsync(c => c.BookId == request.Id, cancellationToken);
             * }*/
            await _context.SaveChangesAsync(cancellationToken);

            return(entity);
        }
        public async Task<Unit> Handle(EditAuthorCommand request, CancellationToken cancellationToken)
        {
            var entity = await _context.Authors
                    .SingleOrDefaultAsync(c => c.Id == request.Id, cancellationToken);
            if (entity == null)
            {
                return Unit.Value;
            }
            else
            {
                entity.FullName = request.FullName;
                entity.Nickname = request.Nickname;
                entity.Description = request.Description;
                entity.DateCreated = DateTime.Now;
                entity.DateModified = DateTime.Now;
                entity.Status = request.Status;
                await _context.SaveChangesAsync(cancellationToken);
                return Unit.Value;

            }
            
        }
        public async Task <object> Handle(DeleteAuthorCommand request, CancellationToken cancellationToken)
        {
            var entity = await _context.Authors.Where(u => u.Id == request.Id).SingleOrDefaultAsync(cancellationToken);

            if (entity == null)
            {
                return(null);
            }
            var hasBook = await _context.Books.Where(o => o.AuthorId == entity.Id).FirstOrDefaultAsync(cancellationToken);

            if (hasBook != null)
            {
                return(null);
            }
            else
            {
                _context.Authors.Remove(entity);

                await _context.SaveChangesAsync(cancellationToken);

                return(entity);
            }
        }