Bugtracker work

This commit is contained in:
Michael 2017-04-14 14:22:51 -04:00
parent c5506fc9f9
commit 52245ffb86
7 changed files with 193 additions and 0 deletions

View file

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Project_Unite.Models;
namespace Project_Unite.Controllers
{
public class BugsController : Controller
{
// GET: Bugs
public ActionResult Index()
{
var db = new ApplicationDbContext();
return View(db.BugTags);
}
}
}

View file

@ -0,0 +1,124 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Project_Unite.Models
{
public class Bug
{
public string Id { get; set; }
/// <summary>
/// Just a funny name for "what category is this bug in?"
/// </summary>
public string Species { get; set; }
public int Urgency { get; set; }
public string Name { get; set; }
public ForumPost[] Comments
{
get
{
return new ApplicationDbContext().ForumPosts.Where(x => x.Parent == this.Id).ToArray();
}
}
public DateTime ReportedAt { get; set; }
public string ReleaseId { get; set; }
public string Reporter { get; set; }
public bool Open { get; set; }
public DateTime ClosedAt { get; set; }
public string ClosedBy { get; set; }
}
public class BugTag
{
public string Id { get; set; }
public string Name { get; set; }
public string ColorHex { get; set; }
public string Description { get; set; }
public Bug[] Open
{
get
{
return new ApplicationDbContext().Bugs.Where(x => x.Species == this.Id && x.Open == true).ToArray();
}
}
}
public class PostBugViewModel
{
[Required(AllowEmptyStrings = false, ErrorMessage ="You must specify a name for your bug.")]
[MaxLength(75, ErrorMessage = "Your bug's name must have at most 75 characters.")]
public string Name { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage ="Please describe your bug.")]
[AllowHtml]
[MinLength(20, ErrorMessage = "Your bug's description must have at least 20 characters in it.")]
public string Description { get; set; }
public string SpeciesId { get; set; }
public string VersionId { get; set; }
public string Urgency { get; set; }
public List<SelectListItem> Urgencies
{
get
{
var items = new List<SelectListItem>();
string[] list = new[] { "Minor", "Moderate", "Major", "Critical" };
for (int i = 0; i < list.Length; i++)
{
items.Add(new SelectListItem
{
Text = list[i],
Value = i.ToString()
});
}
return items;
}
}
public List<SelectListItem> Species
{
get
{
var db = new ApplicationDbContext();
var items = new List<SelectListItem>();
foreach (var itm in db.BugTags.OrderBy(x => x.Name))
{
items.Add(new SelectListItem
{
Text = itm.Name,
Value = itm.Id
});
}
return items;
}
}
public List<SelectListItem> Versions
{
get
{
var db = new ApplicationDbContext();
var items = new List<SelectListItem>();
foreach(var itm in db.Downloads.OrderByDescending(x => x.PostDate))
{
items.Add(new SelectListItem
{
Text = itm.Name,
Value = itm.Id
});
}
return items;
}
}
}
}

View file

@ -219,6 +219,8 @@ public static ApplicationDbContext Create()
return new ApplicationDbContext();
}
public DbSet<Bug> Bugs { get; set; }
public DbSet<BugTag> BugTags { get; set; }
public DbSet<BlogPost> BlogPosts { get; set; }
public DbSet<ReadPost> ReadPosts { get; set; }
public DbSet<Download> Downloads { get; set; }

View file

@ -244,6 +244,7 @@
<Compile Include="Controllers\AdminController.cs" />
<Compile Include="Controllers\APIController.cs" />
<Compile Include="Controllers\BlogController.cs" />
<Compile Include="Controllers\BugsController.cs" />
<Compile Include="Controllers\DeveloperController.cs" />
<Compile Include="Controllers\DownloadController.cs" />
<Compile Include="Controllers\ForumController.cs" />
@ -426,6 +427,7 @@
<Compile Include="Models\AddUserToRoleViewModel.cs" />
<Compile Include="Models\AdminViewModels.cs" />
<Compile Include="Models\BlogModels.cs" />
<Compile Include="Models\BugModels.cs" />
<Compile Include="Models\Download.cs" />
<Compile Include="Models\ForumCategory.cs" />
<Compile Include="Models\ForumViewModels.cs" />
@ -559,6 +561,9 @@
<Content Include="Views\Blog\ViewBlog.cshtml" />
<Content Include="Views\Blog\Index.cshtml" />
<Content Include="Views\Blog\PostBlog.cshtml" />
<Content Include="Views\Bugs\Index.cshtml" />
<Content Include="Views\Bugs\_BugBar.cshtml" />
<Content Include="Views\Bugs\_Sidebar.cshtml" />
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />

View file

@ -0,0 +1,27 @@
@model IEnumerable<Project_Unite.Models.BugTag>
@{
ViewBag.Title = "Bugtracker";
}
<h2>Bugtracker</h2>
@{
Html.RenderPartial("~/Views/Bugs/_BugBar.cshtml");
}
<div class="row">
<div class="col-xs-3">
@{
Html.RenderPartial("~/Views/Bugs/_Sidebar.cshtml", Model);
}
</div>
<div class="col-xs-9">
<h3>Welcome to the ShiftOS bug tracker.</h3>
<p>ShiftOS is a game about an evolving operating system, and an evolving world. However, ShiftOS itself is evolving with new features everyday.</p>
<p>We at ShiftOS strive to create a stable experience and most bugs are taken care of before they ever leave the development environment. However, sometimes we make mistakes. I mean, we're all human, right? Anyways, if you find a mistake we've made in ShiftOS, this is the best spot to place it.</p>
</div>
</div>

View file

@ -0,0 +1,6 @@
@if (Request.IsAuthenticated)
{
<ul class="nav nav-pills">
<li><a href="@Url.Action("PostBug")"><span class="glyphicon glyphicon-plus"></span> Post a bug</a></li>
</ul>
}

View file

@ -0,0 +1,10 @@
@model IEnumerable<Project_Unite.Models.BugTag>
<h3>Categories</h3>
<ul>
@foreach (var cat in Model)
{
<li><a href="@Url.Action("ViewCategory", new { id = cat.Id })">@cat.Name (@cat.Open.Count())</a></li>
}
</ul>