Пример #1
0
        public ModeloDeCaratersDaLista(Carater carater)
        {
            if (carater == null)
            {
                return;
            }

            this.Id                         = carater.Id;
            this.Descricao                  = carater.Descricao;
            this.ComplementoEndereco        = carater.ComplementoEndereco;
            this.ComplementoEnderecoTradado = !String.IsNullOrEmpty(carater.ComplementoEndereco) ? $" - {carater.ComplementoEndereco}" : String.Empty;

            this.NomeCidade          = carater.Cidade != null ? carater.Cidade.Descricao : String.Empty;
            this.NomeCidadeAbreviada = carater.Cidade != null ? carater.Cidade.Sigla : String.Empty;
            this.NomeCrime           = carater.Crime != null ? $"{carater.Crime.Nome}" : String.Empty;
            this.DataDoFato          = carater.DataHoraDoFato != null?carater.DataHoraDoFato.Value.ToString("dd/MM/yyyy HH:mm") : String.Empty;

            this.SituacaoDoCarater = carater.SituacaoDoCarater.ToString();
            this.VeiculoLocalizado = carater.SituacaoDoCarater == Dominio.ObjetosDeValor.SituacaoDoCarater.Localizado ? true : false;
            this.CssTipoCrime      = RetornaCssCrime(NomeCrime);
            this.SeloAtenas        = carater.SeloAtenas;

            if (carater.Veiculo != null)
            {
                var chassi = !String.IsNullOrEmpty(carater.Veiculo.Chassi) ? carater.Veiculo.Chassi.Length > 4 ? $"({carater.Veiculo.Chassi.Substring(carater.Veiculo.Chassi.Length - 5)})" : carater.Veiculo.Chassi : String.Empty;
                this.NomeVeiculo   = carater.Veiculo != null ? $"{carater.Veiculo.Marca} {carater.Veiculo.Modelo} {chassi}" : String.Empty;
                this.PlacaVeiculo  = carater.Veiculo != null ? $"{carater.Veiculo.Placa} {carater.Veiculo.Uf}" : String.Empty;
                this.PlacaInicial  = carater.Veiculo != null ? $"{carater.Veiculo.Placa.Substring(3,4)}" : String.Empty;
                this.PlacaFinal    = carater.Veiculo != null ? $"{carater.Veiculo.Placa.Substring(0,3)}" : String.Empty;
                this.CorVeiculo    = carater.Veiculo.Cor;
                this.UfVeiculo     = !String.IsNullOrEmpty(carater.Veiculo.Uf) ? carater.Veiculo.Uf : String.Empty;
                this.ChassiVeiculo = carater.Veiculo.Chassi;
                this.AnoVeiculo    = !String.IsNullOrEmpty(carater.Veiculo.Ano) ? carater.Veiculo.Ano.Split('/')[0].ToString() : String.Empty;
            }
        }
