コード例 #1
0
        public Resultado <Digital, Falha> IdentificarDigital(byte[] digitalLida, Digital digitalParaComparar)
        {
            var encontrou = false;
            var payload   = new NBioAPI.Type.FIR_PAYLOAD();

            NBioAPI.Type.HFIR digitalLidaConvertida;
            _apiConversor.FDxToNBioBSPEx(digitalLida, (uint)digitalLida.Length, NBioAPI.Type.MINCONV_DATA_TYPE.MINCONV_TYPE_ISO, NBioAPI.Type.FIR_PURPOSE.ENROLL_FOR_IDENTIFICATION_ONLY, out digitalLidaConvertida);

            NBioAPI.Type.HFIR digitalParaCompararConvertida;
            _apiConversor.FDxToNBioBSPEx(digitalParaComparar.TemplateIso, (uint)digitalParaComparar.TemplateIso.Length, NBioAPI.Type.MINCONV_DATA_TYPE.MINCONV_TYPE_ISO, NBioAPI.Type.FIR_PURPOSE.ENROLL_FOR_IDENTIFICATION_ONLY, out digitalParaCompararConvertida);

            var retorno = _api.VerifyMatch(digitalLidaConvertida, digitalParaCompararConvertida, out encontrou, payload);

            if (encontrou)
            {
                var cbInfo = new NBioAPI.IndexSearch.CALLBACK_INFO_0();
                NBioAPI.IndexSearch.FP_INFO[] informacaoBiometria;
                NBioAPI.IndexSearch.FP_INFO   nitgenBiometria;

                var resultadoAddFir = _apiBusca.AddFIR(digitalLidaConvertida, (uint)digitalParaComparar.Id, out informacaoBiometria);
                retorno = _apiBusca.IdentifyData(digitalLidaConvertida, NBioAPI.Type.FIR_SECURITY_LEVEL.HIGHEST, out nitgenBiometria, cbInfo);

                var idEncontrado = nitgenBiometria.ID;
                _apiBusca.RemoveUser((uint)digitalParaComparar.Id);
                if (idEncontrado > 0)
                {
                    return(digitalParaComparar);
                }
            }
            Debug.WriteLine($"digital {digitalParaComparar.Id}");
            return(Falha.Nova(404, "Digital não encontrada"));
        }
コード例 #2
0
        public Resultado <Aluno, Falha> Recuperar(string id)
        {
            var sqlAluno     = @"SELECT Id, Nome, Email, DataNascimento FROM Alunos WHERE Id = @id;";
            var sqlInscricao = "SELECT Id, AlunoId, TurmaId, InscritoEm FROM Inscricoes WHERE AlunoId IN (SELECT Id FROM Alunos WHERE Id = @id)";
            var sqlTurmas    = "SELECT Id, Descricao, LimiteAlunos, TotalInscritos, LimiteIdade FROM Turmas WHERE Id IN (SELECT TurmaId FROM Inscricoes WHERE AlunoId = (SELECT Id FROM Alunos WHERE Id = @id))";

            using (var conexao = new SqlConnection(_AppSettingsHelper.GetConnectionString()))
            {
                var alunoQuery = conexao.Query <dynamic>(sqlAluno, new { id }).ToList();
                if (!alunoQuery.Any())
                {
                    return(Falha.Nova(404, "Nenhum aluno encontrado"));
                }
                var turmas = conexao
                             .Query <dynamic>(sqlTurmas, new { id })
                             .Select(t => new Turma((string)t.Id, (string)t.Descricao, (int)t.LimiteIdade, (int)t.LimiteAlunos, (int)t.TotalInscritos))
                             .ToList();
                var inscricoes = conexao
                                 .Query <dynamic>(sqlInscricao, new { id })
                                 .Select(i => new Aluno.Inscricao((string)i.Id, (string)i.AlunoId, turmas.FirstOrDefault(t => t.Id.Equals((string)i.TurmaId)), (DateTime)i.InscritoEm))
                                 .ToList();
                return(alunoQuery.Select(a => new Aluno((string)a.Id, (string)a.Nome, (string)a.Email, (DateTime)a.DataNascimento, inscricoes))
                       .FirstOrDefault());
            }
        }
