Ejemplo n.º 1
0
        public bool AtualizarTrello(ref ProgressBar progressBar1, ref ListBox lbxProgresso)
        {
            try
            {
                #region converte o JSON em classe .NET
                Trellos cartao = null;
                lbxProgresso.Items.Clear();

                if (!importacaoWEB)
                {
                    bp.IncrementarBarra(ref progressBar1, ref lbxProgresso, "LOG: Carregando arquivo Trello [" + arqRet + " ]");

                    if (!File.Exists(arqRet))
                    {
                        bp.FinalizarBarraProgresso(ref progressBar1, ref lbxProgresso, "ERROR: Arquivo Trello[" + arqRet + "] não  Localizado");
                        return(false);
                    }

                    StreamReader txt     = new StreamReader(arqRet, System.Text.Encoding.Default);
                    String       content = txt.ReadToEnd();
                    txt.Close();

                    try
                    {
                        JsonSerializer serializer = new JsonSerializer();
                        serializer.Converters.Add(new JavaScriptDateTimeConverter());
                        serializer.NullValueHandling = NullValueHandling.Ignore;
                        cartao = JsonConvert.DeserializeObject <Trellos>(content);
                    }
                    catch (Exception ex)
                    {
                        bp.FinalizarBarraProgresso(ref progressBar1, ref lbxProgresso, "ERROR: Erro fazendo Leitura(de - serialização) do arquivo Trello, \nO processo não poderá ser seguido, extraia o arquivo e tente novamente " + ex.Message);
                        return(false);
                    }
                }
                #endregion

                using (DataBaseContext dtb = new DataBaseContext())
                {
                    try
                    {
                        dtb.BeginTransaction();
                        List1[]   minhasListas;
                        Member2[] meusUsuarios;
                        Card1[]   meusCartoes;
                        Action[]  minhasAcoes;

                        System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

                        #region Listas
                        if (!importacaoWEB)
                        {
                            minhasListas = cartao.lists;
                        }
                        else
                        {
                            minhasListas = ObterTodasListas();
                        }

                        var dtcLista  = new ListaDTC(dtb);
                        var dtcCartao = new CartaoDTC(dtb);

                        bp.IniciarProgresso(ref progressBar1, ref lbxProgresso, "LOG: Atualizando Listas...", minhasListas.Length);
                        foreach (var item in minhasListas)
                        {
                            bp.IncrementarBarra(ref progressBar1, ref lbxProgresso);
                            using (ListaBO lista = new ListaBO())
                            {
                                lista.ListaId = item.id;
                                lista.Lista   = item.name;

                                dtcLista.Consultar(lista);
                                if (dtcLista.ResultState == ResultTypeEnum.DataFound)
                                {
                                    dtcLista.Alterar(lista);
                                }
                                else
                                {
                                    dtcLista.Incluir(lista);
                                }
                            }
                        }
                        #endregion

                        #region usuarios
                        if (!importacaoWEB)
                        {
                            meusUsuarios = cartao.members;
                        }
                        else
                        {
                            meusUsuarios = ObterTodosUsuarios();
                        }

                        bp.IniciarProgresso(ref progressBar1, ref lbxProgresso, "LOG: Atualizando usuários...", meusUsuarios.Length);
                        foreach (var item in meusUsuarios)
                        {
                            using (UsuarioBO usuario = new UsuarioBO())
                            {
                                bp.IncrementarBarra(ref progressBar1, ref lbxProgresso);
                                var dtcUser = new UsuarioDTC(dtb);
                                usuario.UsuarioId = item.id;
                                dtcUser.Consultar(usuario);
                                usuario.Nome  = item.fullName;
                                usuario.Email = item.username + "@";

                                if (dtcUser.ResultState == ResultTypeEnum.DataFound)
                                {
                                    dtcUser.Alterar(usuario);
                                }
                                else
                                {
                                    dtcUser.Incluir(usuario);
                                }
                            }
                        }
                        #endregion

                        #region cartoes - Chamados
                        if (!importacaoWEB)
                        {
                            meusCartoes = cartao.cards;
                        }
                        else
                        {
                            meusCartoes = ObterTodosCartoes(this.importarCartoesArquivados);
                        }

                        bp.IniciarProgresso(ref progressBar1, ref lbxProgresso, "LOG: Atualizando Cartões...", meusCartoes.Length);
                        foreach (var item in meusCartoes)
                        {
                            bp.IncrementarBarra(ref progressBar1, ref lbxProgresso);
                            using (CartaoBO card = new CartaoBO())
                            {
                                card.CartaoId = item.id;
                                dtcCartao.Consultar(card);

                                card.Texto      = item.name;
                                card.Finalizado = 0;
                                if (item.due != null)
                                {
                                    card.DataPrometida = (DateTimeField)item.due;
                                }

                                card.Link = item.shortUrl;
                                if (item.labels.Length > 0)
                                {
                                    card.Tipo = item.labels.Where(ct => ct.id == lLblCorretivo).ToList().Count() > 0 ? "Corretivo" :
                                                item.labels.Where(ct => ct.id == lLblMelhoria).ToList().Count() > 0 ? "Melhoria" : string.Empty;
                                    if (card.Tipo == string.Empty)
                                    {
                                        card.Tipo = item.labels[0].name;
                                    }
                                }

                                if (item.idMembers.Length > 0)
                                {
                                    card.UsuarioId = item.idMembers[0].ToString();
                                }

                                if (item.dateLastActivity != null)
                                {
                                    card.DataUltimaAtividade = item.dateLastActivity;
                                }

                                card.Retrabalho = item.labels.Where(r => r.id == lLblRetrabalho).ToList().Count();

                                if (!importacaoWEB)
                                {
                                    card.UltraCargo = item.customFieldItems.Where(f => f.value.Checked).ToList().Count;
                                }
                                else
                                {
                                    card.UltraCargo = ObterCustomFieldItemsCartao(item.id).Where(f => f.value.Checked).ToList().Count;
                                }

                                card.IdLista = item.idList;

                                if (!importacaoWEB)
                                {
                                    minhasAcoes = cartao.actions;
                                }
                                else
                                {
                                    minhasAcoes = obterActionsCartao(item.id);
                                    PersistirAcoes(ref minhasAcoes, ref progressBar1, ref lbxProgresso, dtb, item.id);
                                }

                                //Consulta direto no arquivo Json
                                foreach (var c in minhasAcoes)
                                {
                                    if (c.data.list != null)
                                    {
                                        if ((c.data.list.id == lSelGrooming) && (c.data.card.id == item.id))
                                        {
                                            card.DataAnalise = card.DataUltimaAtividade;
                                        }
                                        if ((c.data.list.id == lDesenvolvimento) && (c.data.card.id == item.id))
                                        {
                                            card.DataInicioDev = card.DataUltimaAtividade;
                                        }
                                        if ((c.data.list.id == lUatDes) && (c.data.card.id == item.id))
                                        {
                                            card.DataFimDev = card.DataUltimaAtividade;
                                        }
                                        if (((c.data.list.id == lPRD) || (c.data.list.id == lReadyForPRD)) && (c.data.card.id == item.id))
                                        {
                                            card.Finalizado = 1;
                                        }
                                    }
                                }

                                card.Arquivado = (item.closed ? 1 : 0);

                                // Atualiza o cartão/chamado
                                if (dtcCartao.ResultState == ResultTypeEnum.DataFound)
                                {
                                    dtcCartao.Alterar(card);
                                }
                                else
                                {
                                    dtcCartao.Incluir(card);
                                }
                            }
                        }
                        #endregion

                        #region ações - Steps (somente se gerar com arquivo)
                        if (!importacaoWEB)
                        {
                            minhasAcoes = cartao.actions;
                            PersistirAcoes(ref minhasAcoes, ref progressBar1, ref lbxProgresso, dtb, string.Empty);
                        }
                        #endregion

                        #region finalizando atualizações
                        dtb.Commit();

                        bp.IniciarProgresso(ref progressBar1, ref lbxProgresso, "LOG: Atualizando Listas anteriores...", 1);
                        dtb.BeginTransaction();
                        AtualizaListaAnteriorAcoes();
                        dtb.Commit();

                        bp.FinalizarBarraProgresso(ref progressBar1, ref lbxProgresso, "LOG: Gerando e-mail de notificação ao gerente do projeto.");
                        IEmail mail = new Email();

                        if (mail.EnviarEmail())
                        {
                            bp.FinalizarBarraProgresso(ref progressBar1, ref lbxProgresso, "OK: Fim da Atualização com sucesso " + DateTime.Now.ToString());
                        }
                        else
                        {
                            bp.FinalizarBarraProgresso(ref progressBar1, ref lbxProgresso, "WARNING: Base foi atualizada, mas ocorreu um erro ao gerar e-mail de notificação.");
                        }
                        #endregion
                    }
                    catch (Exception ext)
                    {
                        dtb.Rollback();
                        bp.FinalizarBarraProgresso(ref progressBar1, ref lbxProgresso, "ERROR: Erro na Atualização[ " + ext.Message + "] - Nenhum registro atualizado");
                        return(false);
                    }
                }
            }
            catch (Exception ex)
            {
                bp.FinalizarBarraProgresso(ref progressBar1, ref lbxProgresso, "ERROR: Erro - Atualização não Inicializada " + ex.Message);
                return(false);
            }
            return(true);
        }