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); }
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); }
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); }
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); }