public ValidatedResult <TResponse> Send <TResponse>(IRequest <TResponse> request)
        {
            using (LoggerContext.DecorateWithUser())
            {
                _logger.Debug("Send {@request} for {User}", request);
            }

            var validationSummary = _requestValidator.Validate(request);

            return(GetValidatedResult(request, validationSummary));
        }
Example #2
0
        public void Validate_InvalidLogFileId_ReturnsFailure(int logFileId)
        {
            RequestModel model = DataHelper.CreateRequestModel();

            model.LogFileId = logFileId;

            ValidationResult result = _requestValidator.Validate(model);

            Assert.IsFalse(result.Success);
            Assert.AreEqual(1, result.Messages.Count);
            Assert.IsTrue(result.Messages[0].Contains("Log file id"));
        }
Example #3
0
        /// <summary>Executes the command</summary>
        /// <returns>The result of the command</returns>
        public override BulkCopyResult Execute()
        {
            _requestValidator.Validate(CommandRequest);

            if (CommandRequest.MappingType == MappingType.AutoMap || CommandRequest.MappingType == MappingType.PartialMap)
            {
                CommandRequest.ColumnMapping ??= new ColumnMapping();

                _autoMapper.MapDataTableToTable(CommandRequest.DestinationTableName, CommandRequest.DataTable, CommandRequest.ColumnMapping);
            }

            return(_databaseCommander.BulkCopy(CommandRequest));
        }
Example #4
0
        public async Task <IActionResult> GetUserTasks([FromBody] GetUserTasksRequest request)
        {
            var result = _requestValidator.Validate(request);

            if (!result.IsValid)
            {
                throw new InvalidValueException(result.Errors.Select(e => e.ErrorMessage).Distinct().ToArray());
            }

            var tasks = await _tasksService.GetTasksByEmail(request.Email);

            return(Ok(_mapper.Map <List <GetTaskResponse> >(tasks)));
        }
        public async Task GivenValidInput_ReturnsNoError()
        {
            var countries = new List <Country>()
            {
                new Country("TS", "Test")
            };

            _countryService.Setup(x => x.GetCountryByCountryCode("TS"))
            .Returns(Task.FromResult(countries));

            var validationError = await _requestValidator.Validate(100, "TS", "Swimming");

            validationError.Count.ShouldBe(0);
        }
Example #6
0
      public IActionResult Post(AddSampleRequest request)
      {
          var validationResult = requestValidator.Validate(request);

          if (!validationResult.IsValid)
          {
              return(BadRequest(Messages.InvalidRequest));
          }

          var result = sampleService.Add(request);

          return(!result.IsSuccess
                 ? Problem(Messages.GeneralError)
                 : Ok(result.Message));
      }
        public bool ValidateCallback(HttpContext suppliedContext = null)
        {
            var contextToUse = _context ?? suppliedContext;

            if (contextToUse == null)
            {
                throw new ArgumentNullException("request");
            }

            if (contextToUse.Request?.Host.Host == null)
            {
                return(false);
            }
            if (contextToUse.Request == null || contextToUse.Request.Form == null)
            {
                return(false);
            }
            string authorizationHeader = contextToUse.Request.Headers[_RevaleeAuthHttpHeaderName];

            if (string.IsNullOrWhiteSpace(authorizationHeader))
            {
                return(false);
            }

            Guid callbackId;

            if (!Guid.TryParse(contextToUse.Request.Form["callbackId"], out callbackId))
            {
                return(false);
            }
            var callbackUrl = $"{contextToUse.Request.Scheme}{UriKeys.SchemeDelimiter}{contextToUse.Request.Host.ToUriComponent()}{contextToUse.Request.Path.ToUriComponent()}";

            return(_validator.Validate(authorizationHeader, callbackId, new Uri(callbackUrl)));
        }
