public IHttpActionResult EditCreditCard([FromBody] EditedCreditCard editedCreditCard) { var result = this.serviceHandler.CreditCardService.UpdateCreditCard(editedCreditCard, this.repositoriesHandler, this.serviceHandler.PasswordService, this.resourcesProvider); if (result.Success) { return(Ok(result.SuccessMessage)); } else { return(Content(HttpStatusCode.ExpectationFailed, result.Error)); } }
public Result UpdateCreditCard(EditedCreditCard editedCreditCard, IRepositoriesHandler repositoriesHandler, IPasswordService passwordService, IResourcesProvider resourcesProvider) { var result = new Result(); var isCardNumExist = repositoriesHandler.СreditCardRepository.GetCollection().Any(x => x.CardNumber == editedCreditCard.CardNumber && x.CreditCardID != editedCreditCard.CreditCardID); if (isCardNumExist) { result.Success = false; result.Error = resourcesProvider.GetGeneralResource("CCNumExist"); return(result); } if (!IsCreditCardDataValid(editedCreditCard.CardNumber, editedCreditCard.CurrentPIN)) { result.Success = false; result.Error = resourcesProvider.GetGeneralResource("NoNumPin"); return(result); } var storedCreditCard = repositoriesHandler.СreditCardRepository.GetById(editedCreditCard.CreditCardID); if (passwordService.ComparePasswords(editedCreditCard.CurrentPIN, storedCreditCard.PIN)) { storedCreditCard.CardNumber = editedCreditCard.CardNumber; storedCreditCard.Amount = editedCreditCard.Amount; storedCreditCard.PIN = string.IsNullOrEmpty(editedCreditCard.NewPIN) ? storedCreditCard.PIN : passwordService.HashPassword(editedCreditCard.NewPIN); repositoriesHandler.СreditCardRepository.Update(storedCreditCard); result.Success = true; result.SuccessMessage = resourcesProvider.GetGeneralResource("CCUpdt"); return(result); } else { result.Success = false; result.Error = resourcesProvider.GetGeneralResource("PinsDontMatch"); return(result); } }