public List <WorkItemDto> GetIncompleteItemsByUserIdList(int serverId, int employeeId, List <int> employeeIdList) { TeamServer server = null; List <WorkItem> workItems = null; List <WorkItemDto> workItemsDtoList = new List <WorkItemDto>(); UserServerInfo userServerInfo = null; try { using (TeamServerRepository teamServerRepository = new TeamServerRepository()) { server = teamServerRepository.GetById(serverId); if (server == null) { throw new Exception(string.Format("Invalid Server Id : {0}", serverId)); } } UserInfo userInfo = null; using (UserInfoRepository userInfoRepository = new UserInfoRepository()) { userInfo = userInfoRepository.Find(x => x.EmployeeId == employeeId); if (userInfo == null) { throw new Exception(string.Format("User with Employee ID {0} Not Found", employeeId)); } } List <string> serverUserIdList = new List <string>(); using (UserServerInfoRepository userServerInfoRepository = new UserServerInfoRepository()) { userServerInfo = userServerInfoRepository.FindLocal(x => x.EmployeeId == employeeId && x.TfsId == serverId); if (userServerInfo == null) { throw new Exception(string.Format("User with employee id : {0} is not registered with server id : {1}", employeeId, serverId)); } string test = userServerInfoRepository.Filter(x => employeeIdList.Contains(x.EmployeeId)) .Select(x => x.UserId).Aggregate((current, next) => "'" + current + "' OR "); string credentialHash = userServerInfo.CredentialHash; string url = server.Url; string query = "Select * From WorkItems " + "Where [System.AssignedTo] = @me " + "AND ([System.State] = 'To Do' OR [System.State] = 'In Progress')" + "Order By [State] Asc, [Changed Date] Desc"; workItems = _teamServerManagementService.GetWorkItemByQuery(query, url, credentialHash); } foreach (WorkItem workItem in workItems) { workItemsDtoList.Add(workItem.ToDto()); } return(workItemsDtoList); } catch (Exception ex) { logger.Error(ex); throw; } }
/////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// public ServerInfoWrap(ServerInfo settings, UserServerInfo userSettings) { Debug.Assert(settings != null); Debug.Assert(userSettings != null); _settings = settings; _userSettings = userSettings; }
public int RegisterServer(int serverId, string userId, string serverUserId, string serverPassword, string serverDomain) { TeamServer teamServerEntity; try { using (TeamServerRepository teamServerRepository = new TeamServerRepository()) { teamServerEntity = teamServerRepository.GetById(serverId); if (teamServerEntity == null) { throw new Exception("Invalid server id"); } } using (UserInfoRepository userInfoRepository = new UserInfoRepository()) { UserInfo userInfoEntity = userInfoRepository.Find(x => x.UserId == userId); if (userInfoEntity == null) { throw new Exception("Invalid user id"); } } using (UserServerInfoRepository userServerInfoRepository = new UserServerInfoRepository()) { UserServerInfo userServerInfoEntity = userServerInfoRepository.Find( x => x.UserId.ToUpper() == userId.ToUpper() && x.TfsId == serverId); if (userServerInfoEntity != null) { throw new Exception(string.Format("Server {0} is already registered to the user {1} .", serverId, userId)); } // Dependency Injection of Team Service. NetworkCredential credential = new NetworkCredential(serverUserId, serverPassword, serverDomain); string hash = JsonConvert.SerializeObject(credential).Encrypt(); _authenticationService.Authenticate(serverId, hash); userServerInfoEntity = new UserServerInfo() { UserId = userId, TfsId = serverId, TfsUserId = serverUserId, CredentialHash = hash }; return(userServerInfoRepository.Insert(userServerInfoEntity)); } } catch (Exception ex) { _logger.Error(ex); throw; } }
public WorkItemDto GetWorkItemById(int taskId, int serverId, string userId) { TeamServer server = null; UserServerInfo userServerInfo = null; try { using (TeamServerRepository teamServerRepository = new TeamServerRepository()) { server = teamServerRepository.GetById(serverId); if (server == null) { throw new Exception(string.Format("Invalid Server Id : {0}", serverId)); } } UserInfo userInfo = null; using (UserInfoRepository userInfoRepository = new UserInfoRepository()) { userInfo = userInfoRepository.Find(x => x.UserId != null && x.UserId.ToUpper() == userId.ToUpper()); if (userInfo == null) { throw new Exception(string.Format("User with ID {0} Not Found", userId)); } } using (UserServerInfoRepository userServerInfoRepository = new UserServerInfoRepository()) { userServerInfo = userServerInfoRepository.FindLocal( x => x.UserId != null && x.UserId.ToUpper() == userId.ToUpper() && x.TfsId == serverId); if (userServerInfo == null) { throw new Exception(string.Format("User : {0} is not registered with server id : {1}", userId, serverId)); } string credentialHash = userServerInfo.CredentialHash; string url = server.Url; WorkItem workItem = _teamServerManagementService.GetWorkItemById(taskId, url, credentialHash); if (workItem != null) { return(workItem.ToEntity(serverId).ToDto(workItem.Id)); } } return(null); } catch (Exception ex) { _logger.Error(ex); throw; } }
/////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// private static UserServerInfo _FindServerInfo(string name, List <UserServerInfo> coll) { Debug.Assert(name != null); Debug.Assert(coll != null); UserServerInfo resInfo = null; foreach (UserServerInfo info in coll) { if (!String.IsNullOrEmpty(info.Name) && info.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase)) { resInfo = info; break; } } return(resInfo); }
public WorkItemDto FindWorkItemFromServer(int taskid, int serverId, int weekId, string userId) { WorkItemDto workItemDto = null; TeamServer server = null; using (TeamServerRepository teamServerRepository = new TeamServerRepository()) { server = teamServerRepository.FindLocal(x => x.Id == serverId); if (server == null) { _logger.Error("Server not found with id " + serverId); throw new Exception("Server not found."); } } string serverUrl = server.Url; UserServerInfo userServer = null; using (UserServerInfoRepository userServerInfoRepository = new UserServerInfoRepository()) { userServer = userServerInfoRepository.Find(x => x.TfsId == serverId && x.UserId == userId); if (userServer == null) { throw new Exception(string.Format("User {0} not registered to server {1}", userId, serverId)); } } WorkItem workItem = _teamServerManagementService.GetWorkItemById(taskid, serverUrl, userServer.CredentialHash); if (workItem != null) { workItemDto = workItem.ToEntity(serverId).ToDto(-1); workItemDto.WeekId = weekId; workItemDto.ServerId = serverId; workItemDto.TaskId = taskid; } return(workItemDto); }
/////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// public ServersInfoWrap(ServersInfo settings, UserServersInfo userSettings) { Debug.Assert(settings != null); Debug.Assert(userSettings != null); if (userSettings.Servers == null) { userSettings.Servers = new List <UserServerInfo>(); } List <UserServerInfo> userServers = userSettings.Servers; foreach (ServerInfo info in settings.Servers) { if (!String.IsNullOrEmpty(info.Name)) { UserServerInfo userInfo = _FindServerInfo(info.Name, userServers); if (userInfo == null) { userInfo = new UserServerInfo(); userInfo.Name = info.Name; userServers.Add(userInfo); } ServerInfoWrap wrap = new ServerInfoWrap(info, userInfo); _servers.Add(wrap); } else { Logger.Warning("Server configuration error: invalid name."); } } }
public List <WorkItemDto> GetUserIncompleteSyncedTasks(int serverId, string userId) { TeamServer server = null; List <WorkItemDto> workItemsDtoList = new List <WorkItemDto>(); UserServerInfo userServerInfo = null; try { using (TeamServerRepository teamServerRepository = new TeamServerRepository()) { server = teamServerRepository.GetById(serverId); if (server == null) { throw new Exception(string.Format("Invalid Server Id : {0}", serverId)); } } UserInfo userInfo = null; using (UserInfoRepository userInfoRepository = new UserInfoRepository()) { userInfo = userInfoRepository.Find(x => x.UserId == userId); if (userInfo == null) { throw new Exception(string.Format("User with ID {0} Not Found", userId)); } } using (UserServerInfoRepository userServerInfoRepository = new UserServerInfoRepository()) { userServerInfo = userServerInfoRepository.FindLocal( x => x.UserId == userId && x.TfsId == serverId ); if (userServerInfo == null) { throw new Exception(string.Format("User with id : {0} is not registered with server id : {1}", userId, serverId)); } } string credentialHash = userServerInfo.CredentialHash; string url = server.Url; WeekInfo currentWeek = null; using (WeekInfoRepository weekInfoRepository = new WeekInfoRepository()) { currentWeek = weekInfoRepository.GetCurrentWeekInfo(); if (currentWeek == null) { throw new Exception("Current Week is not registered."); } } List <WorkItem> tfsWorkItems = _teamServerManagementService.GetUserIncompleteItems(url, credentialHash); using (WorkItemRepository workItemRepository = new WorkItemRepository()) { foreach (WorkItem item in tfsWorkItems) { // Add new items. UserWorkItem existingWorkItem = workItemRepository.Find(x => x.UserId == userId && x.WeekId == currentWeek.Id && x.TaskId == item.Id); if (existingWorkItem == null) { UserWorkItem newWorkItem = item.ToEntity(userServerInfo.TfsId); newWorkItem.UserId = userId; newWorkItem.AssignedTo = userInfo.FirstName + " " + userInfo.LastName; newWorkItem.WeekId = currentWeek.Id; int newWorkItemId = workItemRepository.Insert(newWorkItem); workItemsDtoList.Add(newWorkItem.ToDto(newWorkItemId)); } else { existingWorkItem.Title = item.Title; existingWorkItem.Status = item.State; existingWorkItem.Sprint = item.IterationPath; existingWorkItem.Project = item.AreaPath; existingWorkItem.Description = item.Description; workItemRepository.Update(existingWorkItem); workItemsDtoList.Add(existingWorkItem.ToDto(existingWorkItem.Id)); } } } return(workItemsDtoList); } catch (Exception ex) { _logger.Error(ex); throw; } }