public async Task <bool> EditIsbnDetails(ISBNNumber iSBNNumber)
        {
            try
            {
                var database = LibManagementConnection.GetConnection();

                var      booksDetailsCollection = database.GetCollection <BookDetails>(CollectionConstant.Book_Collection);
                ObjectId objectId = ObjectId.Parse(iSBNNumber.BookID);
                var      data     = await booksDetailsCollection.FindAsync(x => x.Id == objectId);

                var matchedDetails = await data.ToListAsync();

                var item    = matchedDetails.FirstOrDefault(x => x.Id == objectId);
                var details = item.ISBNNumber.First(i => i.TrackNo == iSBNNumber.TrackNo);
                details.Author         = iSBNNumber.Author;
                details.Description    = iSBNNumber.Description;
                details.Edition        = iSBNNumber.Edition;
                details.PublishingYear = iSBNNumber.PublishingYear;
                var result = booksDetailsCollection.ReplaceOne(c => c.Id == item.Id, item);
                if (result.IsModifiedCountAvailable)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public async Task <bool> DeleteBookDetails(ISBNNumber isbnDetails)
        {
            //IClientSessionHandle session = null;
            try
            {
                var database = LibManagementConnection.GetConnection();
                // session = database.Client.StartSession();
                //session.StartTransaction();
                var      todoTaskCollection = database.GetCollection <BookDetails>(CollectionConstant.Book_Collection);
                ObjectId objectId           = ObjectId.Parse(isbnDetails.BookID);

                var builders = Builders <BookDetails> .Filter.And(Builders <BookDetails> .Filter.Eq(x => x.Id, objectId));

                var update = Builders <BookDetails> .Update.PullFilter("isbnNumber", Builders <BsonDocument> .Filter.Eq("trackNo", isbnDetails.TrackNo)).Inc("numberOfCopies", -1);

                var result = await todoTaskCollection.FindOneAndUpdateAsync(builders, update);

                //session.CommitTransaction();
                return(true);
            }
            catch (Exception ex)
            {
                //session?.AbortTransaction();
                throw ex;
            }
        }
Example #3
0
        //DELETE: api/Books/5
        public async Task <HttpResponseMessage> Delete([FromBody] ISBNNumber isbnDetails)
        {
            try
            {
                var result = await booksRepository.DeleteBookDetails(isbnDetails);

                if (result)
                {
                    return(new HttpResponseMessage()
                    {
                        StatusCode = HttpStatusCode.OK
                    });
                }
                return(new HttpResponseMessage()
                {
                    StatusCode = HttpStatusCode.BadRequest
                });
            }
            catch (Exception ex)
            {
                loggers.LogError(ex);
                return(new HttpResponseMessage()
                {
                    StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent(JsonConvert.SerializeObject(ex.Message))
                });
            }
        }
Example #4
0
        // POST: api/Books
        public async Task <HttpResponseMessage> AddISBNDetails([FromBody] ISBNNumber isbnDetails)
        {
            try
            {
                var result = await booksRepository.AddSubCategoryToExistingBook(isbnDetails);

                if (result.StatusCode != HttpStatusCode.OK)
                {
                    return(new HttpResponseMessage()
                    {
                        StatusCode = result.StatusCode, Content = new JsonContent(result.Message)
                    });
                }
                return(new HttpResponseMessage()
                {
                    StatusCode = HttpStatusCode.OK
                });
            }
            catch (Exception ex)
            {
                loggers.LogError(ex);
                return(new HttpResponseMessage()
                {
                    StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent(JsonConvert.SerializeObject(ex.Message))
                });
            }
        }
        public async Task <Response <string> > AddSubCategoryToExistingBook(ISBNNumber isbnDetails)
        {
            //IClientSessionHandle session = null;
            try
            {
                var database = LibManagementConnection.GetConnection();
                //session = database.Client.StartSession();
                //session.StartTransaction();
                var todoTaskCollection = database.GetCollection <BookDetails>(CollectionConstant.Book_Collection);

                ObjectId objectId = ObjectId.Parse(isbnDetails.BookID);
                var      builders = Builders <BookDetails> .Filter.And(Builders <BookDetails> .Filter.Where(x => x.Id == objectId));

                var bookDetails = await todoTaskCollection.Find(builders).ToListAsync();

                var IsISBNExists = bookDetails.All(x => x.ISBNNumber.All(y => y.TrackNo == isbnDetails.TrackNo));

                if (!IsISBNExists && isbnDetails.BookID != null)
                {
                    isbnDetails.Created = System.DateTime.Now;
                    var update = Builders <BookDetails> .Update.Push("isbnNumber", isbnDetails).Inc("numberOfCopies", 1).Inc("availableCopies", 1);

                    var result = await todoTaskCollection.FindOneAndUpdateAsync(builders, update);

                    //session.CommitTransaction();
                    if (result != null)
                    {
                        return(new Response <string>()
                        {
                            StatusCode = System.Net.HttpStatusCode.OK
                        });
                    }
                    else
                    {
                        return(new Response <string>()
                        {
                            StatusCode = System.Net.HttpStatusCode.NotFound
                        });
                    }
                }
                else
                {
                    return(new Response <string>()
                    {
                        StatusCode = System.Net.HttpStatusCode.BadRequest, Message = "ISBN Number Already Exists"
                    });
                }
            }
            catch (Exception ex)
            {
                //session?.AbortTransaction();
                throw ex;
            }
        }
Example #6
0
        public async Task <IHttpActionResult> EditBookDetails([FromBody] ISBNNumber iSBNNumber)
        {
            try
            {
                var res = await booksRepository.EditIsbnDetails(iSBNNumber);

                if (res)
                {
                    return(Ok());
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception e)
            {
                loggers.LogError(e);
                return(InternalServerError());
            }
        }