public async Task <Tuple <string, int> > CadastrarCarater(ModeloDeCadastroDeCarater modelo, UsuarioLogado usuario) { var mensagemErro = String.Empty; try { var caraterCadastrado = this._servicoExternoDePersistencia.RepositorioDeCaraters.PegarCaraterPorPlaca(modelo.Placa); if (caraterCadastrado != null) { mensagemErro = "Já existe um caráter para o mesmo veículo."; throw new ExcecaoDeAplicacao("Já existe um caráter para o mesmo veículo."); } DateTime dataHoraFato = new DateTime(); var usuarioBanco = this._servicoExternoDePersistencia.RepositorioDeUsuarios.BuscarPorId(usuario.Id); var crime = this._servicoExternoDePersistencia.RepositorioDeCrimes.BuscarPorId(modelo.Crime); var cidade = this._servicoExternoDePersistencia.RepositorioDeCidades.PegarPorId(modelo.Cidade); var veiculo = this._servicoExternoDePersistencia.RepositorioDeVeiculos.PegarPorPlaca(modelo.Placa); if (veiculo == null) { var dadosVeiculo = await this._servicoDeBuscaDeVeiculos.BuscarPlacaCompleta(modelo.Placa, usuario); var modeloParaCadastro = new ModeloDeBuscaDaLista(dadosVeiculo); if (dadosVeiculo != null) { veiculo = this._servicoDeGestaoDeVeiculos.CadastrarProprietarioPossuidor(modeloParaCadastro, usuario); } else { veiculo = new Veiculo(modelo.Placa, modelo.MarcaVeiculo, modelo.ModeloVeiculo, modelo.AnoVeiculo, modelo.CorVeiculo, modelo.ChassiVeiculo, modelo.UfVeiculo); } this._servicoExternoDePersistencia.Persistir(); } if (!string.IsNullOrEmpty(modelo.Data) && !string.IsNullOrEmpty(modelo.Hora)) { var data = Convert.ToDateTime(modelo.Data); var hora = Convert.ToDateTime(modelo.Hora); dataHoraFato = new DateTime(data.Year, data.Month, data.Day, hora.Hour, hora.Minute, 0); } var novoCarater = new Carater(modelo.Descricao, modelo.ComplementoEndereco, dataHoraFato, veiculo, cidade, crime, modelo.UrlImagem, usuarioBanco); this._servicoExternoDePersistencia.RepositorioDeCaraters.Inserir(novoCarater); this._servicoExternoDePersistencia.Persistir(); novoCarater.AdicionarHistorico(new HistoricoDeCarater("Criou o Caráter", "", TipoDeHistoricoDeCarater.Criacao, usuarioBanco, novoCarater.Id)); this._servicoExternoDePersistencia.Persistir(); return(new Tuple <string, int>("Caráter incluído com sucesso.", novoCarater.Id)); } catch (Exception ex) { throw new ExcecaoDeAplicacao("Não foi possível incluir o Caráter: " + ex.InnerException + mensagemErro); } }
public async Task <ModeloDeBuscaDaLista> DetalharVeiculo(ModeloDeFiltroDeBusca filtro, UsuarioLogado usuario) { try { var veiculo = await this.BuscarPlacaCompleta(filtro.Placa, usuario); if (veiculo == null) { new ExcecaoDeAplicacao("Veículo não encontrado."); } var modelo = new ModeloDeBuscaDaLista(veiculo); return(modelo); } catch (Exception ex) { throw new ExcecaoDeAplicacao("Erro ao consultar os caráters"); } }
public Veiculo CadastrarProprietarioPossuidor(ModeloDeBuscaDaLista modelo, UsuarioLogado usuario) { try { var proprietario = modelo.Proprietario; var possuidor = modelo.Possuidor; var veiculo = this._servicoExternoDePersistencia.RepositorioDeVeiculos.PegarPorPlaca(modelo.Placa); var marca = modelo.MarcaModelo.Split('/')[0]; var modeloCaro = modelo.MarcaModelo.Split('/')[1]; if (veiculo == null) { veiculo = new Veiculo(modelo.Placa, marca, modeloCaro, modelo.AnoModelo, modelo.Cor, modelo.Municipio, modelo.Uf, modelo.Renavam, modelo.Chassi, modelo.Motor, modelo.UltimoCRV, modelo.AtualizacaoData, modelo.Situacao); this._servicoExternoDePersistencia.RepositorioDeVeiculos.Inserir(veiculo); } else { veiculo.AlterarDadosVeiculo(marca, modeloCaro, modelo.AnoModelo, modelo.Cor, modelo.Municipio, modelo.Uf, modelo.Renavam, modelo.Chassi, modelo.Motor, modelo.UltimoCRV, modelo.AtualizacaoData, modelo.Situacao); } this._servicoExternoDePersistencia.Persistir(); if (veiculo.Proprietario == null) { CadastrarProprietario(veiculo, proprietario); } if (veiculo.Possuidor == null) { CadastrarPossuidor(veiculo, possuidor); } this._servicoExternoDePersistencia.Persistir(); return(veiculo); } catch (Exception ex) { throw new ExcecaoDeAplicacao("Não foi possível cadastrar o proprietário: " + ex.InnerException); } }