示例#1
0
        protected Element CreateElement(IssueItemViewModel x)
        {
            var assigned      = x.Issue.Assignee != null ? x.Issue.Assignee.Login : "******";
            var kind          = x.IsPullRequest ? "Pull" : "Issue";
            var commentString = x.Issue.Comments == 1 ? "1 comment" : x.Issue.Comments + " comments";
            var el            = new IssueElement(x.Issue.Number.ToString(CultureInfo.InvariantCulture), x.Issue.Title, assigned, x.Issue.State, commentString, kind, x.Issue.UpdatedAt);

            el.Tapped += () => ViewModel.GoToIssueCommand.ExecuteIfCan(x);
            return(el);
        }
示例#2
0
        public ActionResult Index(string q)
        {
            var viewModel = new SearchViewModel
            {
                Query = q
            };

            var applications = Core.GetApplications();

            if (applications.PagingStatus.TotalItems > 0)
            {
                int searchedIssueId;
                if (int.TryParse(q, out searchedIssueId))
                {
                    var issue = _session.Raven.Load <Issue>(searchedIssueId);
                    if (issue != null)
                    {
                        return(Redirect(Url.Issue(searchedIssueId.ToString())));
                    }
                }

                var issues = _getApplicationIssuesQuery.Invoke(new GetApplicationIssuesRequest
                {
                    Paging = new PageRequestWithSort(1, 10)
                    {
                        Sort = nameof(Errordite.Core.Domain.Error.Error.TimestampUtc), SortDescending = true
                    },
                    OrganisationId = Core.AppContext.CurrentUser.OrganisationId,
                    Query          = q,
                    ApplicationId  = CurrentApplication.IfPoss(a => a.Id),
                }).Issues;

                var errors = _getApplicationErrorsQuery.Invoke(new GetApplicationErrorsRequest
                {
                    Paging = new PageRequestWithSort(1, 10)
                    {
                        Sort = nameof(Errordite.Core.Domain.Error.Error.TimestampUtc), SortDescending = true
                    },
                    OrganisationId = Core.AppContext.CurrentUser.OrganisationId,
                    Query          = q,
                    ApplicationId  = CurrentApplication.IfPoss(a => a.Id),
                }).Errors;

                viewModel.IssueTotal = issues.PagingStatus.TotalItems;
                viewModel.ErrorTotal = errors.PagingStatus.TotalItems;
                viewModel.Issues     = IssueItemViewModel.ConvertSimple(issues.Items, Core.GetUsers().Items, Core.AppContext.CurrentUser.ActiveOrganisation.TimezoneId, true);
                viewModel.Errors     = errors.Items.Select(e => new ErrorInstanceViewModel
                {
                    Error           = e,
                    ApplicationName = GetApplicationName(applications.Items, e.ApplicationId)
                }).ToList();
            }

            return(View(viewModel));
        }