コード例 #3
0
        public IActionResult Criar([FromBody] AlunoInputModel novoAluno)
        {
            try
            {
                if (Aluno.Novo(novoAluno.Nome, novoAluno.Email, novoAluno.DataNascimento) is var aluno && aluno.EhFalha)
                {
                    return(StatusCode(aluno.Falha.Codigo, aluno.Falha));
                }
                if (_alunosRepositorio.RecuperarPorEmail(aluno.Sucesso.Email).EhSucesso)
                {
                    return(BadRequest(Falha.Nova(400, "Email já está em uso: " + novoAluno.Email)));
                }
                if (_alunosRepositorio.IncluirESalvar(aluno.Sucesso) is var resultado && resultado.EhFalha)
                {
                    return(StatusCode(resultado.Falha.Codigo, resultado.Falha));
                }

                return(CreatedAtAction(nameof(Recuperar), new { aluno.Sucesso.Id },
                                       new AlunoViewModel(aluno.Sucesso.Id, aluno.Sucesso.Nome, aluno.Sucesso.Email, aluno.Sucesso.Idade(DateTime.Now),
                                                          aluno.Sucesso.Inscricoes.Select(a => new InscricaoViewModel(aluno.Sucesso.Id, new InscricaoViewModel.TurmaViewModel(a.Turma.Id, a.Turma.Descricao), a.InscritoEm)).ToList())));
            }
            catch (Exception e)
            {
                return(StatusCode(500, new { error = e.Message }));
            }
        }
コード例 #4
0
        public Resultado <Aluno.Inscricao, Falha> Executar(RealizarInscricaoComando comando)
        {
            try
            {
                if (_alunosRepositorio.Recuperar(comando.AlunoId) is var aluno && aluno.EhFalha)
                {
                    return(aluno.Falha);
                }

                if (_turmasRepositorio.Recuperar(comando.TurmaId) is var turma && turma.EhFalha)
                {
                    return(turma.Falha);
                }

                if (aluno.Sucesso.RealizarInscricao(turma.Sucesso) is var inscricao && inscricao.EhFalha)
                {
                    return(inscricao.Falha);
                }

                if (_alunosRepositorio.Atualizar(aluno.Sucesso) is var resultado && resultado.EhFalha)
                {
                    return(resultado.Falha);
                }
                return(resultado.Sucesso.Inscricoes.FirstOrDefault(i => i.Id.Equals(inscricao.Sucesso.Id)));
            }
            catch (Exception e)
            {
                return(Falha.Nova(500, "Erro ao realizar inscrição"));
            }
        }
