public IndexIssuePartialViewModel(User currentUser, Models.Issue issue)
            : base(issue)
        {
            CurrentUser = currentUser;

            Comments = issue.NumberOfComments;

            if (issue.DateOfUpdate.Date == DateTime.Now.ToUniversalTime().Date)
                Time = issue.DateOfUpdate.ToCentralEuropeanTime().ToString("HH:mm");
            else
                Time = issue.DateOfUpdate.ToCentralEuropeanTime().ToString("d.M.");
        }
Beispiel #2
0
        public IndexViewModel(Db db, User currentUser, Models.Issue issue, ViewDataDictionary viewData)
            : base(issue)
        {
            CurrentUser = currentUser;

            DateOfCreation = issue.DateOfCreation.ToCentralEuropeanTime();
            ParentIssueId = issue.ParentIssueId;
            StackTrace = issue.StackTrace ?? "";
            ServerVariables = issue.ServerVariables ?? "";
            Comments = (from x in db.Comments
                        where x.IssueId == issue.Id
                        orderby x.DateOfCreation
                        select x).ToList().Select(x => new DetailsCommentPartialViewModel(db, x, viewData));

            SimilarIssuesCount = db.Issues.Count(x => x.ParentIssueId == issue.Id || (issue.ParentIssueId.HasValue && x.ParentIssueId == issue.ParentIssueId));

            var stati = new List<SelectListItem>();
            stati.AddRange(
                from x in Utils.GetAllStati(db, viewData)
                select new SelectListItem
                {
                    Text = x.Name,
                    Value = x.Name,
                    Selected = Status.Is(x.Name)
                }
                );
            AvailableStati = stati;

            var users = new List<SelectListItem>
            {
                new SelectListItem
                {
                    Text = "< none >",
                    Value = "-",
                    Selected = AssignedTo.IsNoE()
                }
            };
            users.AddRange(
                from x in Utils.GetAllUsers(db, viewData)
                select new SelectListItem
                {
                    Text = x.Name,
                    Value = x.Name,
                    Selected = AssignedTo.Is(x.Name)
                }
                );
            AvailableUsers = users;

            AvailableEmailAddresses = Utils.GetAllUsers(db, viewData).Select(x => x.Email);

            var versions = new List<string>();
            if (issue.Version.HasValue())
                versions.Add(issue.Version);
            versions.AddRange(db.Issues.Where(x => x.ParentIssueId == issue.Id).Where(x => x.Version != null && x.Version != "").Select(x => x.Version).Distinct());
            versions = versions.Distinct().ToList();

            if (versions.Any())
                if (versions.Count == 1)
                    MinVersion = versions.First();
                else
                {
                    var sortedVersions = versions.Select(x => new Version(x)).OrderBy(x => x).ToList();
                    MinVersion = sortedVersions.First().ToString();
                    MaxVersion = sortedVersions.Last().ToString();
                }

            if (issue.RemoteHost.HasValue())
            {
                try
                {
                    RemoteHost = Dns.GetHostEntry(issue.RemoteHost).HostName;
                    if (RemoteHost != issue.RemoteHost)
                        RemoteHost += " - " + issue.RemoteHost;
                }
                catch
                {
                    RemoteHost = issue.RemoteHost;
                }
            }
        }