示例#3
0
        public ActionResult Index(IssueCriteriaPostModel postModel)
        {
            var viewModel    = new IssueCriteriaViewModel();
            var applications = Core.GetApplications();

            if (applications.PagingStatus.TotalItems > 0)
            {
                var pagingRequest = GetSinglePagingRequest();

                if (postModel.Status == null || postModel.Status.Length == 0)
                {
                    postModel.Status = Enum.GetNames(typeof(IssueStatus)).ToArray();
                }
                else if (postModel.Status.Length == 1 && postModel.Status[0].Contains(","))
                {
                    //this is a fix up for when the url gets changed to contain the statuses in a single query parameter
                    postModel.Status = postModel.Status[0].Split(',');
                }

                var request = new GetApplicationIssuesRequest
                {
                    ApplicationId  = CurrentApplication.IfPoss(a => a.Id),
                    Paging         = pagingRequest,
                    AssignedTo     = postModel.AssignedTo,
                    Status         = postModel.Status,
                    Query          = postModel.Name,
                    OrganisationId = Core.AppContext.CurrentUser.OrganisationId,
                };

                var issues = _getApplicationIssuesQuery.Invoke(request).Issues;
                var users  = Core.GetUsers();

                viewModel.AssignedTo     = postModel.AssignedTo;
                viewModel.Status         = postModel.Status;
                viewModel.Name           = postModel.Name;
                viewModel.Paging         = _pagingViewModelGenerator.Generate(PagingConstants.DefaultPagingId, issues.PagingStatus, pagingRequest);
                viewModel.Users          = users.Items.ToSelectList(u => u.FriendlyId, u => u.FullName, u => u.FriendlyId == postModel.AssignedTo);
                viewModel.Statuses       = Enum.GetNames(typeof(IssueStatus)).ToSelectList(s => s, s => s, s => s.IsIn(postModel.Status));
                viewModel.Issues         = IssueItemViewModel.Convert(issues.Items, applications.Items, users.Items);
                viewModel.NoApplications = applications.PagingStatus.TotalItems == 0;
            }
            else
            {
                ErrorNotification(Resources.Application.No_Applications);
                return(Redirect(Url.AddApplication()));
            }

            return(View(viewModel));
        }
        public ActionResult Index()
        {
            var curentApplication = CurrentApplication;
            var applicationId     = curentApplication == null ? null : curentApplication.Id;
            var viewModel         = new DashboardViewModel();
            var applications      = Core.GetApplications();
            var preferences       = CookieManager.Get(WebConstants.CookieSettings.DashboardCookieKey);
            var pref = preferences.IsNullOrEmpty() || !preferences.Contains("|") ? null : preferences.Split('|');

            viewModel.ShowMe   = pref == null ? "1" : pref[0];
            viewModel.PageSize = pref == null ? 10 : int.Parse(pref[1]);

            if (applications.PagingStatus.TotalItems > 0)
            {
                viewModel.HasApplications = true;

                if (applications.Items.Count == 1)
                {
                    viewModel.SingleApplicationId    = applications.Items[0].Id;
                    viewModel.SingleApplicationToken = applications.Items[0].Token;
                }

                var showMe = DashboardViewModel.Sorting.FirstOrDefault(s => s.Id == viewModel.ShowMe) ?? new DashboardSort("1", "", true, "LastErrorUtc");

                if (showMe.Id == "5")
                {
                    var errors = _getApplicationErrorsQuery.Invoke(new GetApplicationErrorsRequest
                    {
                        Paging         = new PageRequestWithSort(1, viewModel.PageSize, "TimestampUtc", true),
                        OrganisationId = Core.AppContext.CurrentUser.OrganisationId,
                        ApplicationId  = applicationId
                    }).Errors;

                    viewModel.Errors = errors.Items.Select(e => new ErrorInstanceViewModel
                    {
                        Error           = e,
                        ApplicationName = GetApplicationName(applications.Items, e.ApplicationId),
                    }).ToList();

                    viewModel.ShowIntro = errors.PagingStatus.TotalItems <= 5 && applications.Items.Count == 1;
                }
                else
                {
                    var issues = _getApplicationIssuesQuery.Invoke(new GetApplicationIssuesRequest
                    {
                        Paging         = new PageRequestWithSort(1, viewModel.PageSize, showMe.SortField, showMe.SortDescending),
                        OrganisationId = Core.AppContext.CurrentUser.OrganisationId,
                        ApplicationId  = applicationId
                    }).Issues;

                    viewModel.TestIssueId = issues.Items.FirstOrDefault(i => i.TestIssue).IfPoss(i => i.Id);
                    viewModel.Issues      = IssueItemViewModel.ConvertSimple(issues.Items, Core.GetUsers().Items, Core.AppContext.CurrentUser.ActiveOrganisation.TimezoneId, showMe.Id != "2");
                    viewModel.ShowIntro   = issues.PagingStatus.TotalItems <= 3 && applications.Items.Count == 1;
                }

                var selectedApplication = applicationId.IsNotNullOrEmpty()
                    ? applications.Items.FirstOrDefault(a => a.FriendlyId == applicationId.GetFriendlyId())
                    : null;

                viewModel.SelectedApplicationId   = selectedApplication == null ? null : selectedApplication.FriendlyId;
                viewModel.SelectedApplicationName = selectedApplication == null ? null : selectedApplication.Name;
                viewModel.Applications            = applications.Items;
                viewModel.UrlGetter     = GetDashboardUrl;
                viewModel.ShowMeOptions = DashboardViewModel.Sorting.ToSelectList(s => s.Id, s => s.DisplayName, s => s.Id == viewModel.ShowMe);
                viewModel.PageSizes     = new List <SelectListItem>
                {
                    new SelectListItem {
                        Text = "10", Value = "10", Selected = viewModel.PageSize == 10
                    },
                    new SelectListItem {
                        Text = "20", Value = "20", Selected = viewModel.PageSize == 20
                    },
                    new SelectListItem {
                        Text = "30", Value = "30", Selected = viewModel.PageSize == 30
                    }
                };
            }
            else
            {
                ConfirmationNotification("You do not currently have any applications, please create an application to begin using Errordite.");
                return(Redirect(Url.AddApplication(false)));
            }

            return(View(viewModel));
        }
        public ActionResult Update(string mode, string showMe, int pageSize)
        {
            object feed          = null;
            object errors        = null;
            object stats         = null;
            var    liveErrorFeed = false;

            var currentApplication = CurrentApplication;
            var applicationId      = currentApplication == null ? null : currentApplication.Id;

            if (mode.IsIn("feed", "undefined"))
            {
                CookieManager.Set(WebConstants.CookieSettings.DashboardCookieKey, "{0}|{1}".FormatWith(showMe, pageSize), null);

                var sort = DashboardViewModel.Sorting.First(s => s.Id == showMe);

                if (sort.Id == "5")
                {
                    liveErrorFeed = true;
                    var applications = Core.GetApplications();
                    var items        = _getApplicationErrorsQuery.Invoke(new GetApplicationErrorsRequest
                    {
                        Paging         = new PageRequestWithSort(1, pageSize, "TimestampUtc", true),
                        OrganisationId = Core.AppContext.CurrentUser.OrganisationId,
                        ApplicationId  = applicationId
                    }).Errors;

                    feed = items == null ? new string[] { } : items.Items.Select(e => new ErrorInstanceViewModel
                    {
                        Error           = e,
                        ApplicationName = GetApplicationName(applications.Items, e.ApplicationId),
                    }).Select(e => RenderPartial("Dashboard/Error", e));
                }
                else
                {
                    var items = _getApplicationIssuesQuery.Invoke(new GetApplicationIssuesRequest
                    {
                        Paging         = new PageRequestWithSort(1, pageSize, sort.SortField, sort.SortDescending),
                        OrganisationId = Core.AppContext.CurrentUser.OrganisationId,
                        ApplicationId  = applicationId
                    }).Issues.Items;

                    feed = items == null || items.Count == 0 ?
                           new string[] { } :
                    IssueItemViewModel.ConvertSimple(items, Core.GetUsers().Items, Core.AppContext.CurrentUser.ActiveOrganisation.TimezoneId, sort.Id != "2")
                    .Select(i => RenderPartial("Dashboard/Issue", i));
                }
            }

            if (mode.IsIn("graphs", "undefined"))
            {
                stats = _getOrganisationStatisticsQuery.Invoke(new GetOrganisationStatisticsRequest
                {
                    ApplicationId = CurrentApplication == null ? null : CurrentApplication.Id
                }).Statistics ?? new Statistics();

                errors = _getDashboardReportQuery.Invoke(new GetDashboardReportRequest
                {
                    ApplicationId = currentApplication == null ? null : currentApplication.Id
                }).Data;
            }

            return(new JsonSuccessResult(new
            {
                feed,
                stats,
                errors,
                liveErrorFeed
            }, allowGet: true));
        }