コード例 #1
0
        private UpdateTemplateBoard GetBoardById(UpdateTemplateBoard updateTemplateBoard)
        {
            try
            {
                var templateBoard = updateTemplateBoard.Trello.Boards.WithId(updateTemplateBoard.IdTemplateBoard);
                updateTemplateBoard.AddTemplateBoard(templateBoard);
            }
            catch (Exception ex)
            {
                if (ex.Message == "invalid id")
                {
                    updateTemplateBoard.AddNotification(nameof(updateTemplateBoard.TemplateBoard), "Quadro template não encontrado. Id informado não encontrou nenhum quadro");
                }
            }

            return(updateTemplateBoard);
        }
コード例 #2
0
        private UpdateTemplateBoard GetBacklogList(UpdateTemplateBoard updateTemplateBoard)
        {
            // Recupera as listas do quadro de template.
            IEnumerable <List> templateBoardLists = updateTemplateBoard.Trello.Lists.ForBoard(updateTemplateBoard.TemplateBoard);

            if (templateBoardLists == null)
            {
                updateTemplateBoard.AddNotification(nameof(updateTemplateBoard.BacklogList), $"Erro ao recuperar listas presentes no quadro ({ updateTemplateBoard.TemplateBoard.Name })");
                return(updateTemplateBoard);
            }

            var backlogList = templateBoardLists
                              .FirstOrDefault(l => l.Name == "Backlog");

            if (backlogList == null)
            {
                updateTemplateBoard.AddNotification(nameof(updateTemplateBoard.BacklogList), $"Não foi encontrada nenhuma lista chamada Backlog no quadro ({ updateTemplateBoard.TemplateBoard.Name })");
                return(updateTemplateBoard);
            }

            updateTemplateBoard.AddBacklogList(backlogList);

            return(updateTemplateBoard);
        }