コード例 #5
0
        public async Task <Resultado <Digital, Falha> > IdentificarAsync(byte[] digitalNaoIdentificacada)
        {
            var contextoParaTask = new ContextoTask(_bancoDigitais.ToList(), digitalNaoIdentificacada, _motorBusca);

            _cancelamentoTask = new CancellationTokenSource();
            var token = _cancelamentoTask.Token;
            var task  = await new TaskFactory <Resultado <Digital, Falha> >().StartNew((contextoRecebido) => {
                var tempoLocalizacao = new Stopwatch();
                tempoLocalizacao.Start();
                var contexto  = contextoRecebido as ContextoTask;
                var resultado = Resultado <Digital, Falha> .NovaFalha(Falha.Nova(404, "Digital não encontrada"));
                foreach (var digital in contexto.BancoDigitais)
                {
                    if (token.IsCancellationRequested)
                    {
                        break;
                    }
                    if (contexto.MotorBusca.IdentificarDigital(contexto.DigitalNaoIdentificacada, digital) is var resultadoIdentificacao && resultadoIdentificacao.EhSucesso)
                    {
                        resultado = resultadoIdentificacao.Sucesso;
                        break;
                    }
                }
                tempoLocalizacao.Stop();
                return(resultado);
            }, contextoParaTask, token);

            return(task);
        }
 public Resultado <IMotorBuscaBiometrica, Falha> CriarMotorDeBuscaBiometrica(string parceiro)
 {
     if (parceiro.ToLower().Equals("nitgen"))
     {
         return(new SdkNitgen());
     }
     return(Falha.Nova(400, $"SDK {parceiro} não é reconhecido"));
 }
        public Resultado <Digital, Falha> Executar(IdentificarSocioPorDigitalComando comando)
        {
            var tempoIdentificacao = new Stopwatch();

            tempoIdentificacao.Start();

            if (_identificadoresDeDigital == null)
            {
                _identificadoresDeDigital = new ConcurrentBag <ServicoIdentificacaoDigital>();
            }
            if (_identificadoresDeDigital.Count == 0)
            {
                if (_configuracoesBiometriaRepositorio.Recuperar(comando.Estacao) is var configuracaoBiometria && configuracaoBiometria.EhFalha)
                {
                    return(configuracaoBiometria.Falha);
                }

                if (_fabricaMotorBuscaBiometrica.CriarMotorDeBuscaBiometrica(configuracaoBiometria.Sucesso.ParceiroSdkDigital) is var motorBusca && motorBusca.EhFalha)
                {
                    return(motorBusca.Falha);
                }

                if (_digitaisRepositorio.RecuperarNumeroTotalDigitais() is var quantidadeDigitais && quantidadeDigitais.EhFalha)
                {
                    return(quantidadeDigitais.Falha);
                }

                var digitaisPorPagina = (quantidadeDigitais.Sucesso / configuracaoBiometria.Sucesso.QuantidadeThreadsIdentificacaoDigital) + configuracaoBiometria.Sucesso.QuantidadeThreadsIdentificacaoDigital;
                for (int pagina = 1; pagina <= configuracaoBiometria.Sucesso.QuantidadeThreadsIdentificacaoDigital; pagina++)
                {
                    if (_digitaisRepositorio.RecuperarPagina(pagina, digitaisPorPagina) is var digitais && digitais.EhFalha)
                    {
                        return(digitais.Falha);
                    }
                    if (digitais.Sucesso.Count() > 0)
                    {
                        _identificadoresDeDigital.Add(new ServicoIdentificacaoDigital(motorBusca.Sucesso, digitais.Sucesso));
                    }
                }
            }

            var digital = Digital.NovaNaoEncontrada();

            Parallel.ForEach(_identificadoresDeDigital, async(identificadorDigital, estadoLoop) =>
            {
                var resultado = await identificadorDigital.IdentificarAsync(comando.Template);
                if (resultado.EhSucesso)
                {
                    digital = resultado.Sucesso;
                    estadoLoop.Break();
                }
            });
            tempoIdentificacao.Stop();
            return(digital.Id == 0
                    ? Resultado <Digital, Falha> .NovaFalha(Falha.Nova(404, "Digitão não encontrada"))
                    : Resultado <Digital, Falha> .NovoSucesso(digital));
        }
コード例 #8
0
ファイル: Inscricao.cs プロジェクト: DOTNETPOA/DDDExemplo
 internal static Resultado <Inscricao, Falha> Nova(string alunoId, Turma turma)
 {
     if (turma.VagasDisponiveis <= 0)
     {
         return(Falha.Nova(400, "Sem vagas disponiveis"));
     }
     turma.IncrementarInscricao();
     return(new Inscricao(Guid.NewGuid().ToString(), alunoId, turma, DateTime.Now));
 }
コード例 #9
0
    public void ShowFalha(Falha f)
    {
        Debug.Log("Exibindo tela de falha");

        mudarParaTela(viewFalhaAcessibilidade);
        TitleField.text = f.Title;
        DescField.text  = f.Desciption;// "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum quis purus vitae quam tempor blandit vel nec orci. Fusce euismod turpis vel orci facilisis, eget bibendum lectus congue.";
        Time.timeScale  = 0;
    }
コード例 #10
0
 public Resultado <ConfiguracaoBiometria, Falha> Recuperar(int estacao)
 {
     using (var conexao = new SqlConnection(_connectionString))
     {
         var resultado = conexao.Query <ConfiguracaoBiometria>(@"SELECT QuantidadeThreadsIdentificacaoDigital, ParceiroSdkDigital FROM ConfiguracoesBiometria WHERE Estacao = @estacao", new { estacao }).FirstOrDefault();
         if (resultado == null)
         {
             return(Falha.Nova(404, $"Nenhuma configuração para estação {estacao}"));
         }
         return(resultado);
     }
 }
コード例 #11
0
 public static Resultado <Turma, Falha> Nova(string descricao, int limiteIdade, int limiteAlunos)
 {
     if (String.IsNullOrEmpty(descricao) || (descricao.Length <= 5 && descricao.Length > 100))
     {
         return(Falha.Nova(400, "Descrição deve ter 5 a 100 letras"));
     }
     if (limiteAlunos <= 0 || limiteAlunos > 100)
     {
         return(Falha.Nova(400, "Limite de alunos deve ser entre 1 e 99"));
     }
     return(new Turma(Guid.NewGuid().ToString(), descricao, limiteIdade, limiteAlunos, 0));
 }
