Пример #1
0
        public IActionResult AddBook([FromForm] BookRequestModel bookRequestModel)
        {
            try
            {
                if (bookRequestModel.BookName == null || bookRequestModel.AuthorName == null || bookRequestModel.Description == null || bookRequestModel.Price == null)
                {
                    throw new BookStoreException(BookStoreException.ExceptionType.NULL_FIELD_EXCEPTION, "Null Field");
                }
                else if (bookRequestModel.BookName == "" || bookRequestModel.AuthorName == "" || bookRequestModel.Description == "" || bookRequestModel.Price == "")
                {
                    throw new BookStoreException(BookStoreException.ExceptionType.EMPTY_FIELD_EXCEPTION, "Empty Field");
                }

                // Call the Add Book Method of Book class
                var response = this.bookBuiseness.AddBook(bookRequestModel);

                // check if Id is not equal to zero
                if (!response.BookId.Equals(0))
                {
                    bool status  = true;
                    var  message = "Book Added Successfully";
                    return(this.Ok(new { status, message, data = response }));
                }
                else
                {
                    bool status  = false;
                    var  message = "Failed to add";
                    return(this.BadRequest(new { status, message }));
                }
            }
            catch (Exception e)
            {
                return(this.BadRequest(new { status = false, message = e.Message }));
            }
        }
Пример #2
0
        public async Task <IActionResult> Post(BookRequestModel book)
        {
            bool authorExists = await this.authorService.Exists(book.AuthorId);

            if (!authorExists)
            {
                return(this.BadRequest("Author does not exist"));
            }

            var bookInputModel = this.mapper.Map <BookInputServiceModel>(book);

            if (book.Categories != null)
            {
                var categoryIds = new List <int>();
                foreach (var categoryName in book.Categories)
                {
                    var category = await this.categoryService.GetByName(categoryName);

                    if (category == null)
                    {
                        categoryIds.Add(await this.categoryService.Create(categoryName));
                    }
                    else
                    {
                        categoryIds.Add(category.Id);
                    }
                }

                bookInputModel.CategoryIds = categoryIds;
            }

            int bookId = await this.bookService.Create(bookInputModel);

            return(this.Ok(bookId));
        }
Пример #3
0
        public IActionResult Post([FromBody] BookRequestModel book)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Fill out all the required fields!"));
            }

            Book newBook = new Book()
            {
                Name        = book.Name,
                Description = book.Description,
                Year        = book.Year,
                PagesAmount = book.PagesAmount
            };

            if (book.AuthorsIds != null && book.AuthorsIds.Any())
            {
                foreach (var aid in book.AuthorsIds)
                {
                    if (!libraryDBContext.Authors.Any(a => a.Id == aid))
                    {
                        return(NotFound($"Author with id '{aid}' wasn't found."));
                    }
                    newBook.BookAuthors.Add(new BookAuthor(newBook.Id, aid));
                }
            }

            libraryDBContext.Books.Add(newBook);

            libraryDBContext.Entry <Book>(newBook).State = EntityState.Added;

            libraryDBContext.SaveChanges();

            return(Ok());
        }
Пример #4
0
        public IActionResult Put(int id, [FromBody] BookRequestModel model)
        {
            if (!this.books.Exists(id))
            {
                return(this.BadRequest("Book does not exists!"));
            }

            bool successfullyUpdated = this.books.Update(
                id,
                model.Title,
                model.Description,
                model.Price,
                model.Copies,
                model.Edition,
                model.AgeRestriction,
                model.ReleaseDate,
                model.AuthorId);

            if (!successfullyUpdated)
            {
                return(this.BadRequest("Unsuccessful update!"));
            }

            return(this.Ok());
        }
Пример #5
0
 public BookRequest(BookRequestModel model)
 {
     client = Archive.Clients[model.client.card.id];
     book   = new Book(model.book);
     id     = model.id;
     curId  = BookRequestModel.curId;
 }
