public void SetUp()
        {
            _fixture = new Fixture();

            _appealId = Guid.NewGuid();

            _oversightReview = new OversightReview
            {
                Id            = _oversightReviewId,
                ApplicationId = _applicationId,
                Status        = OversightReviewStatus.Unsuccessful
            };

            _appealUploads = new List <AppealUpload>
            {
                new AppealUpload
                {
                    Id            = Guid.NewGuid(),
                    ApplicationId = _applicationId
                },
                new AppealUpload
                {
                    Id            = Guid.NewGuid(),
                    ApplicationId = _applicationId
                }
            };

            _command = new CreateAppealCommand
            {
                ApplicationId     = _applicationId,
                OversightReviewId = _oversightReviewId,
                Message           = _fixture.Create <string>(),
                UserId            = _fixture.Create <string>(),
                UserName          = _fixture.Create <string>()
            };

            _oversightReviewRepository = new Mock <IOversightReviewRepository>();
            _oversightReviewRepository.Setup(x => x.GetById(_oversightReviewId))
            .ReturnsAsync(() => _oversightReview);

            _appealRepository = new Mock <IAppealRepository>();
            _appealRepository.Setup(x => x.Add(It.IsAny <Appeal>())).Callback <Appeal>(appeal => _appealId = appeal.Id);

            _appealUploadRepository = new Mock <IAppealUploadRepository>();
            _appealUploadRepository.Setup(x => x.GetByApplicationId(_applicationId)).ReturnsAsync(_appealUploads);

            _auditService = new Mock <IAuditService>();
            _auditService.Setup(x => x.StartTracking(UserAction.UploadAppealFile, _command.UserId, _command.UserName));
            _auditService.Setup(x => x.AuditInsert(It.IsAny <AppealUpload>()));

            _handler = new CreateAppealCommandHandler(_oversightReviewRepository.Object, _appealRepository.Object, _appealUploadRepository.Object, _auditService.Object);
        }
        public async Task <IActionResult> CreateAppeal(Guid applicationId, Guid oversightReviewId, [FromBody] CreateAppealRequest request)
        {
            var command = new CreateAppealCommand
            {
                ApplicationId     = applicationId,
                OversightReviewId = oversightReviewId,
                Message           = request.Message,
                UserId            = request.UserId,
                UserName          = request.UserName
            };

            await _mediator.Send(command);

            return(new OkResult());
        }