コード例 #1
0
        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));
        }
コード例 #2
0
ファイル: InitiativeController.cs プロジェクト: poxet/Quilt4
        // 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));
        }
コード例 #3
0
        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 }));
        }
コード例 #4
0
        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));
        }