Пример #6
0
        public async Task <IActionResult> Put(int id, [FromBody] BookRequestModel model)
        {
            var bookExists = await this._books.Exists(id);

            if (!bookExists)
            {
                return(this.BadRequest("The book does't exist"));
            }

            var authorExists = await this._authors.Exists(model.AuthorId);

            if (!authorExists)
            {
                return(this.BadRequest("The book does't exist"));
            }

            int bookId = await this._books.Update(
                id,
                model.Title,
                model.Description,
                model.Price,
                model.Copies,
                model.Edition,
                model.AgeRestriction,
                model.ReleaseDate,
                model.AuthorId);

            return(this.Ok(bookId));
        }
Пример #7
0
        public async Task <LessonModel> PostAsync([FromBody] BookRequestModel model)
        {
            var userId = int.Parse(HttpContext.User.FindFirst(c => c.Type == ClaimTypes.Sid).Value);
            var lesson = await _bookingService.AddLessonRequestAsync(model.OfferId, model.SlotIds, userId);

            return(_mapper.Map <LessonModel>(lesson));
        }
Пример #8
0
 public BookResponse AddBook(BookRequestModel bookRequest)
 {
     try
     {
         var response = this.dbContext.BookDetails.FirstOrDefault(value => ((value.BookName == bookRequest.BookName)) && ((value.AuthorName == bookRequest.AuthorName)));
         if (response != null)
         {
             response.Quantity = response.Quantity + bookRequest.Quantity;
             this.dbContext.BookDetails.Update(response);
             this.dbContext.SaveChanges();
             return(Response(response));
         }
         else
         {
             string image = AddImage(bookRequest);
             bookModel.BookName    = bookRequest.BookName;
             bookModel.AuthorName  = bookRequest.AuthorName;
             bookModel.Description = bookRequest.Description;
             bookModel.Price       = bookRequest.Price;
             bookModel.Quantity    = bookRequest.Quantity;
             bookModel.CreatedDate = DateTime.Now;
             bookModel.Image       = image;
             bookModel.IsDeleted   = "No";
             this.dbContext.BookDetails.Add(bookModel);
             this.dbContext.SaveChanges();
             return(Response(bookModel));
         }
     }
     catch (Exception e)
     {
         throw new Exception(e.Message);
     }
 }
Пример #9
0
        public IActionResult UpdateBook([FromRoute] int Id, [FromForm] BookRequestModel updateBookModel)
        {
            try
            {
                if (updateBookModel.BookName == null || updateBookModel.AuthorName == null || updateBookModel.Description == null || updateBookModel.Price == null)
                {
                    throw new BookStoreException(BookStoreException.ExceptionType.NULL_FIELD_EXCEPTION, "Null Variable Field");
                }
                else if (updateBookModel.BookName == "" || updateBookModel.AuthorName == "" || updateBookModel.Description == "" || updateBookModel.Price == "")
                {
                    throw new BookStoreException(BookStoreException.ExceptionType.EMPTY_FIELD_EXCEPTION, "Empty Variable Field");
                }

                // Call the User Add Book Method of BookBL classs
                var response = this.bookBuiseness.UpdateBook(Id, updateBookModel);

                // check if Id is not equal to zero
                if (!response.BookId.Equals(0))
                {
                    bool status  = true;
                    var  message = "Book Updated Successfully";
                    return(this.Ok(new { status, message, data = response }));
                }
                else
                {
                    bool status  = false;
                    var  message = "BookId Not Found";
                    return(this.NotFound(new { status, message }));
                }
            }
            catch (Exception e)
            {
                return(this.BadRequest(new { status = false, message = e.Message }));
            }
        }
Пример #10
0
        public async Task <IActionResult> Put(int id, [FromBody] BookRequestModel model)
        {
            var bookExists = await this.bookService.Exists(id);

            if (!bookExists)
            {
                return(NotFound("Book does not exist."));
            }

            var authorExists = await this.authorService.Exists(model.AuthorId);

            if (!authorExists)
            {
                return(BadRequest("Author does not exist."));
            }

            await this.bookService.Update(
                id,
                model.Title.Trim(),
                model.Description.Trim(),
                model.Price,
                model.Copies,
                model.Edition,
                model.AgeRestriction,
                model.ReleaseDate,
                model.AuthorId);

            return(Ok());
        }
