public async Task <ResponseModel <UserServicesItem> > CreateAsync(BookRequestParam item, SecurityModel security) { ResponseModel <UserServicesItem> response = new ResponseModel <UserServicesItem>(); try { UserServicesItem bookRequestInfo = new UserServicesItem(); ScanFilter filter = new ScanFilter(); filter.AddCondition("UserId", ScanOperator.Equal, item.UserId); filter.AddCondition("BookId", ScanOperator.Equal, item.BookId); filter.AddCondition("IsReserved", ScanOperator.Equal, true); var userContextItem = _dynamodbContext.GetAsync(filter).Result; if (!userContextItem.Any()) { var user = await _dynamoDbUserContex.GetByIdAsync(item.UserId); var book = await _dynamoDBBookContext.GetByIdAsync(item.BookId); if (string.IsNullOrEmpty(bookRequestInfo.Id)) { bookRequestInfo.Id = Guid.NewGuid().ToString(); } bookRequestInfo.BookId = item.BookId; bookRequestInfo.UserId = item.UserId; bookRequestInfo.RequestStatus = "Requested"; bookRequestInfo.BookName = book.BookName; bookRequestInfo.BookAuthor = book.BookAuthor; bookRequestInfo.BookType = book.BookType; bookRequestInfo.BookPrice = book.BookPrice; bookRequestInfo.Stock = book.Stock; bookRequestInfo.UserName = user.UserName; bookRequestInfo.Email = user.Email; bookRequestInfo.FirstName = user.FirstName; bookRequestInfo.LastName = user.LastName; bookRequestInfo.SubmittedOn = DateTime.UtcNow; bookRequestInfo.IsReserved = true; await _dynamodbContext.SaveAsync(bookRequestInfo); response.Status = true; response.ReturnMessage.Add("Your request has been submitted to admin, Please wait for approbal."); } else { response.Status = true; response.ReturnMessage.Add("Oops!! You have already requested this book."); } } catch (Exception ex) { response.Status = false; response.ReturnMessage.Add(ex.Message); } return(response); }
public async Task <IActionResult> BookRequest(BookRequestParam entity) { SecurityModel securityModel = (SecurityModel)(HttpContext.Items["SecurityModel"]); ResponseModel <UserServicesItem> response = new ResponseModel <UserServicesItem>(); try { response = await _userServices.CreateAsync(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)); } }