Example #8
0
        public async Task <CancelGameResult> Handle(CancelGame request, CancellationToken cancellationToken)
        {
            using (var transaction = repositoryTransactionsFactory.CreateTransaction())
            {
                var validatorResult = await validator.Validate(request);

                if (!validatorResult.IsSuccessful)
                {
                    return(new CancelGameResult(validatorResult.Error));
                }

                var ended = await gamesRepository.CancelGame(request.GameId);

                if (!ended)
                {
                    return(new CancelGameResult(GameErrors.GameCouldNotBeCancelled));
                }

                var checkpoint = await gameCheckpointUpdater.Update(request.GameId, nameof(SkipRound));

                transaction.CommitTransaction();

                return(new CancelGameResult());
            }
        }
Example #9
0
        public async Task <StartGameRoundResult> Handle(StartGameRound request, CancellationToken cancellationToken)
        {
            using (var transaction = repositoryTransactionsFactory.CreateTransaction())
            {
                var validatorResult = await validator.Validate(request);

                if (!validatorResult.IsSuccessful)
                {
                    return(new StartGameRoundResult(validatorResult.Error));
                }

                var started = await gameRoundsRepository
                              .UpdateGameRoundStatus(request.GameRoundId, Common.Enums.GameRoundStatusEnum.InProgress);

                if (!started)
                {
                    return(new StartGameRoundResult(GameErrors.GameRoundCouldNotBeStarted));
                }

                var checkpoint = await gameCheckpointUpdater.Update(request.GameId, nameof(StartGameRound));

                transaction.CommitTransaction();

                return(new StartGameRoundResult());
            }
        }
Example #10
0
        public async Task <EndSubmissionsResult> Handle(EndSubmissions request, CancellationToken cancellationToken)
        {
            using (var transaction = repositoryTransactionsFactory.CreateTransaction())
            {
                var validationResult = await requestValidator.Validate(request);

                if (!validationResult.IsSuccessful)
                {
                    return(new EndSubmissionsResult(validationResult.Error));
                }

                var updated = await gameRoundsRepository
                              .UpdateGameRoundStatus(request.GameRoundId, Common.Enums.GameRoundStatusEnum.Selection);

                if (!updated)
                {
                    return(new EndSubmissionsResult(GameErrors.CouldNotEndAnswersSubmissions));
                }

                var checkpoint = await gameCheckpointUpdater.Update(request.GameId, nameof(EndSubmissions));

                transaction.CommitTransaction();

                return(new EndSubmissionsResult());
            }
        }
        public Audit <TableBooking> CreateBooking(BookingRequestDto bookingRequestDto)
        {
            var validationResult = _requestValidator.Validate(bookingRequestDto);

            if (!validationResult.IsSucces)
            {
                throw new ValidationException(validationResult.Error);
            }

            var validatedRequest = validationResult.Ok;
            var tables           = _dataService.GetTables();
            var bookingsForToday = _dataService.FindBookings(validatedRequest.Date);

            var bookingCreationResult = _bookingCreator.Create(validatedRequest, tables, bookingsForToday);

            if (!bookingCreationResult.IsSucces)
            {
                throw new NoSeatsException(bookingCreationResult.Error);
            }

            var createBy       = CurrentContext.CurrentUser;
            var createAt       = DateTimeOffset.Now;
            var auditedBooking = _dataService.SaveBooking(bookingCreationResult.Ok, createBy, createAt);

            return(auditedBooking);
        }