コード例 #12
0
        public Resultado <Aluno, Falha> IncluirESalvar(Aluno aluno)
        {
            var sucesso      = false;
            var sqlAluno     = "INSERT INTO Alunos (Id, Nome, Email, DataNascimento) VALUES (@Id, @Nome, @Email, @DataNascimento)";
            var sqlInscricao = "INSERT INTO Inscricoes (Id, AlunoId, TurmaId, InscritoEm) VALUES (@Id, @AlunoId, @TurmaId, @InscritoEm)";
            var updateTurma  = "UPDATE Turmas SET TotalInscritos = @TotalInscritos WHERE Id = @Id";

            using (var conexao = new SqlConnection(_AppSettingsHelper.GetConnectionString()))
            {
                conexao.Open();
                using (var transacao = conexao.BeginTransaction())
                {
                    try
                    {
                        var resultado = conexao.Execute(sqlAluno, new { aluno.Id, aluno.Nome, aluno.Email, aluno.DataNascimento }, transacao);
                        if (resultado <= 0)
                        {
                            return(Falha.Nova(400, "Não foi possível incluir o aluno"));
                        }
                        foreach (var inscricao in aluno.Inscricoes)
                        {
                            resultado = conexao.Execute(sqlInscricao, new { inscricao.Id, AlunoId = aluno.Id, TurmaId = inscricao.Turma.Id, inscricao.InscritoEm }, transacao);
                            if (resultado <= 0)
                            {
                                return(Falha.Nova(400, "Não foi possível incluir inscrição para o aluno"));
                            }
                            resultado = conexao.Execute(updateTurma, new { inscricao.Turma.Id, inscricao.Turma.TotalInscritos }, transacao);
                            if (resultado <= 0)
                            {
                                return(Falha.Nova(400, "Não foi possível atualizar a turma"));
                            }
                        }
                        transacao.Commit();
                        sucesso = true;
                        return(aluno);
                    }
                    catch (Exception ex)
                    {
                        return(Falha.NovaComException(ex));
                    }
                    finally
                    {
                        if (!sucesso)
                        {
                            transacao.Rollback();
                        }
                        conexao.Close();
                    }
                }
            }
        }
コード例 #13
0
        public void Dado_Uma_Turma_Com_Limite_De_Idade_Nao_Posso_Fazer_Inscricao_De_Aluno_Com_Idade_Superior()
        {
            var alunoResultado = Aluno.Novo("Gabriel Schmitt Kohlrausch", "*****@*****.**", DateTime.Now.AddYears(-20));

            alunoResultado.EhSucesso.ShouldBeTrue();
            var turmaResultado = Turma.Nova("Turma de Futsal Junior", 15, 20);

            turmaResultado.EhSucesso.ShouldBeTrue();

            var inscricaoResultado = alunoResultado.Sucesso.RealizarInscricao(turmaResultado.Sucesso);

            inscricaoResultado.EhFalha.ShouldBeTrue();
            inscricaoResultado.Falha.ShouldBe(Falha.Nova(400, "Idade superior ao limite da turma"));
            alunoResultado.Sucesso.Inscricoes.Count().ShouldBe(0);
        }
コード例 #14
0
ファイル: Aluno.cs プロジェクト: DOTNETPOA/DDDExemplo
        public Resultado <Inscricao, Falha> RealizarInscricao(Turma turma)
        {
            if (Idade(DateTime.Now) > turma.LimiteIdade)
            {
                return(Falha.Nova(400, "Idade superior ao limite da turma"));
            }
            var inscricao = Inscricao.Nova(Id, turma);

            if (inscricao.EhFalha)
            {
                return(inscricao.Falha);
            }
            _inscricoes.Add(inscricao.Sucesso);
            return(inscricao.Sucesso);
        }
コード例 #15
0
        private Entidades.FalhaIntegracao CriarFalha(Falha falha)
        {
            var falha1 = SourceContext.Instance.Create <Entidades.FalhaIntegracao>();

            falha1.Tipo         = falha.Tipo;
            falha1.Mensagem     = falha.Mensagem;
            falha1.PilhaChamada = falha.PilhaChamada;

            if (falha.FalhaInterna != null)
            {
                falha1.FalhaInterna = this.CriarFalha(falha.FalhaInterna);
            }

            return(falha1);
        }
