Esempio n. 1
0
        /**
         * Armazena o logexecution, caso não exista
         */
        private static void adicionaLogExecution(painel_taxservices_dbContext _db, Int32 idLoginOperadora, Int32 idOperadora)
        {
            // Armazena o logexecution, caso não exista
            // Verifica se já existe logExecution para o registro corrente
            LogExecution logExecution = _db.LogExecutions
                                        .Where(l => l.idLoginOperadora == idLoginOperadora)
                                        .Where(l => l.idOperadora == idOperadora)
                                        .FirstOrDefault();

            if (logExecution == null)
            {
                Operadora op = _db.Operadoras.Where(o => o.id == idOperadora).FirstOrDefault(); // o que é enviado é o nome e não a descrição
                if (op == null)
                {
                    return;
                }
                Models.Adquirente adquirente = _db.Adquirentes.Where(o => o.nome.Equals(op.nmOperadora)).FirstOrDefault();
                if (adquirente == null)
                {
                    return;
                }
                DateTime hrExec = (DateTime)adquirente.hraExecucao;

                LogExecution newLogExecution = new LogExecution();
                newLogExecution.idLoginOperadora = idLoginOperadora;
                newLogExecution.idOperadora      = idOperadora;
                newLogExecution.statusExecution  = "7"; //0 = Em execução; 1 = Executado com Sucesso; 2 = Erro na Execução; 3 = Re-Executar; 7 = Elegivel
                                                        //newLogExecution.dtaFiltroTransacoes = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1, hrExec.Hour, hrExec.Minute, hrExec.Second);
                                                        //newLogExecution.dtaFiltroTransacoesFinal = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1, hrExec.Hour, hrExec.Minute, hrExec.Second);
                newLogExecution.dtaFiltroTransacoes      = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1, 0, 0, 0);
                newLogExecution.dtaFiltroTransacoesFinal = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1, 0, 0, 0);
                newLogExecution.dtaExecucaoProxima       = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 2, hrExec.Hour, hrExec.Minute, hrExec.Second);
                newLogExecution.qtdTransacoes            = 0;
                newLogExecution.vlTotalTransacoes        = new decimal(0.0);

                _db.LogExecutions.Add(newLogExecution);
                _db.SaveChanges();
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Adiciona nova LoginOperadora
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static Int32 Add(string token, LoginOperadora param, painel_taxservices_dbContext _dbContext = null)
        {
            painel_taxservices_dbContext _db;

            if (_dbContext == null)
            {
                _db = new painel_taxservices_dbContext();
            }
            else
            {
                _db = _dbContext;
            }
            DbContextTransaction transaction = _db.Database.BeginTransaction();

            try
            {
                // Avalia adquirente
                if (param.Operadora.nmOperadora == null)
                {
                    throw new Exception("Adquirente inválida");
                }
                Models.Adquirente op = _db.Adquirentes.Where(o => o.nome.Equals(param.Operadora.nmOperadora)).FirstOrDefault(); // o que é enviado é o nome e não a descrição
                if (op == null)
                {
                    throw new Exception("Adquirente inválida");
                }

                // Busca possível registro da adquirente para a filial
                //LoginOperadora loginOperadora = _db.LoginOperadoras
                //                                        .Where(l => l.cnpj.Equals(param.cnpj))
                //                                        .Where(l => l.Operadora.nmOperadora.Equals(param.Operadora.nmOperadora))
                //                                        .FirstOrDefault();
                LoginOperadora loginOperadora = _db.Database.SqlQuery <LoginOperadora>("SELECT L.*" +
                                                                                       " FROM pos.LoginOperadora L (NOLOCK)" +
                                                                                       " JOIN pos.Operadora O ON O.id = L.idOperadora" +
                                                                                       " WHERE L.cnpj = '" + param.cnpj + "'" +
                                                                                       " AND O.nmOperadora = '" + param.Operadora.nmOperadora + "'")
                                                .FirstOrDefault();

                if (loginOperadora == null)
                {
                    // Cria um novo registro de loginoperadora para a filial

                    // Procura pela operadora
                    //Operadora operadora = _db.Operadoras
                    //                            /*.Where(e => _db.LoginOperadoras
                    //                                                .Where(l => l.cnpj.Equals(param.cnpj))
                    //                                                .Select(l => l.idOperadora)
                    //                                                .ToList().Contains(e.id)
                    //                                  )*/
                    //                            .Where(e => e.idGrupoEmpresa == param.idGrupo)
                    //                            .Where(e => e.nmOperadora.Equals(param.Operadora.nmOperadora))
                    //                            .FirstOrDefault();
                    Operadora operadora = _db.Database.SqlQuery <Operadora>("SELECT O.*" +
                                                                            " FROM pos.Operadora O (NOLOCK)" +
                                                                            " WHERE O.idGrupoEmpresa = " + param.idGrupo +
                                                                            " AND O.nmOperadora = '" + param.Operadora.nmOperadora + "'")
                                          .FirstOrDefault();

                    if (operadora == null)
                    {
                        // Cria um novo registro de operadora para a filial
                        //Operadora newOperadora = new Operadora();
                        //newOperadora.nmOperadora = param.Operadora.nmOperadora;
                        //newOperadora.idGrupoEmpresa = param.idGrupo;
                        //_db.Operadoras.Add(newOperadora);
                        _db.Database.ExecuteSqlCommand("INSERT INTO pos.Operadora (nmOperadora, idGrupoEmpresa)" +
                                                       " VALUES('" + param.Operadora.nmOperadora + "', " + param.idGrupo + ")");
                        _db.SaveChanges();

                        // Obtém operadora
                        operadora = _db.Database.SqlQuery <Operadora>("SELECT O.*" +
                                                                      " FROM pos.Operadora O (NOLOCK)" +
                                                                      " WHERE O.idGrupoEmpresa = " + param.idGrupo +
                                                                      " AND O.nmOperadora = '" + param.Operadora.nmOperadora + "'")
                                    .FirstOrDefault();

                        // Obtém o id da nova operadora
                        //param.idOperadora = newOperadora.id;
                    }
                    //else

                    // Já existe operadora com nmOperadora para a filial
                    param.idOperadora = operadora.id;

                    // Salva na base

                    param.Operadora.idGrupoEmpresa = param.idGrupo;
                    param.status       = true;
                    param.dtBloqueio   = null;
                    param.qtTentativas = 0;
                    try
                    {
                        //_db.LoginOperadoras.Add(param);
                        _db.Database.ExecuteSqlCommand("INSERT INTO pos.LoginOperadora (login, senha, status, cnpj, idOperadora" +
                                                       ", idGrupo, estabelecimento, cdEstabelecimentoConsulta, nrCNPJCentralizadora)" +
                                                       " VALUES('" + param.login + "', '" + param.senha + "', 1, '" + param.cnpj + "'" +
                                                       ", " + param.idOperadora + ", " + param.idGrupo +
                                                       ", " + (param.estabelecimento != null ? "'" + param.estabelecimento + "'" : "NULL") +
                                                       ", " + (param.cdEstabelecimentoConsulta != null ? "'" + param.cdEstabelecimentoConsulta + "'" : "NULL") +
                                                       ", " + (param.nrCNPJCentralizadora != null ? "'" + param.nrCNPJCentralizadora + "'" : "NULL") + ")");
                        _db.SaveChanges();

                        // Obtém o loginOperadora
                        loginOperadora = _db.Database.SqlQuery <LoginOperadora>("SELECT L.*" +
                                                                                " FROM pos.LoginOperadora L (NOLOCK)" +
                                                                                " JOIN pos.Operadora O ON O.id = L.idOperadora" +
                                                                                " WHERE L.cnpj = '" + param.cnpj + "'" +
                                                                                " AND O.nmOperadora = '" + param.Operadora.nmOperadora + "'")
                                         .FirstOrDefault();
                    }
                    catch (Exception e)
                    {
                        // Remove a operadora criada
                        //GatewayOperadora.Delete(token, param.idOperadora);
                        // Reporta a falha
                        throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message);
                    }
                }
                //else
                //{
                // Já existe uma operadora registrada (nmOperadora) para aquela filial
                param.idOperadora = loginOperadora.idOperadora;
                param.id          = loginOperadora.id;
                // Atualiza o status para true
                if (!loginOperadora.status)
                {
                    _db.Database.ExecuteSqlCommand("UPDATE L" +
                                                   " SET L.status = 1" +
                                                   " FROM pos.LoginOperadora L" +
                                                   " WHERE L.id = " + loginOperadora.id);
                    //loginOperadora.status = true;
                    _db.SaveChanges();
                }
                //}

                // Adiciona log execution
                try
                {
                    adicionaLogExecution(_db, param.id, param.idOperadora);
                }
                catch (Exception e)
                {
                    // Remove LoginOperadora e Operadora possivelmente criados
                    //Delete(token, param.id);
                    // Reporta a falha
                    if (e is DbEntityValidationException)
                    {
                        string erro = MensagemErro.getMensagemErro((DbEntityValidationException)e);
                        throw new Exception(erro.Equals("") ? "Houve uma falha ao armazenar logexecution!" : erro);
                    }
                    throw new Exception("Houve uma falha ao armazenar logexecution! " + e.Message);
                }

                transaction.Commit();

                return(param.id);
            }
            catch (Exception e)
            {
                // Rollback
                transaction.Rollback();
                if (e is DbEntityValidationException)
                {
                    string erro = MensagemErro.getMensagemErro((DbEntityValidationException)e);
                    throw new Exception(erro.Equals("") ? "Falha ao salvar login operadora" : erro);
                }
                throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message);
            }
            finally
            {
                if (_dbContext == null)
                {
                    // Fecha conexão
                    _db.Database.Connection.Close();
                    _db.Dispose();
                }
            }
        }