public async Task <IActionResult> GetVeiculo([FromBody] Veiculo veiculo) { if (veiculo == null) { throw new ArgumentNullException(nameof(veiculo)); } var veiculoDb = _veiculoService.GetQuery().Where(v => v.Placa == veiculo.Placa).FirstOrDefault(); if (veiculoDb == null) { var validates = _validator.Validate(veiculo); if (!validates.IsValid) { return(BadRequest(GetMessages(validates.Errors))); } if (string.IsNullOrEmpty(veiculo.Descricao)) { return(Ok()); } try { await _veiculoService.CreateAsync(veiculo); return(Ok(veiculo)); } catch (ModelValidateException ex) { return(BadRequest(ex.Results.Errors)); } } return(Ok(veiculoDb)); }
public EntradaVeiculoViewModelValidation(ITabelaPrecosService tabelaPrecosService, IVeiculoServices veiculoServices) { RuleFor(v => v).Custom((t, context) => { var tab = tabelaPrecosService.GetQuery().Where(w => t.DataEntrada >= w.Inicio && t.DataEntrada <= w.Fim).FirstOrDefault(); if (tab == null) { context.AddFailure(new ValidationFailure(nameof(t.DataEntrada), "Não existe tabela de preços vigente para a Data de Entrada informada!")); } var veiculo = veiculoServices.GetQuery().Where(v => v.Id == t.VeiculoId).FirstOrDefault(); if (veiculo == null) { context.AddFailure(new ValidationFailure(nameof(t.VeiculoId), $"Não foi encontrado veículo {t.VeiculoId} informado na inclusão!")); } }); }
public async Task SaveEntradaAsync(EntradaVeiculoViewModel viewModel) { var results = _validatorEntrada.Validate(viewModel); if (!results.IsValid) { throw new ModelValidateException("Não foi possível registrar a entrada!", results); } var tab = await _tabelaPrecosService.GetQuery().Where(w => viewModel.DataEntrada >= w.Inicio && viewModel.DataEntrada <= w.Fim).FirstOrDefaultAsync(); var veiculo = await _veiculoServices.GetQuery().Where(v => v.Id == viewModel.VeiculoId).FirstOrDefaultAsync(); var movimentacao = new Movimentacao() { Entrada = viewModel.DataEntrada, VeiculoId = viewModel.VeiculoId, //TabelaPreco = tab, TabelaPrecoId = tab.Id, Valor = tab.Preco, //Veiculo = veiculo }; await _movimentacaoService.CreateAsync(movimentacao); }