public IActionResult ValidateCard_Metro([FromBody] ValidateCard_Metro_ViewModel validationInfo) { try { if (ModelState.IsValid) { if (!validationInfo.ValidationOnEmbarkation.Value)//if intent is to disembark... { //check if user has embarked within 5 hours ago... if (!CardsRepo.HasEmbarkedBefore_Metro(validationInfo.ValidatingCardId)) { return(BadRequest(_config["TicketValidationResult:FailedValidation_dueTo_InternalServerError"])); } } //check the validity of the card... var cardValidity = CardsRepo.CheckCardsValidity(validationInfo.ValidatingCardId); //if card is not valid, and expirationdate is less than 1/1/2000, then the card does not exist... if (!cardValidity.Validity && cardValidity.ExpirationDate < Convert.ToDateTime("2000-01-01")) { return(BadRequest(_config["StatusCodesText:GeneralInputError"])); } if (!cardValidity.Validity) { return(BadRequest(_config["TicketValidationResult:FailedValidation_dueTo_ExpiredSubscription"])); } //if card is valid, create entry in validation activity... if (CardsRepo.ValidateCard_OnMetro(validationInfo))//if validation is successful... display success message with card's expiration date... { return(Ok(_config["TicketValidationResult:SuccessfulValidation"] + cardValidity.ExpirationDate)); } //if none of the above, return a general error return(BadRequest(_config["TicketValidationResult:FailedValidation_dueTo_InternalServerError"])); } return(BadRequest(ModelState)); } catch (Exception e) { return(StatusCode(500, _config["StatusCodesText:ServerErr"])); } }