Example #12
0
        public async Task <JoinGameResult> Handle(JoinGame request, CancellationToken cancellationToken)
        {
            using (var transaction = repositoryTransactionsFactory.CreateTransaction())
            {
                var validationResult = await requestValidator.Validate(request);

                if (!validationResult.IsSuccessful)
                {
                    return(new JoinGameResult(validationResult.Error));
                }

                var maxNumber = await playersRepository.GetMaxPlayerNumberForGame(request.GameId);

                var player = await CreatePlayer(request.GameId, request.UserId, ++maxNumber);

                var cardCount = await CreatePlayerAnswerCards(request.GameId, player.PlayerId, GameConstants.StartingPlayerCardsCount);

                if (cardCount != GameConstants.StartingPlayerCardsCount)
                {
                    return(new JoinGameResult(GameErrors.NotEnoughAnswerCards));
                }

                await gameCheckpointUpdater.Update(request.GameId, nameof(JoinGame));

                transaction.CommitTransaction();

                return(new JoinGameResult
                {
                    PlayerId = player.PlayerId
                });
            }
        }
        public async Task <CreateUserResult> Handle(AuthenticateGoogleUser request, CancellationToken cancellationToken)
        {
            var validationResult = await requestValidator.Validate(request);

            if (!validationResult.IsSuccessful)
            {
                return(new CreateUserResult(validationResult.Error));
            }

            if (await usersRepository.GoogleUserExists(request.Email, request.GoogleId))
            {
                return(await UpdateExistingGoogleUser(request));
            }
            else
            {
                if (await usersRepository.UserEmailExists(request.Email))
                {
                    return(await AddGoogleLoginToExistingUser(request));
                }
                else
                {
                    return(await CreateNewGoogleUser(request));
                }
            }
        }
Example #14
0
        public async Task <TokenResponse> Login(LoginRequest request)
        {
            var result = _requestValidator.Validate(request);

            if (!result.IsValid)
            {
                throw new InvalidValueException(result.Errors.Select(e => e.ErrorMessage).Distinct().ToArray());
            }

            var token = await _identityProvider.RequestPasswordTokenAsync(request);

            if (token.IsError)
            {
                throw new HttpStatusCodeException(HttpStatusCode.Forbidden, "Authentication failed");
            }

            return(JsonConvert.DeserializeObject <TokenResponse>(token.Raw));
        }
Example #15
0
        public async Task <IActionResult> AddUser([FromBody] CreateUserRequest request)
        {
            var result = _requestValidator.Validate(request);

            if (!result.IsValid)
            {
                {
                    throw new InvalidValueException(result.Errors.Select(e => e.ErrorMessage).Distinct().ToArray());
                }
            }

            var user = _mapper.Map <User>(request);
            await _usersService.AddUser(user);

            return(Ok(new CreateUserResponse()
            {
                UserId = user.UserId
            }));
        }
Example #16
0
        public Task <ServiceResponse> OnRequest <TReq>(IServiceInstance service, TReq request, CancellationToken cancellationToken) where TReq : BaseRequest, new()
        {
            IDictionary <string, string[]> validationResult = _requestValidator.Validate(request);

            if (validationResult.Count == 0)
            {
                return(Task.FromResult(this.ContinuePipeline()));
            }

            return(Task.FromResult(new ServiceResponse(new ResponseMetaData(service, ServiceResult.ValidationError, validationErrors: validationResult))));
        }
Example #17
0
        public async Task <IHttpActionResult> GetGiftAid(decimal donationAmount, string country, string eventType)
        {
            var validationErrors = await _requestValidator.Validate(donationAmount, country, eventType);

            if (validationErrors.Any())
            {
                return(Content(HttpStatusCode.BadRequest, new GiftAidErrorResponse(validationErrors)));
            }

            var giftAidAmount = await _giftAidOrchestrationService.CalculateGiftAid(donationAmount, country, eventType);

            return(Content(HttpStatusCode.OK, new GiftAidResponse(giftAidAmount)));
        }
Example #18
0
        public async Task <IActionResult> Estimate([FromQuery] TaxiRequest order)
        {
            if (_validator.Validate(order) == false)
            {
                return(BadRequest());
            }

            var price = await _taxi.EstimateOrderAsync(order);

            var vm = _mapper.Map(price);

            return(Ok(vm));
        }
        public ActionResult ValidateData([FromBody] ValidationRequest request)
        {
            var requestValidation = _validator.Validate(request);

            if (!requestValidation.IsValid)
            {
                return(BadRequest(requestValidation.InvalidReason));
            }

            var    job   = _jobFactory.Create(request);
            string jobId = BackgroundJob.Enqueue(() => job.Execute(request));

            return(Ok(jobId));
        }
