/** * 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(); } }
/// <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(); } } }