public void CreateAgendaRequestValidator_SalaDoesNotExist_ValidationFail()
        {
            var request = new CreateAgendaRequest
            {
                Titulo        = "Agendamento qualquer",
                HorarioInicio = new DateTime(2019, 08, 14),
                HorarioFim    = new DateTime(2019, 08, 19),
                SalaId        = -1
            };

            var validator = new CreateAgendaRequestValidator(agendaService, salaService, mapper);
            var result    = validator.Validate(request);

            Assert.IsFalse(result.IsValid);
        }
        public void CreateAgendaRequestValidator_TituloNull_ValidationFail()
        {
            var request = new CreateAgendaRequest
            {
                Titulo        = "",
                HorarioInicio = new DateTime(2019, 08, 14),
                HorarioFim    = new DateTime(2019, 08, 15),
                SalaId        = 1
            };

            var validator = new CreateAgendaRequestValidator(agendaService, salaService, mapper);
            var result    = validator.Validate(request);

            Assert.IsFalse(result.IsValid);
        }
        public async Task <IActionResult> CreateAsync([FromBody] CreateAgendaRequest agendaRequest)
        {
            var agenda = await agendaService.AddAsync(mapper.Map <Agenda>(agendaRequest));

            if (agenda == null)
            {
                var errorResponse = new ErrorResponse();
                errorResponse.Errors.Add(new ErrorData {
                    Message = "Não foi possivel criar um agendamento"
                });
                return(BadRequest(errorResponse));
            }

            var baseUrl     = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}";
            var locationUri = baseUrl + "/" + ApiRoutes.Agenda.Get.Replace("{id}", agenda.Id.ToString());

            return(Created(locationUri, new { }));
        }