public ActionResult ExecutaEncadeamento(string qtd) { int idFaseTeste = 1; int idMaquinaVirtual = 1; bool EnvioTelegram = false; int idAmbienteExecucao = 1; string mensagem = ""; try { #region List <int> idsTestData = new List <int>(); List <int> idsTestData2 = new List <int>(); List <Encadeamento> encadeamentos = new List <Encadeamento>(); Random rnd = new Random(); //criar o encadeamento na tabela if (qtd.Equals("1")) { Encadeamento encadeamento = new Encadeamento { Descricao = "Encadeamento " + rnd.Next(1, 100).ToString() }; db.Encadeamento.Add(encadeamento); db.SaveChanges(); encadeamentos.Add(encadeamento); } else { for (int i = 0; i < 2; i++) { Encadeamento encadeamento = new Encadeamento { Descricao = "Encadeamento " + rnd.Next(1, 100).ToString() }; db.Encadeamento.Add(encadeamento); db.SaveChanges(); encadeamentos.Add(encadeamento); } } if (encadeamentos.Count == 1) { string ids = ConfigurationSettings.AppSettings["Encadeamento1"]; ids.Split(',').ToList().ForEach(item => { idsTestData.Add(Int32.Parse(item)); }); //idsTestData.Add(1); //idsTestData.Add(2); //idsTestData.Add(3); for (int i = 0; i < idsTestData.Count; i++) { Encadeamento_TestData encadeamentoTestData = new Encadeamento_TestData { IdEncadeamento = encadeamentos[0].Id, IdTestData = idsTestData[i], Ordem = (i + 1) }; db.Encadeamento_TestData.Add(encadeamentoTestData); db.SaveChanges(); } ReplaceQuery(idsTestData, idFaseTeste, idMaquinaVirtual, idAmbienteExecucao, EnvioTelegram); } else { string ids = ConfigurationSettings.AppSettings["Encadeamento1"]; ids.Split(',').ToList().ForEach(item => { idsTestData.Add(Int32.Parse(item)); }); ids = ConfigurationSettings.AppSettings["Encadeamento2"]; ids.Split(',').ToList().ForEach(item => { idsTestData2.Add(Int32.Parse(item)); }); //idsTestData.Add(1); //idsTestData.Add(2); //idsTestData.Add(3); //idsTestData2.Add(11); //idsTestData2.Add(12); for (int i = 0; i < idsTestData.Count(); i++) { Encadeamento_TestData encadeamentoTestData = new Encadeamento_TestData { IdEncadeamento = encadeamentos[0].Id, IdTestData = idsTestData[i], Ordem = (i + 1) }; db.Encadeamento_TestData.Add(encadeamentoTestData); db.SaveChanges(); } for (int i = 0; i < idsTestData2.Count(); i++) { Encadeamento_TestData encadeamentoTestData = new Encadeamento_TestData { IdEncadeamento = encadeamentos[1].Id, IdTestData = idsTestData2[i], Ordem = (i + 1) }; db.Encadeamento_TestData.Add(encadeamentoTestData); db.SaveChanges(); } ReplaceQuery(idsTestData, idFaseTeste, idMaquinaVirtual, idAmbienteExecucao, EnvioTelegram); ReplaceQuery(idsTestData2, idFaseTeste, idMaquinaVirtual, idAmbienteExecucao, EnvioTelegram); } #endregion string pAginaDoJob = null; int idAmbv = idMaquinaVirtual; AmbienteVirtual ambv = db.AmbienteVirtual.Where(x => x.Id == idAmbv).FirstOrDefault(); if (ambv.IP != null) { mensagem = "Execução iniciada com sucesso!"; pAginaDoJob = ConfigurationSettings.AppSettings[ambv.IP]; } else { mensagem = "Não foi possível definir o Job do Jenkins."; } runJobJenkinsRemote(pAginaDoJob); return(Json(new { Data = mensagem }, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(new { Data = ex.Message }, JsonRequestBehavior.AllowGet)); } }
public JsonResult Salvar(string encadeamentoJson) { EncadeamentoVO encadeamentoVO = JsonConvert.DeserializeObject <EncadeamentoVO>(encadeamentoJson); using (var context = new DbEntities()) { using (var dbContextTransaction = context.Database.BeginTransaction()) { try { //edição de um encadeamento #region if (encadeamentoVO.IdEncadeamento != null) { log.Info("Entrou na edição do encadeamento " + encadeamentoVO.IdEncadeamento + "."); Encadeamento enc = context.Encadeamento.Where(x => x.Id == encadeamentoVO.IdEncadeamento).FirstOrDefault(); enc.Descricao = encadeamentoVO.Descricao; context.Encadeamento.Attach(enc); context.Entry(enc).State = System.Data.Entity.EntityState.Modified; context.SaveChanges(); log.Info("Alterando a descrição do encadeamento."); List <EncadeamentoVO.TestDataEncadeamento> listaTdsBanco = (from entd in context.Encadeamento_TestData where entd.IdEncadeamento == enc.Id select new EncadeamentoVO.TestDataEncadeamento { Descricao = enc.Descricao, Id = entd.Id, Ordem = entd.Ordem, IdTestData = entd.IdTestData, IdAmbienteExecucao = entd.IdAmbienteExecucao, } ).ToList(); List <EncadeamentoVO.TestDataEncadeamento> listaObjTela = encadeamentoVO.testDatas; for (int i = 0; i < listaObjTela.Count(); i++) { int idTemp = listaObjTela[i].Id; int enca = enc.Id; int idTestDataTemp = listaObjTela[i].IdTestData; EncadeamentoVO.TestDataEncadeamento encTemp = listaTdsBanco.Where(x => x.Id == idTemp).FirstOrDefault(); if (encTemp == null) { listaTdsBanco.Add(listaObjTela[i]); TestData tdAdd = context.TestData.Where(x => x.Id == idTestDataTemp).FirstOrDefault(); Encadeamento_TestData encTdTemp = new Encadeamento_TestData { IdTestData = tdAdd.Id, IdEncadeamento = enca, Ordem = listaObjTela[i].Ordem, IdAmbienteExecucao = listaObjTela[i].IdAmbienteExecucao }; context.Encadeamento_TestData.Add(encTdTemp); context.SaveChanges(); log.Info("Associando o testData" + tdAdd.Id + " ao Encadeamento."); } } for (int z = 0; z < listaTdsBanco.Count(); z++) { int idTemp = listaTdsBanco[z].Id; EncadeamentoVO.TestDataEncadeamento encTemp = listaObjTela.Where(x => x.Id == idTemp).FirstOrDefault(); if (encTemp == null) { listaTdsBanco.Remove(listaTdsBanco[z]); Encadeamento_TestData encDelete = context.Encadeamento_TestData.Where(x => x.Id == idTemp).FirstOrDefault(); context.Encadeamento_TestData.Remove(encDelete); context.SaveChanges(); log.Info("Desassociando o testData" + encDelete.IdTestData + " do Encadeamento."); } } for (int w = 0; w < listaTdsBanco.Count(); w++) { int idTemp = listaTdsBanco[w].Id; EncadeamentoVO.TestDataEncadeamento encTemp = listaObjTela.Where(x => x.Id == idTemp).FirstOrDefault(); if (encTemp != null) { for (int y = 0; y < encTemp.parametros.Count(); y++) { int? idParametroScript = encTemp.parametros[y].IdParametroScript; int? idTestData = encTemp.parametros[y].IdTestData; ParametroValor pv = context.ParametroValor.Where(x => x.IdParametroScript == idParametroScript).Where(x => x.IdTestData == idTestData).FirstOrDefault(); if (pv != null) { pv.Valor = encTemp.parametros[y].Valor; pv.IdParametroValor_Origem = encTemp.parametros[y].IdParametroValor_Origem; context.ParametroValor.Attach(pv); context.Entry(pv).State = System.Data.Entity.EntityState.Modified; context.SaveChanges(); log.Info("Atualizando o ParametroValor " + pv.Id + ", do ParametroScript " + idParametroScript + " e do TestData " + idTestData + "."); } } } } string json = JsonConvert.SerializeObject(true, Formatting.Indented); dbContextTransaction.Commit(); log.Info("Salvando a edição do encadeamento " + encadeamentoVO.IdEncadeamento); return(Json(json, JsonRequestBehavior.AllowGet)); } #endregion //novo encadeamento #region else { //adicionando Encadeamento Encadeamento encadeamento = new Encadeamento { Descricao = encadeamentoVO.Descricao }; context.Encadeamento.Add(encadeamento); context.SaveChanges(); log.Info("Inclusão do encadeamento " + encadeamento.Id); foreach (EncadeamentoVO.TestDataEncadeamento testDataEncadeamento in encadeamentoVO.testDatas) { //criando relacao testdata encadeamento Encadeamento_TestData encadeamentoTestData = new Encadeamento_TestData { IdEncadeamento = encadeamento.Id, IdTestData = testDataEncadeamento.IdTestData, Ordem = testDataEncadeamento.Ordem, IdAmbienteExecucao = testDataEncadeamento.IdAmbienteExecucao }; context.Encadeamento_TestData.Add(encadeamentoTestData); context.SaveChanges(); log.Info("Associando o testData " + testDataEncadeamento.IdTestData + " ao Encadeamento " + encadeamento.Id); //populando a tabela de parametro valor foreach (EncadeamentoVO.TestDataEncadeamento.ParametroEncadeamento parametrosEncadeamento in testDataEncadeamento.parametros) { ParametroValor pv = context.ParametroValor.Where(x => x.Id == parametrosEncadeamento.IdParametroValor).FirstOrDefault(); pv.Valor = parametrosEncadeamento.Valor; context.ParametroValor.Attach(pv); context.Entry(pv).State = System.Data.Entity.EntityState.Modified; context.SaveChanges(); log.Info("Salvando o ParametroValor " + pv.Id + " do TestData " + testDataEncadeamento.IdTestData); } } string json = JsonConvert.SerializeObject(true, Formatting.Indented); dbContextTransaction.Commit(); log.Info("Salvando o Encadeamento " + encadeamento.Id); return(Json(json, JsonRequestBehavior.AllowGet)); } #endregion } catch (Exception ex) { string json = JsonConvert.SerializeObject(false, Formatting.Indented); dbContextTransaction.Rollback(); return(Json(json, JsonRequestBehavior.AllowGet)); } } } }