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; } }
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; } }
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()); } }