Пример #1
0
        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 }));
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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));
        }