public static void UpdateDictionary(this Dictionary <string, List <TMS_TP> > dict, string key, TMS_TP newValue, IOutputable ouotput = null) { List <TMS_TP> existingList; if (!dict.TryGetValue(key, out existingList)) { existingList = new List <TMS_TP>(); dict.Add(key, existingList); } existingList.Add(newValue); if (Consts.VERBOSE && ouotput != null) { ouotput.WriteLine("{0}: {1}", key, newValue); } }
//reason + list of pairs <TMS task, RM TMS task> public void CreateSyncOutputList() { outputList = new Dictionary <string, List <TMS_TP> >(); foreach (TMSItem itemFromRM in rmTMSDict.GetItemList()) { bool isRedmineAssignedToMyTeam = TeamService.IsPersonFromMyTeam(itemFromRM.AssignedTo); bool isTMSAssignedtoMyTeam = false; TMSItem dbTMSItem = dbTMSDict.Get(itemFromRM.TMS); if (dbTMSItem != null) { isTMSAssignedtoMyTeam = TeamService.IsPersonFromMyTeam(dbTMSItem.AssignedTo); if (isRedmineAssignedToMyTeam || isTMSAssignedtoMyTeam) { //ommit closed tasks if (dbTMSItem.Status.StartsWith("C") || dbTMSItem.Status.StartsWith("c")) { if (itemFromRM.Status == Consts.RM_CLOSED) { //ignore closed in TMS and in RM TMS_TP tp = new TMS_TP(dbTMSItem, itemFromRM); outputList.UpdateDictionary(Consts.RFC_BOTH_CLOSED, tp); } else { TMS_TP tp = new TMS_TP(dbTMSItem, itemFromRM); outputList.UpdateDictionary(Consts.RFC_DIFFERENT_STATUSES, tp); } } else { /*TODO*/ //check if the task is assigned not to my team if (!TeamService.CheckIfSamePersonByTMSLoginAndFullName(dbTMSItem.AssignedTo, itemFromRM.AssignedTo)) { TMS_TP tp = new TMS_TP(dbTMSItem, itemFromRM); outputList.UpdateDictionary(Consts.RFC_ASSIGNED_TO_DIFFERENT_PERSON_IN_RM_AND_TMS, tp); } else { //Console.WriteLine("{0}\nRM: {1}", dbTMSItem, itemFromRM); TMS_TP tp = new TMS_TP(dbTMSItem, itemFromRM); outputList.UpdateDictionary(Consts.RFC_BOTH_OK, tp); } } } } else { if (isRedmineAssignedToMyTeam) { TMS_TP tp = new TMS_TP(null, itemFromRM); //if the problem is not related to client TMS (so its subject does not start with "client") if (itemFromRM.TMS != null && !itemFromRM.TMS.StartsWith(client)) { outputList.UpdateDictionary(Consts.RFC_NOT_CONNECTED_WITH_TMS, tp); //Console.WriteLine("Element not connected with !: {0}", itemFromRM); } else { outputList.UpdateDictionary(Consts.RFC_NOT_EXISTS_IN_TMS, tp); } } } } }