Пример #11
0
        public IHttpActionResult Post(BookRequestModel book)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var author = this.authorsRepository
                         .All()
                         .FirstOrDefault(a => a.UserName == book.AuthorUsername);

            if (author == null)
            {
                return(this.BadRequest("Author does not exist!"));
            }

            var newBook = new Book
            {
                Title       = book.Title,
                Description = book.Description,
                Author      = author
            };

            this.booksRepository.Add(newBook);
            this.booksRepository.SaveChanges();

            return(this.Created(string.Format("/Books/GetById/{0}", newBook.Id), Mapper.Map <BookResponseModel>(newBook)));
        }
Пример #12
0
        public BookResponse UpdateBook(int Id, BookRequestModel updateBookModel)
        {
            try
            {
                var response = this.dbContext.Books.FirstOrDefault(value => ((value.BookId == Id)) && ((value.IsDeleted == "No")));

                if (response != null)
                {
                    string image = AddImage(updateBookModel);
                    response.BookName         = updateBookModel.BookName;
                    response.AuthorName       = updateBookModel.AuthorName;
                    response.Description      = updateBookModel.Description;
                    response.Price            = updateBookModel.Price;
                    response.Quantity         = updateBookModel.Quantity;
                    response.ModificationDate = DateTime.Now;
                    response.Image            = image;
                    response.IsDeleted        = "No";
                    this.dbContext.Books.Update(response);
                    this.dbContext.SaveChanges();

                    return(Response(response));
                }
                return(bookResponse);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
Пример #13
0
        public IHttpActionResult Post(BookRequestModel book)
        {
            if (!this.ModelState.IsValid)
            {
                return this.BadRequest(this.ModelState);
            }

            var author = this.authorsRepository
                .All()
                .FirstOrDefault(a => a.UserName == book.AuthorUsername);

            if (author == null)
            {
                return this.BadRequest("Author does not exist!");
            }

            var newBook = new Book
            {
                Title = book.Title,
                Description = book.Description,
                Author = author
            };

            this.booksRepository.Add(newBook);
            this.booksRepository.SaveChanges();

            return this.Created(string.Format("/Books/GetById/{0}", newBook.Id), Mapper.Map<BookResponseModel>(newBook));
        }
        public async Task <IActionResult> AddBook([FromBody] BookRequestModel model)
        {
            var dbProvider = _dbBuilder.SetConnectionString(_dbConfiguration.ConnectionString)
                             .SetDatabase(_dbConfiguration.Database)
                             .SetCollection(_dbConfiguration.BooksCollection)
                             .Build();
            var book = await dbProvider.FindRecordAsync <Book>("isbn", model.Isbn);

            dbProvider.Collection = _dbConfiguration.UsersCollection;
            var givenName = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.GivenName);
            var user      = await dbProvider.FindRecordAsync <User>("givenname", givenName.Value);

            if (user == null)
            {
                // move to the fabric
                var newUser = new User {
                    GivenName = givenName.Value, Books = new List <Book> {
                        book
                    }
                };
                await dbProvider.InsertAsync <User>(newUser);
            }
            else
            {
                var existingBook = user.Books.Contains(book);
                if (!existingBook)
                {
                    user.Books.Add(book);
                    await dbProvider.UpdateAsync <User>(user, "givenname", givenName.Value);
                }
            }

            return(Ok());
        }
Пример #15
0
 public static Book toEntity(this BookRequestModel bookRequest)
 {
     return(new Book()
     {
         CategoryId = bookRequest.categoryId,
         Title = bookRequest.title,
         AuthorId = bookRequest.authorID,
         BookId = bookRequest.bookId
     });
 }
Пример #16
0
        public async Task <IActionResult> Put(int id, [FromBody] BookRequestModel book)
        {
            if (id < 0)
            {
                return(BadRequest($"'{nameof(id)}' have to be bigger than Zero!"));
            }

            Book bookToUpdate = await libraryDBContext.Books
                                .Include(a => a.BookAuthors)
                                .FirstOrDefaultAsync(a => a.Id == id);

            if (bookToUpdate == null)
            {
                return(NotFound($"Book with id '{id}' doesn't exist!"));
            }

            bookToUpdate.Name        = book.Name;
            bookToUpdate.Description = book.Description;
            bookToUpdate.PagesAmount = book.PagesAmount;
            bookToUpdate.Year        = book.Year;


            if (book.AuthorsIds != null && book.AuthorsIds.Any())
            {
                foreach (var aid in book.AuthorsIds)
                {
                    if (bookToUpdate.BookAuthors.Any(ba => ba.AuthorId == aid))
                    {
                        continue;
                    }

                    if (!libraryDBContext.Authors.Any(a => a.Id == aid))
                    {
                        return(NotFound($"Author with id '{aid}' donesn't exist."));
                    }
                    bookToUpdate.BookAuthors.Add(new BookAuthor(bookToUpdate.Id, aid));
                }

                bookToUpdate.BookAuthors = bookToUpdate.BookAuthors.Where(ba => book.AuthorsIds.Any(a => a == ba.AuthorId)).ToList();
            }
            else
            {
                bookToUpdate.BookAuthors = new List <BookAuthor>();
            }

            libraryDBContext.Books.Update(bookToUpdate);

            libraryDBContext.Entry <Book>(bookToUpdate).State = EntityState.Modified;

            libraryDBContext.SaveChanges();

            return(Ok());
        }
Пример #17
0
 public static void AddRequest(BookRequestModel request)
 {
     using (var context = new librarydbEntities())
     {
         context.requests.Add(new request
         {
             book   = context.books.Single(bk => bk.isbn == request.book.isbn),
             client = context.clients.Single(cl => cl.clientId == request.client.card.id),
         });
         context.SaveChanges();
     }
 }
Пример #18
0
 public BookResponse AddBook(BookRequestModel bookRequestModel)
 {
     try
     {
         // Call the AddBook Method of Books Repository Class
         var response = this.bookRepository.AddBook(bookRequestModel);
         return(response);
     }
     catch (Exception exception)
     {
         throw new Exception(exception.Message);
     }
 }
Пример #19
0
        public IActionResult Update(BookRequestModel bookRequest)
        {
            Book book = _bookRepository.FindWithAuthor(a => a.BookId == bookRequest.bookId).FirstOrDefault();

            if (book == null)
            {
                return(NotFound());
            }

            book.Title      = bookRequest.title;
            book.AuthorId   = bookRequest.authorID;
            book.CategoryId = bookRequest.categoryId;
            _bookRepository.Update(book);

            return(Ok());
        }
Пример #20
0
        public async Task <ActionResult> CreateABook([FromForm] BookRequestModel request)
        {
            var userId = User.Claims.Where(c => c.Type == "sub")
                         .Select(c => c.Value).SingleOrDefault();
            Book aBook = new Book()
            {
                Title             = request.Title,
                Description       = request.Description,
                Price             = request.Price,
                Quantity          = request.Quantity,
                ApplicationUserId = userId,
                CategoryId        = request.CategoryId,
                IsApproved        = false
            };

            if (request.ImageUrl != null && request.ImageUrl.Length > 0)
            {
                var fileName = Path.GetFileName(request.ImageUrl.FileName);
                var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\images", fileName);
                using (var fileSteam = new FileStream(filePath, FileMode.Create))
                {
                    await request.ImageUrl.CopyToAsync(fileSteam);
                }
                aBook.ImageUrl = fileName;
            }



            await _context.Books.AddAsync(aBook);

            if (await _context.SaveChangesAsync() > 0)
            {
                // var adminUser = _
                BackgroundJob.Enqueue <ILoginService>(x => x.SendEMailAdmin());
                var mybook = aBook;
                return(Ok(new
                {
                    aBook.Title,
                    aBook.ImageUrl,
                    aBook.BookId,
                    aBook.CategoryId,
                    aBook.Price,
                    aBook.ApplicationUserId,
                }));
            }
            return(BadRequest());
        }
Пример #21
0
        private async Task <BookDetailsServiceModel> Update(int bookId, BookRequestModel model)
        {
            var book = await _appContext.Books.FindAsync(bookId);

            book.AuthorId       = model.AuthorId; // TODO: use automapper in here
            book.Title          = model.Title;
            book.Description    = model.Description;
            book.Price          = model.Price;
            book.Copies         = model.Copies;
            book.Edition        = model.Edition;
            book.ReleaseDate    = model.ReleaseDate;
            book.AgeRestriction = model.AgeRestriction;

            await _appContext.SaveChangesAsync();

            return(Mapper.Map <BookDetailsServiceModel>(book));
        }
Пример #22
0
        public string AddImage(BookRequestModel requestModel)
        {
            Account account = new Account(
                configuration["CloudinarySettings:CloudName"],
                configuration["CloudinarySettings:ApiKey"],
                configuration["CloudinarySettings:ApiSecret"]);
            var        path       = requestModel.Image.OpenReadStream();
            Cloudinary cloudinary = new Cloudinary(account);

            var uploadParams = new ImageUploadParams()
            {
                File = new FileDescription(requestModel.Image.FileName, path)
            };

            var uploadResult = cloudinary.Upload(uploadParams);

            return(uploadResult.Url.ToString());
        }
        public bool Add(BookRequestModel bookRequestModel)
        {
            bool result = false;

            try
            {
                bookRequestModel.StatusID = (int)Enums.Status.pending_verification;
                var bookRequest = Mapper.Map <BookRequestModel, BookRequest>(bookRequestModel);
                bookRequest.CreateDate = DateTime.Now;
                _unitOfWork.BookRequestRepository.Insert(bookRequest);
                _unitOfWork.Save();
                result = true;
            }
            catch
            {
                //Log Error Future Work
            }
            return(result);
        }
Пример #24
0
        public IActionResult Create([FromBody] BookRequestModel bookRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
                // bookRequest.Authors = _bookRepository.GetAll();
            }

            if (_bookRepository.GetAll().Where(x => x.Title == bookRequest.title &&
                                               x.AuthorId == bookRequest.authorID).Any())
            {
                return(Content("The Book Title is in Database Already!"));
            }
            else
            {
                _bookRepository.Create(bookRequest.toEntity());
                return(Ok(bookRequest));
            }
        }