Пример #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);
            }
        }
        public ModeloDeEdicaoDeCarater(Carater carater, bool ehCelular)
        {
            if (carater == null)
            {
                return;
            }

            this.DataHistorico = DateTime.Now.ToShortDateString();

            var situacoesBaixas = new Dominio.ObjetosDeValor.SituacaoDoCarater[] { Dominio.ObjetosDeValor.SituacaoDoCarater.Localizado, Dominio.ObjetosDeValor.SituacaoDoCarater.BaixaAutomatica };

            this.HistoricosDeCaraters  = new List <ModeloDeHistoricoDeCaraterDaLista>();
            this.HistoricosDePassagens = new List <ModeloDeHistoricoDePassagensDaLista>();
            this.Fotos = new List <ModeloDeFotosDaLista>();

            this.SituacoesDoCarater = ListaDeItensDeDominio.DoEnumComOpcaoPadrao <SituacaoDoCarater>();

            var caminhoBlob = VariaveisDeAmbiente.Pegar <string>("azure:caminhoDoBlob");

            this.Id                         = carater.Id;
            this.Descricao                  = carater.Descricao;
            this.ComplementoEndereco        = carater.ComplementoEndereco;
            this.ComplementoEnderecoTradado = !String.IsNullOrEmpty(carater.ComplementoEndereco) ? $" - {carater.ComplementoEndereco}" : String.Empty;

            this.Cidade     = carater.Cidade != null ? carater.Cidade.Id : 0;
            this.Crime      = carater.Crime != null ? carater.Crime.Id : 0;
            this.NomeCrime  = carater.Crime != null ? $"{carater.Crime.Nome}" : String.Empty;
            this.NomeCidade = carater.Cidade != null ? $"{carater.Cidade.Descricao}" : String.Empty;

            this.Data      = carater.DataHoraDoFato.HasValue ? carater.DataHoraDoFato.Value.ToShortDateString() : String.Empty;
            this.Hora      = carater.DataHoraDoFato.HasValue ? carater.DataHoraDoFato.Value.ToShortTimeString() : String.Empty;
            this.UrlImagem = $"{caminhoBlob}/{carater.UrlImagem}";
            var usuario = carater.UsuarioQueAlterou != null ? carater.UsuarioQueAlterou.PerfilDeUsuario == PerfilDeUsuario.Atenas ?
                          carater.UsuarioQueAlterou.PerfilDeUsuario.ToString() : carater.UsuarioQueAlterou.Nome.Valor : String.Empty;

            this.UsuarioCadastro   = $"Cadastro por {usuario} no dia {carater.DataDoCadastro.ToString("dd/MM")} às {carater.DataDoCadastro.ToString("HH:mm")}";
            this.SituacaoDoCarater = (int)carater.SituacaoDoCarater;
            this.CssTipoCrime      = RetornaCssCrime(NomeCrime);

            if (carater.Veiculo != null)
            {
                this.Placa                = carater.Veiculo.Placa;
                this.UfVeiculo            = carater.Veiculo.Uf;
                this.MunicipioVeiculo     = carater.Veiculo.Municipio;
                this.IdVeiculo            = carater.Veiculo.Id;
                this.ModeloVeiculo        = carater.Veiculo.Modelo;
                this.MarcaVeiculo         = carater.Veiculo.Marca;
                this.AnoVeiculo           = carater.Veiculo.Ano;
                this.CorVeiculo           = carater.Veiculo.Cor;
                this.ChassiVeiculo        = carater.Veiculo.Chassi;
                this.ChassiVeiculoTratado = !String.IsNullOrEmpty(carater.Veiculo.Chassi) ? carater.Veiculo.Chassi.Length > 4 ? carater.Veiculo.Chassi.Substring(carater.Veiculo.Chassi.Length - 5) : carater.Veiculo.Chassi : String.Empty;
                this.Renavam              = carater.Veiculo.Renavam;
                this.Motor                = carater.Veiculo.Motor;
                this.UltimoCRV            = !String.IsNullOrEmpty(carater.Veiculo.UltimoCRV) ? Convert.ToDateTime(carater.Veiculo.UltimoCRV).ToShortDateString() : String.Empty;
                this.AtualizacaoVeiculo   = carater.Veiculo.Atualizacao.ToString();
                this.Situacao             = carater.Veiculo.Situacao;

                if (carater.Veiculo.Proprietario != null)
                {
                    this.Proprietario = new ModeloDeProprietario(carater.Veiculo.Proprietario);
                }

                if (carater.Veiculo.Possuidor != null)
                {
                    this.Possuidor = new ModeloDePossuidor(carater.Veiculo.Possuidor);
                }
            }

            if (situacoesBaixas.Contains(carater.SituacaoDoCarater))
            {
                this.RealizouBaixa        = true;
                this.DescricaoLocalizacao = carater.DescricaoLocalizado;
                var dataHora = carater.DataHoraLocalizacao.HasValue ? carater.DataHoraLocalizacao.Value : DateTime.MinValue;
                this.CidadeLocalizacao  = carater.CidadeLocalizado != null ? $" - Cidade: {carater.CidadeLocalizado.Descricao}" : String.Empty;
                this.UsuarioLocalizacao = $"Baixa por {usuario} no dia {dataHora.ToString("dd/MM")} às {dataHora.ToString("HH:mm")}";
            }

            carater.HistoricosDeCaraters.Where(a => !a.Excluido).OrderByDescending(a => a.DataDoCadastro).ToList().ForEach(a => this.HistoricosDeCaraters.Add(new ModeloDeHistoricoDeCaraterDaLista(a, carater.Fotos.ToList())));
            carater.HistoricosDePassagens.Where(a => !a.Excluido).OrderByDescending(a => a.DataDoCadastro).ToList().ForEach(a => this.HistoricosDePassagens.Add(new ModeloDeHistoricoDePassagensDaLista(a, ehCelular)));
            carater.Fotos.Where(a => a.Ativo).ToList().ForEach(a => this.Fotos.Add(new ModeloDeFotosDaLista(a)));

            this.SeloAtenas = carater.SeloAtenas;
            this.Excluido   = carater.Excluido;
        }