Example #20
0
        public override async Task get_calendar_information(CalendarInformationRequest request, IServerStreamWriter <CalendarInformationReply> responseStream,
                                                            ServerCallContext context)
        {
            _logger.LogInformation($"GetCalendarInformation request for {request.Calendar.CalendarId}");

            _requestValidator.Validate(request);

            var graphCalendarClient = CreateGraphCalendarClient(request.Client);
            var graphEvents         = await graphCalendarClient.GetEventsAsync(request.Calendar);

            var azureReplyEvents = CreateReplyEventsOf(graphEvents);

            _logger.LogInformation($"Sending response for request {request}");

            foreach (var replyEvent in azureReplyEvents)
            {
                if (context.CancellationToken.IsCancellationRequested)
                {
                    break;
                }
                await responseStream.WriteAsync(replyEvent);
            }
        }
Example #21
0
        public async Task <ActionResult> CreateWorkDefinition(WorkDefinitionEvent workdefinition)
        {
            workdefinition = await base.ReadRequestContentAsync(workdefinition);

            workdefinition.ReceivedUTC = DateTime.UtcNow;

            #region Workaround to fix CustomJsonConverter save default value as -999999
            var serializedWorkDefinition = JsonHelper.SerializeObjectToJson(workdefinition, new JsonSerializerSettings {
                ContractResolver = new ShouldSerializeContractResolver()
            });
            workdefinition = JsonConvert.DeserializeObject <WorkDefinitionEvent>(serializedWorkDefinition);
            #endregion

            var result = await _requestValidator.Validate(new AssetSettingValidationRequestBase
            {
                AssetUIDs = new List <string> {
                    workdefinition.AssetUID.ToString()
                },
                DeviceType = workdefinition.DeviceType,
                GroupName  = "WorkDefinitions"
            });


            if (result.Any(x => x.IsInvalid))
            {
                _loggingService.Warn(result.First().Message + " for AssetUID : " + workdefinition.AssetUID.ToString(), "WorkDefinitionV1Controller.CreateWorkDefinition");
                return(BadRequest(result.First().Message));
            }

            if (_wdRepo.WorkDefinitionExist(workdefinition.AssetUID))
            {
                return(BadRequest("Work Definition already exist for given asset."));
            }
            _wdRepo.CreateWorkDefinition(workdefinition);

            return(StatusCode((int)HttpStatusCode.OK));
        }
Example #22
0
        public Resp ProcessRequest(Req request)
        {
            Resp result = null;

            // Validate BaseRequest
            IInputValidationResult baseValidationResult = _baseValidator.Validate(request);

            // If BaseRequest is valid - then validate specific request
            if (baseValidationResult.ValidationResult == ValidationResultType.Success)
            {
                IRequestValidator <Req> validator = GetInputRequestValidator(request);

                InpValRes validationResult = (InpValRes)validator.Validate(request);

                switch (validationResult.ValidationResult)
                {
                case ValidationResultType.Success:
                    result = HandleValidRequest(request, validationResult);
                    break;

                case ValidationResultType.Warning:
                    result = HandleWarningRequest(request, validationResult);
                    break;

                case ValidationResultType.Error:
                    result = HandleInvalidRequest(request, validationResult);
                    break;

                default:
                    throw new ArgumentOutOfRangeException("Unknown ValidationResult");
                }
            }
            else
            {
                // Should we handle it here in the base manager or send it back to the implementing class as HandleInvalidRequest ?
                // I think we should handle it here
                // TODO - Decorate response from BaseRequestValidator with enough information to set these properties below with valid
                // information across all interfaces
                result = HandleInvalidBaseRequest(baseValidationResult);
            }

            // TODO Log outgoing request - perhaps?

            return(result);
        }