コード例 #16
0
        public Resultado <Turma, Falha> Recuperar(string id)
        {
            var sql = "SELECT Id, Descricao, LimiteAlunos, TotalInscritos, LimiteIdade FROM Turmas WHERE Id = @id";

            using (var conexao = new SqlConnection(_AppSettingsHelper.GetConnectionString()))
            {
                var query = conexao.Query <dynamic>(sql, new { id }).ToList();
                if (!query.Any())
                {
                    return(Falha.Nova(404, "Nenhuma turma encontrada"));
                }
                return(query.Select(a => new Turma((string)a.Id, (string)a.Descricao, (int)a.LimiteIdade, (int)a.LimiteAlunos, (int)a.TotalInscritos))
                       .FirstOrDefault());
            }
        }
コード例 #17
0
 public async Task <Resultado <Pedido> > Run(
     [ActivityTrigger]  FecharPedidoComando comando,
     ExecutionContext context,
     ILogger log)
 {
     try
     {
         log.LogInformation("Processo {0} solicitando fechamento do pedido {1}", comando.ProcessoId, comando.PedidoId);
         return(await _gerenciadorComando.ExecutarAsync(comando));
     }
     catch (Exception ex)
     {
         log.LogCritical(ex, "Falha catrastrófica no processo {0} ao fechar pedido {1}", comando.ProcessoId, comando.PedidoId);
         return(Falha.NovaFalha(Motivo.Novo("FalhaAoFecharPedido", "Falha ao fechar pedido")));
     }
 }
コード例 #18
0
 public async Task <Resultado <Pedido> > Run(
     [ActivityTrigger]  CriarPedidoComando comando,
     ExecutionContext context,
     ILogger log)
 {
     try
     {
         log.LogInformation("Criando pedido para socio {0}", comando.SocioId);
         return(await _gerenciadorComando.ExecutarAsync(comando));
     }
     catch (Exception ex)
     {
         log.LogCritical(ex, "Falha catrastrófica ao criar pedido para socio {0}", comando.SocioId);
         return(Falha.NovaFalha(Motivo.Novo("FalhaAoCriarPedido", "Falha ao criar pedido")));
     }
 }
コード例 #19
0
        public void Dado_Uma_Turma_Cheia_Nao_Posso_Fazer_Inscricao_De_Aluno()
        {
            var alunoResultado = Aluno.Novo("Gabriel Schmitt Kohlrausch", "*****@*****.**", DateTime.Now.AddYears(-20));

            alunoResultado.EhSucesso.ShouldBeTrue();
            var turmaResultado = Turma.Nova("Turma de Futsal Junior", 45, 2);

            turmaResultado.EhSucesso.ShouldBeTrue();
            turmaResultado.Sucesso.IncrementarInscricao();
            turmaResultado.Sucesso.IncrementarInscricao();

            var inscricaoResultado = alunoResultado.Sucesso.RealizarInscricao(turmaResultado.Sucesso);

            inscricaoResultado.EhFalha.ShouldBeTrue();
            inscricaoResultado.Falha.ShouldBe(Falha.Nova(400, "Sem vagas disponiveis"));
            alunoResultado.Sucesso.Inscricoes.Count().ShouldBe(0);
        }
コード例 #20
0
            public Item CriarItem(ItemEsquema itemEsquema)
            {
                if (this.Tipo == Glass.Data.Model.TipoEventoItemIntegracao.Falha)
                {
                    Falha falha = null;

                    if (!string.IsNullOrEmpty(this.TipoFalha))
                    {
                        falha = new Falha(this.TipoFalha, this.MensagemFalha, this.PilhaChamadaFalha);
                    }

                    return(new Item(itemEsquema, this.Mensagem, falha, this.ObterIdentificadores(itemEsquema), this.Data));
                }
                else
                {
                    return(new Item(itemEsquema, ObterTipoItemHistorico(this.Tipo), this.Mensagem, this.ObterIdentificadores(itemEsquema), this.Data));
                }
            }
