예제 #1
0
        public IActionResult AlugarFilme(long id, [FromBody] long filmeId)
        {
            try
            {
                var filme = _filmeRepositorio.RecuperarPorId(filmeId);

                if (filme == null)
                {
                    return(BadRequest("Id de filme inválido: " + filmeId));
                }

                var cliente = _clienteRepositorio.RecuperarPorId(id);

                if (cliente == null)
                {
                    return(BadRequest("Id de cliente inválido: " + id));
                }

                if (cliente.Alugueis.Any(x => x.FilmeId == filme.Id && (x.DataExpiracao == null || x.DataExpiracao.Value >= DateTime.UtcNow)))
                {
                    return(BadRequest("O filme já foi comprado: " + filme.Nome));
                }

                _clienteServico.AlugarFilme(cliente, filme);

                _clienteRepositorio.Commitar();

                return(Ok());
            }
            catch (Exception e)
            {
                return(StatusCode(500, new { error = e.Message }));
            }
        }