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