コード例 #3
0
        static void Main(string[] args)
        {
            const string separator = "=================================================================================================================================================";

            SharedLog sharedLog = new SharedLog();

            sharedLog.WriteLog(separator, "", SharedLog.FileName.Date, SharedLog.LogType.Message);
            sharedLog.WriteLog("Iniciando processo...", "", SharedLog.FileName.Date, SharedLog.LogType.Message);

            sharedLog.WriteLog("Recuperando informações de configuração.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);

            // Recupera configurações necessárias.
            ConfigProperties configProperties =
                new ConfigProperties().readJsonConfigFile();

            if (!configProperties.Valid)
            {
                sharedLog.WriteLog(configProperties.Notifications.FirstOrDefault().Message, string.Empty, SharedLog.FileName.Date, SharedLog.LogType.Error);
                endProcess(sharedLog);
                return;
            }

            // Realiza todas validações necessárias para garantir que a classe está consistente.
            configProperties.ValidateReadingTextFile();

            if (configProperties.ReadingTextFile.Invalid)
            {
                sharedLog.WriteLog(configProperties.Notifications.FirstOrDefault().Message, "", SharedLog.FileName.Date, SharedLog.LogType.Error);
                endProcess(sharedLog);
                return;
            }

            sharedLog.WriteLog($@"Informações recuperadas com sucesso: [Caminho do arquivo:] {configProperties.ReadingTextFile.FilePath} [Nome do arquivo:] {configProperties.ReadingTextFile.FileName}.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);

            sharedLog.WriteLog("Iniciando leitura do arquivo para recuperação das informações.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);

            Estimate estimate = new Estimate();

            estimate.Topics = ReadFileText.readTextFileToObject(configProperties);

            // Recupera o primeiro tópico que possa estar com erro.
            var topicWithError = estimate.Topics.Where(t => t.Invalid).ToList().FirstOrDefault();

            if (topicWithError != null)
            {
                sharedLog.WriteLog(topicWithError.Notifications.FirstOrDefault().Message, "", SharedLog.FileName.Date, SharedLog.LogType.Error);
                endProcess(sharedLog);
                return;
            }

            if (estimate.Topics == null)
            {
                sharedLog.WriteLog("Erro ao realizar leitura do arquivo.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);
                endProcess(sharedLog);
                return;
            }
            else
            {
                sharedLog.WriteLog("Leitura do arquivo e recuperação das informações realizado com sucesso.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);
            }

            // Calcula tempo total para desenvolvimento.
            estimate.sumHoursDevelopment();

            // Calcula tempo total para testes
            estimate.sumHoursTest();

            sharedLog.WriteLog($@"Horas desenvolvimento: {estimate.TotalHoursDevelopment}.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);
            sharedLog.WriteLog($@"Horas teste: {estimate.TotalHoursTest}.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);

            sharedLog.WriteLog($@"Concluído processo de análise da estimativa de horas.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);



            #region Processo para o Quadro.

            sharedLog.WriteLog($@"Iniciando processo para manipulação do quadro.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);


            // Valida se está configurado para manipular o quadro.
            if (!configProperties.CreateBoard.Create)
            {
                sharedLog.WriteLog("Não está configurado para realizar a manipulação do quadro.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);
                endProcess(sharedLog);
                return;
            }

            Authentication authentication = new Authentication(configProperties.CreateBoard.Key, configProperties.CreateBoard.Token);
            var            trello         = authentication.Authenticate();

            if (authentication.Invalid)
            {
                sharedLog.WriteLog($"Erro ao realizar autenticação do processo. Retorno: {authentication.Notifications.FirstOrDefault().Message}.", "", SharedLog.FileName.Date, SharedLog.LogType.Error);
                endProcess(sharedLog);
                return;
            }

            sharedLog.WriteLog($"Iniciando processo de atualização do quadro.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);

            var updateTemplateBoard = new UpdateTemplateBoard
                                      (
                configProperties.CreateBoard.Key,
                configProperties.CreateBoard.Token,
                configProperties.CreateBoard.IdBoard,
                estimate,
                trello
                                      );

            UpdateBoard updateBoard = new UpdateBoard();

            updateBoard.UpdateTemplateBoard(updateTemplateBoard);

            if (updateTemplateBoard.Invalid)
            {
                sharedLog.WriteLog($"Erro ao realizar atualização do quadro. Retorno: {updateTemplateBoard.Notifications.FirstOrDefault().Message}.", "", SharedLog.FileName.Date, SharedLog.LogType.Error);
                endProcess(sharedLog);
                return;
            }

            sharedLog.WriteLog($"Concluído processo de criação dos cartões no quadro {updateTemplateBoard.TemplateBoard.Name}.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);
            sharedLog.WriteLog($"Cartões criados:", "", SharedLog.FileName.Date, SharedLog.LogType.Message);

            int countCards = 0;

            foreach (var card in updateTemplateBoard.Cards)
            {
                countCards++;
                sharedLog.WriteLog($"{countCards} - {card.Name}", "", SharedLog.FileName.Date, SharedLog.LogType.Message);
            }

            sharedLog.WriteLog($"Concluído processo de atualização do quadro {updateTemplateBoard.TemplateBoard.Name}.", "", SharedLog.FileName.Date, SharedLog.LogType.Message);


            #endregion


            endProcess(sharedLog);
        }
コード例 #4
0
        public UpdateTemplateBoard UpdateTemplateBoard(UpdateTemplateBoard updateTemplateBoard)
        {
            #region 1 - Recupera quadro template.

            if (string.IsNullOrEmpty(updateTemplateBoard.IdTemplateBoard))
            {
                updateTemplateBoard.AddNotification("IdBoard", "Id do quadro template não foi informado");
                return(updateTemplateBoard);
            }

            GetBoardById(updateTemplateBoard);

            if (updateTemplateBoard.Invalid)
            {
                return(updateTemplateBoard);
            }

            #endregion

            #region 2 - Recupera lista 'Backlog' no quadro template.

            GetBacklogList(updateTemplateBoard);

            if (updateTemplateBoard.Invalid)
            {
                return(updateTemplateBoard);
            }

            #endregion

            #region 3 - Cria os cartões.

            CardRepository cardRepository = new CardRepository();

            foreach (var topic in updateTemplateBoard.Estimate.Topics)
            {
                var createCard = new CreateCard
                                 (
                    updateTemplateBoard.Key,
                    updateTemplateBoard.Token,
                    updateTemplateBoard.BacklogList.Id,
                    topic
                                 );

                var createCardResponse = cardRepository.AddCard(createCard);

                if (createCard.Invalid)
                {
                    updateTemplateBoard.AddNotification(createCard.Notifications.FirstOrDefault().Property, createCard.Notifications.FirstOrDefault().Message);
                    return(updateTemplateBoard);
                }

                Card card = new Card()
                {
                    Id   = createCardResponse.Id,
                    Desc = createCardResponse.Description,
                    Name = createCardResponse.Name,
                };

                updateTemplateBoard.AddCard(card);

                #region 3.1 - Cria o CheckList "Tópicos a serem desenvolvidos".

                CheckListRepository checkListRepository = new CheckListRepository();

                var createCheckList = new CreateCheckList
                                      (
                    updateTemplateBoard.Key,
                    updateTemplateBoard.Token,
                    createCardResponse.Id,
                    "Tópicos que serão desenvolvidos"
                                      );

                // Não grava em nunhum lugar essa informação no momento, pois não é necessária. Caso em algum momento seja necessário utilizar essa informação, necessário implementar.
                var createCheckListResponse = checkListRepository.AddCheckList(createCheckList);

                if (createCheckList.Invalid)
                {
                    updateTemplateBoard.AddNotification(createCheckList.Notifications.FirstOrDefault().Property, createCheckList.Notifications.FirstOrDefault().Message);
                    return(updateTemplateBoard);
                }

                #endregion

                #region 3.2 - Cria os itens para o CheckList "Tópicos a serem desenvolvidos".

                int checkListItemCount = 0;

                foreach (var topic2 in topic.Topics)
                {
                    checkListItemCount++;

                    CheckListItemRepository checkListItemRepository = new CheckListItemRepository();

                    var createCheckListItem = new CreateCheckListItem
                                              (
                        updateTemplateBoard.Key,
                        updateTemplateBoard.Token,
                        createCheckListResponse.Id,
                        $"Ponto {checkListItemCount}"
                                              );

                    var checkListItemResponse = checkListItemRepository.AddCheckListItem(createCheckListItem);

                    if (createCheckList.Invalid)
                    {
                        updateTemplateBoard.AddNotification(createCheckList.Notifications.FirstOrDefault().Property, createCheckList.Notifications.FirstOrDefault().Message);
                        return(updateTemplateBoard);
                    }
                }

                #endregion
            }

            #endregion


            return(updateTemplateBoard);
        }