Example #23
0
        public async Task <CreateGameResult> Handle(CreateGame request, CancellationToken cancellationToken)
        {
            using (var transaction = repositoryTransactionsFactory.CreateTransaction())
            {
                var validationResult = await requestValidator.Validate(request);

                if (!validationResult.IsSuccessful)
                {
                    return(new CreateGameResult(validationResult.Error));
                }

                var gameCode = codeGenerator.Generate();

                var game = await CreateGame(request, gameCode);

                var player = await CreatePlayer(game.GameId, request.UserId);

                var createRoundResult = await gameRoundCreator
                                        .CreateFirstRound(game.GameId, player.PlayerId);

                if (!createRoundResult.IsSuccessful)
                {
                    return(new CreateGameResult(createRoundResult.Error));
                }

                var createCardsResult = await playerCardsCreator.CreateCardsForPlayer(game.GameId, player.PlayerId);

                if (!createCardsResult.IsSuccessful)
                {
                    return(new CreateGameResult(createCardsResult.Error));
                }

                var checkpoint = await gameCheckpointUpdater.Update(game.GameId, nameof(CreateGame));

                transaction.CommitTransaction();

                return(new CreateGameResult
                {
                    GameId = game.GameId,
                    PlayerId = player.PlayerId,
                    Code = gameCode,
                    Checkpoint = checkpoint
                });
            }
        }
Example #24
0
        public async Task <SkipRoundResult> Handle(SkipRound request, CancellationToken cancellationToken)
        {
            using (var transaction = repositoryTransactionsFactory.CreateTransaction())
            {
                var validatorResult = await validator.Validate(request);

                if (!validatorResult.IsSuccessful)
                {
                    return(new SkipRoundResult(validatorResult.Error));
                }

                var skipped = await gameRoundsRepository
                              .SkipRound(request.GameRoundId);

                if (!skipped)
                {
                    return(new SkipRoundResult(GameErrors.GameRoundCouldNotBeSkipped));
                }

                var createNewRoundResult = await gameRoundCreator
                                           .CreateRound(request.GameId, request.GameRoundId);

                if (!createNewRoundResult.IsSuccessful)
                {
                    return(new SkipRoundResult(createNewRoundResult.Error));
                }

                var createCardsResult = await playerCardsCreator
                                        .CreateCards(request.GameId);

                if (!createCardsResult.IsSuccessful)
                {
                    return(new SkipRoundResult(createCardsResult.Error));
                }

                var checkpoint = await gameCheckpointUpdater.Update(request.GameId, nameof(SkipRound));

                transaction.CommitTransaction();

                return(new SkipRoundResult());
            }
        }
Example #25
0
        public async Task<SubmitAnswerResult> Handle(SubmitAnswer request, CancellationToken cancellationToken)
        {
            using (var transaction = repositoryTransactionsFactory.CreateTransaction())
            {
                var validatorResult = await requestValidator.Validate(request);
                if (!validatorResult.IsSuccessful)
                    return new SubmitAnswerResult(validatorResult.Error);

                var player = await playersRepository.GetPlayerByUserId(request.UserId, request.GameId);
                int playerAnswerId = await SubmitAnswer(request, player);
                if (playerAnswerId == 0)
                    return new SubmitAnswerResult(GameErrors.SubmitAnswerFailed);

                await gameCheckpointUpdater.Update(request.GameId, nameof(Model.Core.Games.SubmitAnswer));

                transaction.CommitTransaction();

                return new SubmitAnswerResult();
            }
        }
        public async Task <ValidatorResult> Validate(IBaseRequest request)
        {
            if (request is IGameRequest)
            {
                var result = await gameRequestValidator.Validate(request as IGameRequest);

                if (!result.IsSuccessful)
                {
                    return(new ValidatorResult(result.Error));
                }
            }
            if (request is IGameRoundRequest)
            {
                var result = await gameRoundRequestValidator.Validate(request as IGameRoundRequest);

                if (!result.IsSuccessful)
                {
                    return(new ValidatorResult(result.Error));
                }
            }
            if (request is IUserRequest)
            {
                var result = await userRequestValidator.Validate(request as IUserRequest);

                if (!result.IsSuccessful)
                {
                    return(new ValidatorResult(result.Error));
                }
            }
            if (request is IPlayerRequest)
            {
                var result = await playerRequestValidator.Validate(request as IPlayerRequest);

                if (!result.IsSuccessful)
                {
                    return(new ValidatorResult(result.Error));
                }
            }

            return(new ValidatorResult());
        }
        public async Task <IActionResult> Report([FromBody] SightingRequest request,
                                                 CancellationToken cancellationToken)
        {
            try
            {
                var validate = _requestValidator.Validate(request);
                if (validate.Succeeded)
                {
                    await _service.ReportSighting(request, cancellationToken);

                    return(Ok());
                }

                return(BadRequest(new { rejectionReason = validate.Reason }));
            }
            catch (Exception ex)
            {
                _logger.Error($"Error occured while reporting a sighting. ${ex.Message}", ex);
                throw;
            }
        }