コード例 #21
0
ファイル: Aluno.cs プロジェクト: DOTNETPOA/DDDExemplo
 public static Resultado <Aluno, Falha> Novo(string nome, string email, DateTime dataNascimento)
 {
     if (String.IsNullOrEmpty(nome) || (nome.Length <= 5 && nome.Length > 100))
     {
         return(Falha.Nova(400, "Nome deve ter 5 a 100 letras"));
     }
     email = (email ?? string.Empty).Trim();
     if (email.Length == 0)
     {
         return(Falha.Nova(400, "Email não pode ser vazio"));
     }
     if (!Regex.IsMatch(email, @"^(.+)@(.+)$"))
     {
         return(Falha.Nova(400, "Email inválido"));
     }
     if (dataNascimento >= DateTime.Now)
     {
         return(Falha.Nova(400, "Data de nascimento deve ser menor que hoje"));
     }
     return(new Aluno(Guid.NewGuid().ToString(), nome, email, dataNascimento, null));
 }
コード例 #22
0
        public async Task <Resultado <Pedido> > ExecutarAsync(FecharPedidoComando comando)
        {
            var pedido = await _contextoSql.Pedidos.Include(c => c.Itens).FirstOrDefaultAsync(c => c.Id == comando.PedidoId);

            var pagamento = await _contextoSql.Pagamentos.FindAsync(comando.PagamentoId);

            if (pagamento.Status == Pagamento.EStatus.EmAnalise)
            {
                return(Falha.NovaFalha(Motivo.Novo("ErroAoFecharPedido", "Pagamento está em análise")));
            }
            if (pagamento.Status == Pagamento.EStatus.Aprovado)
            {
                pedido.Pago();
            }
            if (pagamento.Status == Pagamento.EStatus.Negado)
            {
                pedido.Cancelado();
            }
            await _contextoSql.SaveChangesAsync();

            return(pedido);
        }
コード例 #23
0
 public Resultado <Aluno, Falha> Executar(NovoAlunoComando comando)
 {
     try
     {
         if (Aluno.Novo(comando.Nome, comando.Email, comando.DataNascimento) is var aluno && aluno.EhFalha)
         {
             return(aluno.Falha);
         }
         if (_alunosRepositorio.RecuperarPorEmail(aluno.Sucesso.Email).EhSucesso)
         {
             return(Falha.Nova(400, "Email já está em uso: " + comando.Email));
         }
         if (_alunosRepositorio.IncluirESalvar(aluno.Sucesso) is var resultado && resultado.EhFalha)
         {
             return(resultado.Falha);
         }
         return(resultado.Sucesso);
     }
     catch (Exception e)
     {
         return(Falha.Nova(500, "Erro ao incluir novo aluno"));
     }
 }
コード例 #24
0
        public async Task <Resultado <Pagamento> > RealizarPagamentoAsync(Pagamento pagamento, Pagador pagador)
        {
            try
            {
                _cliente.DefaultRequestHeaders.Accept.Clear();
                var dto = new
                {
                    Pagador  = pagador,
                    Valor    = pagamento.Valor,
                    PedidoId = pagamento.PedidoId
                };
                var conteudo = new StringContent(JsonConvert.SerializeObject(dto), Encoding.UTF8);
                conteudo.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var resposta = await _cliente.PostAsync("/api/Cobrancas", conteudo);

                if (!resposta.IsSuccessStatusCode)
                {
                    return(Falha.NovaFalha(Motivo.Novo("", "")));
                }
                var json = await resposta.Content.ReadAsStringAsync();

                var retorno = JsonConvert.DeserializeObject <RetornoDTO>(json);
                if (retorno.Status == 0)
                {
                    return(pagamento.Aprovado(retorno.TransacaoId));
                }
                if (retorno.Status == 1)
                {
                    return(pagamento.Negado(retorno.TransacaoId));
                }
                return(pagamento.EmAnalise(retorno.TransacaoId));
            }
            catch (Exception ex)
            {
                return(Falha.NovaFalha(Motivo.Novo("FalhaAoRealizarCobranca", "Não foi possível realizar a transação")));
            }
        }
コード例 #25
0
        public void Devo_Identificar_Digital_No_Banco_Quando_Informo_Template_Existente()
        {
            var digitais    = _digitaisDataAccessTestes.CarregarDigitaisParaIdentificacao().ToList();
            var digitalLida = _digitaisDataAccessTestes.CarregarDigitalEncontrada();

            digitais.Add(digitalLida);

            var resultado = Resultado <Digital, Falha> .NovaFalha(Falha.Nova(404, ""));

            var tempo = new Stopwatch();

            tempo.Start();
            foreach (var digital in digitais)
            {
                resultado = _sdk.IdentificarDigital(digitalLida.TemplateIso, digital);
                if (resultado.EhSucesso)
                {
                    break;
                }
            }
            tempo.Stop();
            Assert.IsTrue(tempo.Elapsed.TotalSeconds < 5);
            Assert.AreEqual(resultado.Sucesso.Id, digitalLida.Id);
        }
