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);
                }
            }
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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
                }
            }
        }