Example #28
0
        public Task <ServiceResponse> OnRequest <TReq>(IServiceInstance service, TReq request, CancellationToken cancellationToken) where TReq : BaseRequest, new()
        {
            var stateMachineRequest = request as BaseStatefulRequest <TTrigger>;

            if (stateMachineRequest?.Trigger == null)
            {
                return(Task.FromResult(this.ContinuePipeline()));
            }

            var props = stateMachineRequest.GetType().GetProperties();
            var match = props.FirstOrDefault(x => x.Name.Equals(stateMachineRequest.Trigger.Value.ToString(), StringComparison.InvariantCultureIgnoreCase));

            if (match == null)
            {
                return(Task.FromResult(this.ContinuePipeline()));
            }

            var matchValue = match.GetValue(stateMachineRequest);

            if (matchValue == null)
            {
                return
                    (Task.FromResult(
                         new ServiceResponse(new ResponseMetaData(
                                                 service,
                                                 ServiceResult.ValidationError,
                                                 validationErrors: ValidationHelper.Create("Is a required property", match.Name)))
                         ));
            }

            var validationResult = _requestValidator.Validate(match.GetValue(stateMachineRequest), match.Name);

            if (validationResult.Count == 0)
            {
                return(Task.FromResult(this.ContinuePipeline()));
            }

            return(Task.FromResult(new ServiceResponse(new ResponseMetaData(service, ServiceResult.ValidationError, validationErrors: validationResult))));
        }
        public void Execute_ValidationSucceeds_BatchInserted()
        {
            int logFileId = new Random().Next(1, 1000);

            _requestValidator.Validate(Arg.Any <RequestModel>()).Returns(new ValidationResult());

            using (StreamReader logStream = new StreamReader(TestAsset.ReadTextStream(TestAsset.LogFile)))
            {
                var logEvents  = W3CEnumerable.FromStream(logStream).ToList();
                int eventCount = logEvents.Count;
                Assert.Greater(eventCount, 1);

                // execute
                _createRequestBatchCommand.Execute(logFileId, logEvents);

                // assert
                _requestValidator.Received(eventCount).Validate(Arg.Any <RequestModel>());

                // should receive eventCount + 1 -> delete also done
                _dbContext.Received(eventCount + 1).ExecuteNonQuery(Arg.Any <string>(), Arg.Any <object>());
            }
        }
Example #30
0
        public async Task <CreateUserResult> Handle(CreateUser request, CancellationToken cancellationToken)
        {
            var validationResult = await requestValidator.Validate(request);

            if (!validationResult.IsSuccessful)
            {
                return(new CreateUserResult(validationResult.Error));
            }

            var userCode = codeGenerator.Generate();
            var imageUrl = imageUrlProvider.GetImageUrl(request.Email);

            var result = await usersRepository.CreateUser(new CreateUserModel
            {
                Email       = request.Email,
                DisplayName = request.DisplayName,
                Password    = request.Password,
                Code        = userCode,
                ImageUrl    = imageUrl,
            });

            if (!result.IsSuccessful)
            {
                return(new CreateUserResult(result.Error));
            }

            return(new CreateUserResult
            {
                User = new UserModel
                {
                    UserId = result.Model.UserId,
                    Email = result.Model.Email,
                    DisplayName = result.Model.DisplayName,
                    UserName = result.Model.UserName,
                    Code = result.Model.Code,
                    ImageUrl = result.Model.ImageUrl
                }
            });
        }