public async Task <ResponseModel <BookDetails> > InventoryReturnEntry(InverntoryReturnRequest entity, SecurityModel securityModel) { ResponseModel <BookDetails> response = new ResponseModel <BookDetails>(); try { ScanFilter filter = new ScanFilter(); var book = await _dynamoDbBookContext.GetByIdAsync(entity.BookId); filter.AddCondition("BookId", ScanOperator.Equal, entity.BookId); filter.AddCondition("UserId", ScanOperator.Equal, entity.UserId); var inventoryHistory = _dynamoDbHistoryContex.GetAsync(filter).Result.FirstOrDefault(); if (inventoryHistory != null) { inventoryHistory.ReturnStatus = BookReturnStatus.Returned; inventoryHistory.BookReturnDate = DateTime.UtcNow; if (book.librarian.RenewOn < DateTime.UtcNow) { var dateDiff = (DateTime.UtcNow - book.librarian.RenewOn); inventoryHistory.LateBy = dateDiff.Value.TotalDays.ToString(); } await _dynamoDbHistoryContex.SaveAsync(inventoryHistory); book.RemaningStock = book.RemaningStock + 1; await _dynamoDbBookContext.SaveAsync(book); var bookUserService = _dynamouserServices.GetAsync(filter).Result.FirstOrDefault(); if (bookUserService != null) { bookUserService.IsReserved = false; await _dynamouserServices.SaveAsync(bookUserService); } response.Entity = book; response.Status = true; response.ReturnMessage.Add("Book stock has been updated sucessfully."); } else { response.Entity = book; response.Status = true; response.ReturnMessage.Add("Oops!! book details not found in the history."); } } catch (AmazonServiceException amazon) { response.Status = false; response.ReturnMessage.Add($"Amazon error in table operation! Error: {amazon.Message}"); } catch (Exception ex) { response.Status = false; response.ReturnMessage.Add(ex.Message); } return(response); }
public async Task <IActionResult> InventoryReturnEntry(InverntoryReturnRequest entity) { SecurityModel securityModel = (SecurityModel)(HttpContext.Items["SecurityModel"]); ResponseModel <BookDetails> response = new ResponseModel <BookDetails>(); try { response = await _inventoryServices.InventoryReturnEntry(entity, securityModel); response.Token = securityModel.Token; if (!response.Status) { return(BadRequest(response)); } return(Ok(response)); } catch (Exception ex) { response.Status = false; response.ReturnMessage.Add(ex.Message); return(BadRequest(response)); } }