Poniższy program tworzy zadania TFS z kart Trello. Listy kontrolne Trello pojawiają się jako opisy zadań.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
using TrelloNet;
namespace TFSTrelloAPI
{
class Program
{
#region Trello Security
public static string DevTeamTasksBoardId { get; set; }
public static string TrelloToken { get; set; }
public static string TrelloKey { get; set; }
#endregion
#region TFS Details
public static string TFSProject { get; set; }
public static string TFSServerUri { get; set; }
public static Uri Url { get; set; }
#endregion
static void Main(string[] args)
{
SetTrelloSecurity();
SetTFSDetails();
ITrello trello = new Trello(TrelloKey);
IList<string> lines = new List<string>();
Url = trello.GetAuthorizationUrl("TFSImport", Scope.ReadOnly);
trello.Authorize(TrelloToken);
var boards = trello.Boards;
foreach (var board in boards.ForMe())
{
if (board.Id == DevTeamTasksBoardId)
{
lines.Add("Name: " + board.Name);
lines.Add(" Desc: " + board.Desc);
lines.Add("ID: " + board.Id);
}
}
IBoardId bid = new BoardId(DevTeamTasksBoardId);
var lists = trello.Lists.ForBoard(bid);
foreach (var list in lists)
{
var listId = new ListId(list.Id);
var cards = trello.Cards.ForList(listId);
foreach (var card in cards)
{
var sbTaskDesc = new StringBuilder();
string taskName = (card.Name + " * Desc: " + card.Desc);
ICardId ic = new CardId(card.Id);
var chkLists = trello.Checklists.ForCard(ic);
foreach (var checklist in chkLists)
{
sbTaskDesc.AppendLine(" * " + checklist.Name);
sbTaskDesc.AppendLine(" * ");
var ckItems = checklist.CheckItems;
foreach (var checkItem in ckItems)
{
sbTaskDesc.AppendLine(" * " + checkItem.Name);
}
}
string taskDesc = sbTaskDesc.ToString();
CreateTask(taskName, taskDesc);
}
}
}
/// <summary>
/// Replace empty strings with specific TFS information
/// </summary>
private static void SetTFSDetails()
{
TFSServerUri = string.Empty;
TFSProject = string.Empty;
Url = new Uri(TFSServerUri);
}
/// <summary>
/// Replace empty strings with values from your Trello
/// See TrelloAPI documentaiotn for details
/// </summary>
private static void SetTrelloSecurity()
{
DevTeamTasksBoardId = string.Empty;
TrelloToken = string.Empty;
TrelloKey = string.Empty;
}
private static void CreateTask(string taskName, string taskDesc)
{
// Connect to the server and the store, and get the WorkItemType object
// for user stories from the team project where the user story will be created.
var collectionUri = new Uri(TFSServerUri);
var tpc = new TfsTeamProjectCollection(collectionUri);
var workItemStore = tpc.GetService<WorkItemStore>();
Project teamProject = workItemStore.Projects[TFSProject];
WorkItemType workItemType = teamProject.WorkItemTypes["Task"];
// Create the work item.
var userStory = new WorkItem(workItemType)
{
// The title is the only required field that does not have a default value.
// You must set it, or you cannot save the work item.
Title = taskName.Length > 255 ? taskName.Substring(0, 254) : taskName, // max length for name 255 char
Description = taskDesc
};
// Save the new user story.
userStory.Save();
}
}
}