예제 #1
0
        public async Task <bool> UnBlockBooks(BlockBooks blockedbookdetails)
        {
            try
            {
                var      database       = LibManagementConnection.GetConnection();
                var      userCollection = database.GetCollection <UserDetails>(CollectionConstant.User_Collection);
                ObjectId objectId       = ObjectId.Parse(blockedbookdetails.BookID);
                var      builders       = Builders <UserDetails> .Filter.And(Builders <UserDetails> .Filter.Eq(x => x.Id, objectId));

                var update = Builders <UserDetails> .Update.PullFilter("blockedBooks", Builders <BsonDocument> .Filter.Eq("isbnNumber", blockedbookdetails.ISBNNumber));

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

                if (result != null)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
예제 #2
0
        public async Task <bool> BlockBooks(BlockBooks blockedbookdetails)
        {
            try
            {
                var      database = LibManagementConnection.GetConnection();
                var      bookDetailsCollection = database.GetCollection <BookDetails>(CollectionConstant.Book_Collection);
                ObjectId objectId = ObjectId.Parse(blockedbookdetails.BookID);
                var      builders = Builders <BookDetails> .Filter.And(Builders <BookDetails> .Filter.Eq(x => x.Id, objectId), Builders <BookDetails> .Filter.ElemMatch(x => x.ISBNNumber, c => c.TrackNo == blockedbookdetails.ISBNNumber));

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

                var configDetails = await configRepository.GetConfigDetails();

                var data = bookDetailsCollection.Find(x => x.Id == objectId).First();
                int blockedBooksCount = data.BlockBooks?.Count() ?? 0;
                if (blockedBooksCount <= configDetails.BookBlockLimit)
                {
                    var IsISBNExists = bookDetails?.All(x => x.BlockBooks?.Any(y => y.ISBNNumber == blockedbookdetails.ISBNNumber) ?? false);
                    if (!IsISBNExists ?? false && blockedbookdetails.BookID != null)
                    {
                        blockedbookdetails.Created = DateTime.Now;
                        var update = Builders <BookDetails> .Update.Push("blockedBooks", blockedbookdetails).Inc("availableCopies", -1).Inc("blockedCopies", 1).Set("isbnNumber.$.occupied", true);

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

                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
예제 #3
0
        public async Task <IHttpActionResult> UnBlockBooks([FromBody] BlockBooks blockedBooks)
        {
            try
            {
                var isBookUnBlocked = await booksRepository.UnBlockBooks(blockedBooks);

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