/// <summary> /// Responsible for business lógic of token validation /// </summary> /// <param name="registrationDate"></param> /// <param name="token"></param> /// <param name="cvv"></param> /// <returns>boolean wich indicate if token is valid or not</returns> public async Task <bool> ValidateToken(DateTime registrationDate, long token, int cvv) { //pre validations validateCvv(cvv); validateRegistrationDate(registrationDate); if (token <= default(int) || token.ToString().Length == default(int)) { return(false); } //if registration date toke toked more than 15 minutes if (registrationDate < DateTime.UtcNow.AddMinutes(-15)) { return(false); } var dbCard = await _repository.Find(registrationDate); //haven't found Card so is an invalid token if (dbCard == null) { return(false); } //Create a new token var dbCardToken = await CreateToken(dbCard.CardNumber, cvv, registrationDate, true); //check if created token is the same of provided one and return return(token == dbCardToken); }