コード例 #26
0
 public Resultado(bool ehSucesso, T sucesso, Falha falha)
 {
     EhSucesso = ehSucesso;
     Sucesso   = sucesso;
     Falha     = falha;
 }
コード例 #27
0
 public FalhaAoRealizarPagamentoComando(string codigoTenant, int pedidoId, Falha falha)
 {
     CodigoTenant = codigoTenant;
     PedidoId     = pedidoId;
     Falha        = falha;
 }
コード例 #28
0
        public Resultado <Aluno, Falha> Atualizar(Aluno aluno)
        {
            var sucesso            = false;
            var sqlAluno           = "UPDATE Alunos SET Nome = @Nome, Email = @Email, DataNascimento = @DataNascimento WHERE Id = @Id";
            var sqlInscricaoInsert = "INSERT INTO Inscricoes (Id, AlunoId, TurmaId, InscritoEm) VALUES (@Id, @AlunoId, @TurmaId, @InscritoEm)";
            var sqlInscricaoDelete = "DELETE FROM Inscricoes WHERE Id = @Id";
            var updateTurma        = "UPDATE Turmas SET TotalInscritos = @TotalInscritos WHERE Id = @Id";

            using (var conexao = new SqlConnection(_AppSettingsHelper.GetConnectionString()))
            {
                conexao.Open();
                using (var transacao = conexao.BeginTransaction())
                {
                    try
                    {
                        var alunoPreAlteracao = Recuperar(aluno.Id);
                        if (alunoPreAlteracao.EhFalha)
                        {
                            return(alunoPreAlteracao.Falha);
                        }
                        var resultado = conexao.Execute(sqlAluno, new { aluno.Id, aluno.Nome, aluno.Email, aluno.DataNascimento }, transacao);
                        if (resultado <= 0)
                        {
                            return(Falha.Nova(400, "Não foi possível atualizar o aluno"));
                        }
                        foreach (var inscricao in aluno.Inscricoes)
                        {
                            if (!alunoPreAlteracao.Sucesso.Inscricoes.Any(a => a.Id == inscricao.Id))
                            {
                                resultado = conexao.Execute(sqlInscricaoInsert, new { inscricao.Id, AlunoId = aluno.Id, TurmaId = inscricao.Turma.Id, inscricao.InscritoEm }, transacao);
                                if (resultado <= 0)
                                {
                                    return(Falha.Nova(400, "Não foi possível incluir inscrição"));
                                }
                                resultado = conexao.Execute(updateTurma, new { inscricao.Turma.Id, inscricao.Turma.TotalInscritos }, transacao);
                                if (resultado <= 0)
                                {
                                    return(Falha.Nova(400, "Não foi possível atualizar a turma"));
                                }
                            }
                        }

                        foreach (var inscricao in alunoPreAlteracao.Sucesso.Inscricoes)
                        {
                            if (!aluno.Inscricoes.Any(a => a.Id == inscricao.Id))
                            {
                                resultado = conexao.Execute(sqlInscricaoDelete, new { inscricao.Id }, transacao);
                                if (resultado <= 0)
                                {
                                    return(Falha.Nova(400, "Não foi possível excluir inscrição"));
                                }
                                resultado = conexao.Execute(updateTurma, new { inscricao.Turma.Id, inscricao.Turma.TotalInscritos }, transacao);
                                if (resultado <= 0)
                                {
                                    return(Falha.Nova(400, "Não foi possível atualizar a turma"));
                                }
                            }
                        }
                        transacao.Commit();
                        sucesso = true;
                        return(aluno);
                    }
                    catch (Exception ex)
                    {
                        return(Falha.NovaComException(ex));
                    }
                    finally
                    {
                        if (!sucesso)
                        {
                            transacao.Rollback();
                        }
                        conexao.Close();
                    }
                }
            }
        }
コード例 #29
0
 public FalhaAoRealizarPagamentoEvento(string processoId, int pedidoId, Falha falha)
 {
     PedidoId   = pedidoId;
     Falha      = falha;
     ProcessoId = processoId;
 }