public async Task <ActionResult <SampleDto> > AddSample([FromBody] SampleForCreationDto sampleForCreation)
        {
            var validationResults = new SampleForCreationDtoValidator().Validate(sampleForCreation);

            validationResults.AddToModelState(ModelState, null);

            if (!ModelState.IsValid)
            {
                return(BadRequest(new ValidationProblemDetails(ModelState)));
                //return ValidationProblem();
            }

            var sample = _mapper.Map <Sample>(sampleForCreation);
            await _sampleRepository.AddSample(sample);

            var saveSuccessful = await _sampleRepository.SaveAsync();

            if (saveSuccessful)
            {
                var sampleFromRepo = await _sampleRepository.GetSampleAsync(sample.SampleId);

                var sampleDto = _mapper.Map <SampleDto>(sampleFromRepo);
                var response  = new Response <SampleDto>(sampleDto);

                return(CreatedAtRoute("GetSample",
                                      new { sampleDto.SampleId },
                                      response));
            }

            return(StatusCode(500));
        }
        public async Task <ActionResult <SampleDto> > AddSample([FromBody] SampleForCreationDto sampleForCreation)
        {
            // add error handling
            var command         = new AddSampleCommand(sampleForCreation);
            var commandResponse = await _mediator.Send(command);

            var response = new Response <SampleDto>(commandResponse);

            return(CreatedAtRoute("GetSample",
                                  new { commandResponse.SampleId },
                                  response));
        }
 public AddSampleCommand(SampleForCreationDto sampleToAdd)
 {
     SampleToAdd = sampleToAdd;
 }