public ResponseModel <UserViewModel> ChangePassword(ChangePasswordViewModel model) { ResponseModel <UserViewModel> response = new ResponseModel <UserViewModel>(); try { var user = _dynamodbUserContext.GetByIdAsync(model.UserId).Result; var oldPassword = Hasher.GenerateHash(model.OldPassword + user.Salt); if (user.Password != oldPassword) { response.ReturnMessage.Add("Password is incorrect"); response.Status = false; return(response); } // New Password var salt = Hasher.GetSalt(); string hashedPassword = Hasher.GenerateHash(model.NewPassword + salt); user.Salt = salt; user.Password = hashedPassword; _dynamodbUserContext.SaveAsync(user); response.Entity = _mapper.Map <UserViewModel>(user); response.Status = true; response.ReturnMessage.Add("Password changed successfully."); } catch (Exception ex) { response.Status = false; response.ReturnMessage.Add(ex.Message); } return(response); }
public async Task <ResponseModel <BookDetails> > DeleteAsync(string id) { ResponseModel <BookDetails> response = new ResponseModel <BookDetails>(); try { var item = await _dynamoDbBookContext.GetByIdAsync(id); await _dynamoDbBookContext.DeleteByIdAsync(item); response.Status = true; response.ReturnMessage.Add("Book has been deleted successfully."); } 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 <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 <ResponseModel <string> > ApproveUserRequest(RequestApproveModel entity, SecurityModel securityModel) { ResponseModel <string> response = new ResponseModel <string>(); try { var bookRequestbyUser = await _dynamodbContext.GetByIdAsync(entity.Id); var user = await _dynamoDbUserContex.GetByIdAsync(entity.UserId); var book = await _dynamoDBBookContext.GetByIdAsync(entity.BookId); bookRequestbyUser.RequestStatus = entity.Status; //Approved, Rejected await _dynamodbContext.SaveAsync(bookRequestbyUser); if (entity.Status == "Approved") { book.RemaningStock = (book.Stock - 1); book.UserDetails.Add(_mapper.Map <UserViewModel>(user)); book.librarian.IssieOn = DateTime.UtcNow; book.librarian.RenewOn = DateTime.UtcNow.AddDays(7); await _dynamoDBBookContext.SaveAsync(book); InventoryHistory invHistory = new InventoryHistory { Id = Guid.NewGuid().ToString(), BookId = entity.BookId, BookAuthor = book.BookAuthor, BookDescription = book.BookDescription, BookName = book.BookName, BookPrice = book.BookPrice, BookPublication = book.BookPublication, BookType = book.BookType, City = user.City, Email = user.Email, FirstName = user.FirstName, LastName = user.LastName, MobileNumber = user.MobileNumber, PostCode = user.PostCode, State = user.State, Suburb = user.Suburb, UserId = entity.UserId, UserName = user.Email, librarian = new librarian { BookId = entity.BookId, IssieOn = book.librarian.IssieOn, IssueDescription = book.librarian.IssueDescription, RenewOn = book.librarian.RenewOn }, RenewOn = book.librarian.RenewOn, ReturnStatus = BookReturnStatus.Borrow }; await _dynamoDbHistoryContex.SaveAsync(invHistory); } else { bookRequestbyUser.IsReserved = false; } await _mailService.SendMail("", user.Email, "Request '" + entity.Status + "'", "Hi '" + user.FirstName + "' you request has been '" + entity.Status + "'"); response.Entity = "success"; response.Status = true; response.ReturnMessage.Add("Request has been " + entity.Status + " sucessfully."); } 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); }