Ejemplo n.º 1
0
        public bool ValidateCard_OnBus(ValidateCard_Bus_ViewModel validationInfo)
        {
            try
            {
                //create new validation entry...
                var validationEntryToAdd = new ValidationActivity()
                {
                    CardId      = validationInfo.ValidatingCardId.Value,
                    BusId       = validationInfo.ValidatingAtBusId,
                    RouteId     = validationInfo.RouteId,
                    ValidatedOn = DateTime.Now,
                    ValidatedAt = null //validating card on a bus, there is no need to specify if it took place on embarkation or disembarkation...
                };

                //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_Bus([FromBody] ValidateCard_Bus_ViewModel validationInfo)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    //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_OnBus(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"]));
            }
        }