Пример #25
0
        public async Task <BookResult> CreateBookAsync(BookRequestModel bookRequestModel)
        {
            var command          = bookRequestModel.ToCommand();
            var validationErrors = _commandRunner.Validate(command, null);

            if (validationErrors.Any())
            {
                return(new BookResult {
                    ValidationErrors = validationErrors
                });
            }
            var id = await _commandRunner.Execute(command, null);

            var bookDto = await GetBookByIdAsync(id);

            return(new BookResult {
                BookDto = bookDto
            });
        }
Пример #26
0
        public async Task <IActionResult> CreateBook([FromBody] BookRequestModel bookRequestModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            try
            {
                var result = await _bookService.CreateBookAsync(bookRequestModel);

                if (result.HasErrors())
                {
                    return(BadRequest(result.ValidationErrors));
                }

                return(CreatedAtAction(nameof(GetBookById), new { id = result.BookDto.BookId }, result.BookDto));
            }
            catch (ValidationException validationException)
            {
                return(StatusCode(500, validationException.Message));
            }
        }
Пример #27
0
        public BookResponse AddBook(BookRequestModel createBookModel)
        {
            try
            {
                string image = AddImage(createBookModel);
                bookModel.BookName    = createBookModel.BookName;
                bookModel.AuthorName  = createBookModel.AuthorName;
                bookModel.Description = createBookModel.Description;
                bookModel.Price       = createBookModel.Price;
                bookModel.Quantity    = createBookModel.Quantity;
                bookModel.CreatedDate = DateTime.Now;
                bookModel.Image       = image;
                bookModel.IsDeleted   = "No";
                this.dbContext.Books.Add(bookModel);
                this.dbContext.SaveChanges();

                return(Response(bookModel));
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        public async Task <IActionResult> DeleteBook([FromBody] BookRequestModel model)
        {
            var dbProvider = _dbBuilder.SetConnectionString(_dbConfiguration.ConnectionString)
                             .SetDatabase(_dbConfiguration.Database)
                             .SetCollection(_dbConfiguration.BooksCollection)
                             .Build();
            var book = await dbProvider.FindRecordAsync <Book>("isbn", model.Isbn);

            dbProvider.Collection = _dbConfiguration.UsersCollection;
            var givenName = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.GivenName);
            var user      = await dbProvider.FindRecordAsync <User>("givenname", givenName.Value);

            if (user != null && book != null)
            {
                var existingBook = user.Books.Contains(book);
                if (existingBook)
                {
                    user.Books.Remove(book);
                    await dbProvider.UpdateAsync <User>(user, "givenname", givenName.Value);
                }
            }

            return(Ok());
        }
Пример #29
0
        public async Task <Option <BookDetailsServiceModel, Error> > UpdateByModelAndId(int bookId, BookRequestModel model)
        {
            if (await Exists(bookId))
            {
                if (await _authorService.Exists(model.AuthorId))
                {
                    return((await Update(bookId, model)).Some <BookDetailsServiceModel, Error>());
                }

                return(Option.None <BookDetailsServiceModel, Error>($"Author with ID:{model.AuthorId} does not exists!".ToError()));
            }

            return(Option.None <BookDetailsServiceModel, Error>($"Book with ID:{bookId} does not exists!".ToError()));
        }
Пример #30
0
 public async Task <IActionResult> Put(int id, [FromBody] BookRequestModel model) =>
 (await _bookService.UpdateByModelAndId(id, model))
 .Match(Ok, Error);
Пример #31
0
        public static ArchiveModel LoadFromDb()
        {
            ArchiveModel model = new ArchiveModel();

            using (var context = new librarydbEntities())
            {
                var authors  = context.authors.ToList();
                var books    = context.books.ToList();
                var clients  = context.clients.ToList();
                var offers   = context.offers.ToList();
                var requests = context.requests.ToList();
                foreach (var book in books)
                {
                    BookModel bm = BookModelFromEntity(book);
                    model.books.Add(bm.isbn, bm);
                    model.amounts[bm.isbn] = (int)book.amount;
                }
                foreach (var client in clients)
                {
                    ClientModel cm = new ClientModel
                    {
                        birth_year = client.age,
                        balance    = client.balance,
                        card       = new ClientCardModel
                        {
                            completedOffers = client.offers.Where(off => off.status == "Completed").Select(off => off.id).ToList(),
                            pendingOffers   = client.offers.Where(off => off.status == "Pending").Select(off => off.id).ToList(),
                            id       = client.clientId,
                            requests = client.requests.Select(req => req.idRequests).ToList()
                        },
                        login    = client.login,
                        password = client.password,
                        name     = client.name,
                        sex      = "male"
                    };
                    model.clients.Add(cm.card.id, cm);
                }
                foreach (var request in requests)
                {
                    BookRequestModel br = new BookRequestModel
                    {
                        id     = request.idRequests,
                        book   = model.books[request.book.isbn],
                        client = model.clients[request.client_id]
                    };
                    model.requests.Add(br);
                }
                foreach (var offer in offers)
                {
                    OfferModel off = new OfferModel
                    {
                        id         = offer.id,
                        returnDate = Convert.ToDateTime(offer.deadline),
                        status     = (OfferStatus)Enum.Parse(typeof(OfferStatus), offer.status),
                        book       = model.books[offer.book.isbn],
                        client     = model.clients[offer.client_id]
                    };
                    if (off.status == OfferStatus.Completed)
                    {
                        model.completedOffers.Add(off.id, off);
                    }
                    else if (off.status == OfferStatus.Pending)
                    {
                        model.pendingOffers.Add(off.id, off);
                    }
                }
            }
            return(model);
        }