yavsc/src/Yavsc/Controllers/Survey/BugController.cs

153 lines
4.4 KiB
C#

8 years ago
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc;
using Microsoft.Data.Entity;
using Yavsc.Models;
using Yavsc.Models.IT.Fixing;
7 years ago
using Yavsc.Models.IT.Evolution;
using Yavsc.Server.Helpers;
using System.Collections.Generic;
using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.Extensions.Localization;
6 years ago
using Microsoft.AspNet.Authorization;
8 years ago
namespace Yavsc.Controllers
{
public class BugController : Controller
{
ApplicationDbContext _context;
IStringLocalizer<BugController> _localizer;
6 years ago
IStringLocalizer<Yavsc.Models.IT.Fixing.Resources> _statusLocalizer;
8 years ago
6 years ago
public BugController(ApplicationDbContext context,
IStringLocalizer<BugController> localizer,
IStringLocalizer<Resources> statusLocalizer
)
8 years ago
{
_context = context;
_localizer = localizer;
6 years ago
_statusLocalizer = statusLocalizer;
8 years ago
}
// GET: Bug
public async Task<IActionResult> Index()
{
return View(await _context.Bug.ToListAsync());
}
// GET: Bug/Details/5
public async Task<IActionResult> Details(long? id)
{
if (id == null)
{
return HttpNotFound();
}
Bug bug = await _context.Bug.SingleAsync(m => m.Id == id);
if (bug == null)
{
return HttpNotFound();
}
return View(bug);
}
// GET: Bug/Create
public IActionResult Create()
{
ViewBag.Features = Features(_context);
ViewBag.Statuses = Statuses(default(BugStatus));
8 years ago
return View();
}
IEnumerable<SelectListItem> Statuses(BugStatus ?status) =>
6 years ago
_statusLocalizer.CreateSelectListItems(typeof(BugStatus), status);
IEnumerable<SelectListItem> Features(ApplicationDbContext context) =>
6 years ago
context.Feature.CreateSelectListItems<Feature>(f => f.Id.ToString(), f => $"{f.ShortName} ({f.Description})", null)
.AddNull(_localizer["noAttachedFID"]);
8 years ago
// POST: Bug/Create
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(Bug bug)
{
if (ModelState.IsValid)
{
_context.Bug.Add(bug);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
ViewBag.Features = Features(_context);
ViewBag.Statuses = Statuses(default(BugStatus));
8 years ago
return View(bug);
}
// GET: Bug/Edit/5
6 years ago
[Authorize("AdministratorOnly")]
8 years ago
public async Task<IActionResult> Edit(long? id)
{
if (id == null)
{
return HttpNotFound();
}
Bug bug = await _context.Bug.SingleAsync(m => m.Id == id);
if (bug == null)
{
return HttpNotFound();
}
ViewBag.Features = Features(_context);
ViewBag.Statuses = Statuses(bug.Status);
8 years ago
return View(bug);
}
// POST: Bug/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
6 years ago
[Authorize("AdministratorOnly")]
8 years ago
public async Task<IActionResult> Edit(Bug bug)
{
if (ModelState.IsValid)
{
_context.Update(bug);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(bug);
}
// GET: Bug/Delete/5
[ActionName("Delete")]
6 years ago
[Authorize("AdministratorOnly")]
8 years ago
public async Task<IActionResult> Delete(long? id)
{
if (id == null)
{
return HttpNotFound();
}
Bug bug = await _context.Bug.SingleAsync(m => m.Id == id);
if (bug == null)
{
return HttpNotFound();
}
return View(bug);
}
// POST: Bug/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
6 years ago
[Authorize("AdministratorOnly")]
8 years ago
public async Task<IActionResult> DeleteConfirmed(long id)
{
Bug bug = await _context.Bug.SingleAsync(m => m.Id == id);
_context.Bug.Remove(bug);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
}
}