private void ReplaceQuery(List <Encadeamento_TestData> EncadeamentoTdList, int idFaseTeste, int idMaquinaVirtual, bool EnvioTelegram) { Entities db = new Entities(); // validar ambiente disponível e setar a flag em uso antes de inserir a query string testdataList = ""; foreach (var Encadeamento_TestData in EncadeamentoTdList) { //recuperando objeto testdata, para ter recuperar o IdScript_CondicaoScript TestData testData = db.TestData.FirstOrDefault(x => x.Id == Encadeamento_TestData.IdTestData); Script_CondicaoScript script_CondicaoScript = db.Script_CondicaoScript.Where(x => x.Id == testData.IdScript_CondicaoScript).FirstOrDefault(); string query = script_CondicaoScript.QueryTosca; String queryTemp = query.Replace("ptdTosca", Encadeamento_TestData.IdTestData.ToString()); Usuario user = GetLoggedUser(); Execucao exec = new Execucao(); Script_CondicaoScript_Ambiente script_CondicaoScript_Ambiente = db.Script_CondicaoScript_Ambiente .Where(x => x.IdScript_CondicaoScript == testData.IdScript_CondicaoScript) .Where(x => x.IdAmbienteVirtual == idMaquinaVirtual) .Where(x => x.IdAmbienteExecucao == Encadeamento_TestData.IdAmbienteExecucao).FirstOrDefault(); exec.IdScript_CondicaoScript_Ambiente = script_CondicaoScript_Ambiente.Id; exec.IdTipoFaseTeste = idFaseTeste; // pegar via campo popup modal play exec.IdStatusExecucao = (int)Enumerators.EnumStatusExecucao.AguardandoProcessamento; exec.Usuario = user.Id.ToString(); exec.IdTestData = Encadeamento_TestData.IdTestData; // pegar o id via tela exec.SituacaoAmbiente = (int)Enumerators.EnumSituacaoAmbiente.EmUso; exec.ToscaInput = queryTemp; exec.EnvioTelegram = false; db.Execucao.Add(exec); Entities db1 = new Entities(); TestData td1 = db1.TestData.Where(x => x.Id == Encadeamento_TestData.IdTestData).FirstOrDefault(); td1.IdStatus = (int)Enumerators.EnumStatusTestData.EmGeracao; td1.GeradoPor = Util.GetUsuarioLogado().Login; db1.TestData.Attach(td1); db1.Entry(td1).State = System.Data.Entity.EntityState.Modified; try { db.SaveChanges(); db1.SaveChanges(); } catch (Exception ex) { this.FlashError(ex.Message); } } }
static void Main(string[] args) { try { Log.Info("Iniciando Rotina Diária"); DbEntities db = new DbEntities(); List <DataPoolVO> DataPoolVOs = new List <DataPoolVO>(); SqlParameter[] param = { new SqlParameter("@DisplayLength", 50), new SqlParameter("@DisplayStart", "0"), new SqlParameter("@SortCol", 7), new SqlParameter("@SortDir", "desc"), new SqlParameter("@SEARCH", DBNull.Value), new SqlParameter("@ListarTodos", 1), new SqlParameter("@IdTDM", DBNull.Value) }; Log.Info("Executando procedure: PR_LISTAR_DATAPOOL_SEM_USUARIO"); Log.Info("Parametros:"); Log.Info("@DisplayLength = 50"); Log.Info("@DisplayStart = 0"); Log.Info("@SortCol = 7"); Log.Info("@SortDir = desc"); Log.Info("@SEARCH = null"); Log.Info("@ListarTodos = 1"); Log.Info("@IdTDM = null"); DataPoolVOs = db.Database.SqlQuery <DataPoolVO>( "EXEC PR_LISTAR_DATAPOOL_SEM_USUARIO @DisplayLength, @DisplayStart, @SortCol, @SortDir, @SEARCH, @ListarTodos, @IdTDM ", param).ToList(); Log.Info("Quantidade de registros retornados: " + DataPoolVOs.Count()); List <int> idsDatapoolAmarelo = new List <int>(); foreach (DataPoolVO dtemp in DataPoolVOs) { if ((dtemp.QtdDisponivel + dtemp.QtdUtilizada > dtemp.QtdSolicitada) && (dtemp.QtdDisponivel + dtemp.QtdUtilizada < dtemp.QtdSolicitada * 1.2)) { if (!idsDatapoolAmarelo.Contains(dtemp.Id)) { idsDatapoolAmarelo.Add(dtemp.Id); } } } Log.Info("Quantidade de datapool com o farol em amarelo: " + idsDatapoolAmarelo.Count()); int IdScript_CondicaoScript = 0; for (int i = 0; i < idsDatapoolAmarelo.Count(); i++) { int idTemp = idsDatapoolAmarelo[i]; List <TestData> listaTDs = db.TestData.Where(x => x.IdDataPool == idTemp).Where(x => x.IdStatus == (int)EnumStatusTestData.Cadastrada).ToList(); Log.Info("Quantidade " + listaTDs.Count() + " de testdata para o datapool " + idTemp); StringBuilder idsTestData = new StringBuilder(); for (int w = 0; w < listaTDs.Count(); w++) { //TestData tdTemp = db.TestData.Where(x => x.IdScript_CondicaoScript == IdScript_CondicaoScript).Where(x => x.IdStatus == (int)EnumStatusTestData.Disponivel || x.IdStatus == (int)EnumStatusTestData.Utilizada).Where(x=>x.IdExecucao != null).OrderByDescending(x => x.Id).FirstOrDefault(); //Execucao ExecTemp = db.Execucao.Where(x => x.Id == tdTemp.IdExecucao).FirstOrDefault(); //Script_CondicaoScript_Ambiente scsa = db.Script_CondicaoScript_Ambiente.Where(x=>x.Id == ExecTemp.IdScript_CondicaoScript_Ambiente).FirstOrDefault(); ////DateTime d = DateTime.Now; ////int dia = d.Day + 1; ////string date = d.Year + "-" + d.Month + "-" + dia + "T00:00"; //string idFaseTeste = ExecTemp.IdTipoFaseTeste.ToString(); //string idAmbVirt = scsa.IdAmbienteVirtual.ToString(); //string idAmbExec = scsa.IdAmbienteExecucao.ToString(); ////ag.ManterAgendamento("0", date, idTd, idFaseTeste, idAmbVirt, "1", idAmbExec, true); string idTd = listaTDs[w].Id.ToString(); if (w < (listaTDs.Count() - 1)) { idsTestData.Append(idTd + ","); } else { idsTestData.Append(idTd); } } IdScript_CondicaoScript = listaTDs[0].IdScript_CondicaoScript; Execucao ultimaExec = (from e in db.Execucao join scsa in db.Script_CondicaoScript_Ambiente on e.IdScript_CondicaoScript_Ambiente equals scsa.Id join scs in db.Script_CondicaoScript on scsa.Id equals scs.Id join td in db.TestData on e.IdTestData equals td.Id where e.IdStatusExecucao == 4 && td.IdScript_CondicaoScript == IdScript_CondicaoScript orderby e.Id descending select e ).FirstOrDefault(); if (ultimaExec != null) { Script_CondicaoScript_Ambiente sca = db.Script_CondicaoScript_Ambiente.FirstOrDefault(x => x.Id == ultimaExec.IdScript_CondicaoScript_Ambiente); Log.Info("Foi encontrada a execucao de ID: " + ultimaExec.Id); DateTime d = DateTime.Now; int dia = d.Day + 1; string date = d.Year + "-" + d.Month + "-" + dia + "T00:10"; AgendamentoController ag = new AgendamentoController(); //2018-11-28T22:00 ag.ManterAgendamento("0", date, idsTestData.ToString(), ultimaExec.IdTipoFaseTeste.ToString(), sca.IdAmbienteVirtual.ToString(), true.ToString(), sca.IdAmbienteExecucao.ToString(), true); Log.Info("Foi criado agendamento com sucesso para a data " + date); } else { Log.Info("Não foi encontrado nenhum historico de execução para o IdScript_CondicaoScript: " + IdScript_CondicaoScript + " como o status de sucesso."); } } } catch (Exception e) { Log.Error("Erro ao executar a rotina diaria: " + e.Message); Console.Write(e.Message); Console.Read(); } }
private static void ReplaceQuery(List <int> ids, int idFaseTeste, int idMaquinaVirtual, int idAmbienteExecucao, Usuario user, bool EnvioTelegram) { #region Entities DbEntities db = new DbEntities(); #endregion TestData testData = db.TestData.Find(ids.First()); Script_CondicaoScript script_CondicaoScript = db.Script_CondicaoScript.Where(x => x.Id == testData.IdScript_CondicaoScript).FirstOrDefault(); string query = script_CondicaoScript.QueryTosca; string testdataList = ""; foreach (var item in ids) { #region Replace Query String queryTemp = query.Replace("ptdTosca", item.ToString()); #endregion db = new DbEntities(); #region Edição Entidade Execução //Execucao exec = new Execucao(); Execucao exec = db.Execucao.FirstOrDefault(x => x.IdTestData == item); Script_CondicaoScript_Ambiente script_CondicaoScript_Ambiente = db.Script_CondicaoScript_Ambiente.Where(x => x.IdScript_CondicaoScript == testData.IdScript_CondicaoScript).Where(x => x.IdAmbienteVirtual == idMaquinaVirtual).Where(x => x.IdAmbienteExecucao == idAmbienteExecucao).FirstOrDefault(); exec.IdScript_CondicaoScript_Ambiente = script_CondicaoScript_Ambiente.Id; //exec.IdTipoFaseTeste = idFaseTeste; // pegar via campo popup modal play exec.IdStatusExecucao = (int)EnumStatusExecucao.AguardandoProcessamento; exec.Usuario = user.Id.ToString(); exec.IdTestData = item; // pegar o id via tela exec.SituacaoAmbiente = (int)EnumSituacaoAmbiente.EmUso; exec.ToscaInput = queryTemp; exec.EnvioTelegram = EnvioTelegram; // db.Execucao.Add(exec); db.Execucao.Attach(exec); db.Entry(exec).State = System.Data.Entity.EntityState.Modified; #endregion #region Edição Entidade TestData DbEntities db1 = new DbEntities(); TestData td1 = db1.TestData.Where(x => x.Id == item).FirstOrDefault(); td1.IdStatus = (int)EnumStatusTestData.EmGeracao; td1.GeradoPor = user.Login; db1.TestData.Attach(td1); db1.Entry(td1).State = System.Data.Entity.EntityState.Modified; #endregion try { #region Salvar Entidades db.SaveChanges(); db1.SaveChanges(); #endregion } catch (Exception ex) { #region Log Error Log.Error("Ocorreu o seguinte erro no método Play(). " + ex.Message); Log.Error(ex.StackTrace); #endregion } } }