Ejemplo n.º 1
0
        public dynamic ValidateCard_OnMetro(ValidateCard_Metro_ViewModel validationInfo)
        {
            try
            {
                //create new validation entry...
                var validationEntryToAdd = new ValidationActivity()
                {
                    CardId      = validationInfo.ValidatingCardId.Value,
                    StationId   = validationInfo.ValidatingAtStationId,
                    ValidatedOn = DateTime.Now,
                    ValidatedAt = GetEnumForEmbarkation_Disembarkation(validationInfo.ValidationOnEmbarkation.Value)
                };

                //add new entry...
                db.Add(validationEntryToAdd);
                var savingResult = db.SaveChanges();

                //return result...
                if (savingResult != 0)
                {
                    return(true);
                }
                return(false);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        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"]));
            }
        }