public async Task <ActionResult> Cadastrar(ModeloDeCadastroDeCarater modelo) { var retorno = await this._servicoDeGestaoDeCaraters.CadastrarCarater(modelo, User.Logado()); this.AdicionarMensagemDeSucesso(retorno.Item1); return(RedirectToAction(nameof(Editar), new { id = retorno.Item2 })); }
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 ActionResult Cadastrar() { var modelo = new ModeloDeCadastroDeCarater(); modelo.Cidades = ListaDeItensDeDominio.DaClasseComOpcaoPadrao <Cidade>(nameof(Cidade.Descricao), nameof(Cidade.Id), () => this._servicoDeGestaoDeCidades.RetonarCidadesPorUf(7)); modelo.Crimes = ListaDeItensDeDominio.DaClasseComOpcaoPadrao <Crime>(nameof(Crime.Nome), nameof(Crime.Id), () => this._servicoDeGestaoDeCrimes.RetonarTodosOsCrimesAtivos()); return(View(modelo)); }