public ActionResult Thread(string id, string issueThread) { if (id == null) { throw new ArgumentNullException("id", "InitiativeId was not provided."); } var i = _initiativeBusiness.GetInitiatives().Where(x => x.Name == id).ToArray(); var initiativeId = Guid.Empty; if (i.Count() == 1)//Name is unique { initiativeId = _initiativeBusiness.GetInitiatives().Single(x => x.Name == id).Id; } else//go with id { initiativeId = _initiativeBusiness.GetInitiatives().Single(x => x.Id == Guid.Parse(id)).Id; } if (initiativeId == Guid.Empty) { throw new NullReferenceException("No initiative found for the specified uid."); } var initiative = _initiativeBusiness.GetInitiative(initiativeId); var applicationIds = initiative.ApplicationGroups.SelectMany(x => x.Applications).Select(x => x.Id).ToArray(); var versions = new List <IApplicationVersion>(); foreach (var applicationId in applicationIds) { versions.AddRange(_applicationVersionBusiness.GetApplicationVersions(applicationId)); } var issues = versions.SelectMany(x => x.IssueTypes).SelectMany(x => x.Issues).Where(x => x.IssueThreadGuid == Guid.Parse(issueThread)).ToArray(); var sessions = _sessionBusiness.GetSessionsForApplications(applicationIds).ToArray(); var users = sessions.Select(x => _userBusiness.GetUser(x.UserFingerprint)); var model = new IssueThreadModel() { InitiativeUniqueIdentifier = id, InitiativeName = initiative.Name, Issues = issues, Sessions = sessions, Users = users, }; return(View(model)); }
// GET: Admin/Initiative/Index public ActionResult Index() { var enumerable = _initiativeBusiness.GetInitiatives().ToArray(); var initiativeNames = enumerable.Select(x => x.Name); var initiatives = enumerable.Select(x => x.ToModel(initiativeNames)).ToList(); //TODO: This code is too slow, we need to do something about that //var issues = _initiativeBusiness.GetIssueStatistics(new DateTime(1900, 01, 01), DateTime.Now); //var dateTime = new DateTime(); //foreach (var initiative in initiatives) //{ // var sessions = _sessionBusiness.GetSessionsForApplications(initiative.ApplicationsIds).ToArray(); // var sessionIds = sessions.Select(x => x.Id); // var list = new List<IIssue>(); // foreach (var sessionId in sessionIds) // { // var sessionIssues = issues.Where(x => x.SessionId == sessionId); // list.AddRange(sessionIssues); // } // initiative.Sessions = sessions.Count().ToString(); // initiative.Issues = list.Count().ToString(); // var lastSessionDate = sessions.OrderBy(x => x.ServerStartTime).Select(y => y.ServerStartTime).FirstOrDefault(); // initiative.LastSession = lastSessionDate == dateTime ? "N/A" : lastSessionDate.ToString("yyyy-MM-dd hh:mm:ss"); //} return(View(initiatives)); }
public ActionResult EnableArchive(FormCollection collection) { var initiativeId = collection.GetValue("InitiativeId").AttemptedValue; var applicationId = collection.GetValue("ApplicationId").AttemptedValue; var applicationName = _initiativeBusiness.GetInitiatives().SelectMany(x => x.ApplicationGroups).SelectMany(x => x.Applications).Single(x => x.Id == Guid.Parse(applicationId)).Name; collection.Remove("InitiativeId"); collection.Remove("ApplicationId"); var versionIds = (from object key in collection.Keys select collection.GetValue(key.ToString()).AttemptedValue).ToList(); foreach (var versionId in versionIds) { _initiativeBusiness.ArchiveApplicationVersion(versionId); } return(RedirectToAction("Details", "Application", new { id = initiativeId, application = applicationName })); }
public ActionResult SearchResults(string searchText) { var model = new SearchModel() { IsConfirmed = _accountRepository.GetUser(_accountRepository.FindById(User.Identity.GetUserId()).Email).EMailConfirmed, SearchText = searchText, }; if (!model.IsConfirmed) { return(View("SearchResults", model)); } var searchResultRows = new List <SearchResultRowModel>(); var initiativeHeads = _initiativeBusiness.GetInitiativesByDeveloper(_accountRepository.FindById(User.Identity.GetUserId()).Email); var initiatives = _initiativeBusiness.GetInitiatives().ToArray(); var userInitiatives = initiativeHeads.Select(initiativeHead => initiatives.Single(x => x.Id == initiativeHead.Id)).ToArray(); foreach (var initiative in userInitiatives) { var applications = initiative.ApplicationGroups.SelectMany(x => x.Applications).ToArray(); var initiativeUniqueIdentifier = initiative.GetUniqueIdentifier(initiatives.Select(x => x.Name)); var versions = new List <IApplicationVersion>(); foreach (var application in applications) { versions.AddRange(_applicationVersionBusiness.GetApplicationVersions(application.Id)); } foreach (var version in versions) { foreach (var issueType in version.IssueTypes) { if (issueType.Ticket.ToString().Equals(searchText)) { foreach (var issue in issueType.Issues) { searchResultRows.Add(new SearchResultRowModel() { InitiativeName = initiative.Name, InitiativeUniqueIdentifier = initiativeUniqueIdentifier, ApplicationName = applications.Single(x => x.Id == version.ApplicationId).Name, Version = version.Version, VersionUniqueIdentifier = version.GetUniqueIdentifier(versions.Select(x => x.Version)), IssueType = issueType, Issue = issue, Environment = GetSession(issue.SessionId).Environment, }); } } else { foreach (var issue in issueType.Issues) { if (issue.Ticket.ToString().Equals(searchText)) { searchResultRows.Add(new SearchResultRowModel() { InitiativeName = initiative.Name, InitiativeUniqueIdentifier = initiativeUniqueIdentifier, ApplicationName = applications.Single(x => x.Id == version.ApplicationId).Name, Version = version.Version, VersionUniqueIdentifier = version.GetUniqueIdentifier(versions.Select(x => x.Version)), IssueType = issueType, Issue = issue, Environment = GetSession(issue.SessionId).Environment, }); } else { if (!string.IsNullOrEmpty(issueType.ExceptionTypeName)) { if (issueType.ExceptionTypeName.Contains(searchText)) { searchResultRows.Add(new SearchResultRowModel() { InitiativeName = initiative.Name, InitiativeUniqueIdentifier = initiativeUniqueIdentifier, ApplicationName = applications.Single(x => x.Id == version.ApplicationId).Name, Version = version.Version, VersionUniqueIdentifier = version.GetUniqueIdentifier(versions.Select(x => x.Version)), IssueType = issueType, Issue = issue, Environment = GetSession(issue.SessionId).Environment, }); } } } } } } } } var allEnvironments = _initiativeBusiness.GetEnvironmentColors(User.Identity.GetUserId(), _accountRepository.FindById(User.Identity.GetUserId()).UserName); var environmentsInResult = searchResultRows.Select(x => x.Environment).Distinct(); var environments = new List <EnvironmentViewModel>(); foreach (var env in environmentsInResult) { if (allEnvironments.ContainsKey(env)) { string color; allEnvironments.TryGetValue(env, out color); environments.Add(new EnvironmentViewModel() { Name = env, Color = color, }); } } model.SearchResultRows = searchResultRows; model.Environments = environments; return(View("SearchResults", model)); }