Custom logging
[wsti_pai.git] / Projects / Controllers / ProjectTasksController.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Data;
4 using System.Data.Entity;
5 using System.Linq;
6 using System.Net;
7 using System.Web;
8 using System.Web.Mvc;
9 using Projects.Models;
10
11 namespace Projects.Controllers
12 {
13     public class ProjectTasksController : Controller
14     {
15         private ProjectsDBEntities db = new ProjectsDBEntities();
16
17         // GET: ProjectTasks
18         public ActionResult Index()
19         {
20             var projectTasks = db.ProjectTasks.Include(p => p.Project).Include(p => p.TaskStatus).Include(p => p.User);
21             return View(projectTasks.ToList());
22         }
23
24         // GET: ProjectTasks/Details/5
25         public ActionResult Details(int? id)
26         {
27             if (id == null)
28             {
29                 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
30             }
31             ProjectTask projectTask = db.ProjectTasks.Find(id);
32             if (projectTask == null)
33             {
34                 return HttpNotFound();
35             }
36             return View(projectTask);
37         }
38
39         // GET: ProjectTasks/Create
40         [Authorize]
41         public ActionResult Create()
42         {
43             ViewBag.project_id = new SelectList(db.Projects, "id", "name");
44             ViewBag.task_status_id = new SelectList(db.TaskStatuses, "id", "status");
45             ViewBag.user_id = new SelectList(db.Users, "id", "login");
46             return View();
47         }
48
49         // POST: ProjectTasks/Create
50         // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
51         // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
52         [Authorize]
53         [HttpPost]
54         [ValidateAntiForgeryToken]
55         public ActionResult Create([Bind(Include = "id,project_id,name,description,created_at,updated_at,task_status_id,user_id")] ProjectTask projectTask)
56         {
57             if (ModelState.IsValid)
58             {
59                 projectTask.created_at = DateTime.Now;
60                 projectTask.updated_at = DateTime.Now;
61                 db.ProjectTasks.Add(projectTask);
62                 db.SaveChanges();
63                 return RedirectToAction("Index");
64             }
65
66             ViewBag.project_id = new SelectList(db.Projects, "id", "name", projectTask.project_id);
67             ViewBag.task_status_id = new SelectList(db.TaskStatuses, "id", "status", projectTask.task_status_id);
68             ViewBag.user_id = new SelectList(db.Users, "id", "login", projectTask.user_id);
69             return View(projectTask);
70         }
71
72         // GET: ProjectTasks/Edit/5
73         [Authorize]
74         public ActionResult Edit(int? id)
75         {
76             if (id == null)
77             {
78                 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
79             }
80             ProjectTask projectTask = db.ProjectTasks.Find(id);
81             if (projectTask == null)
82             {
83                 return HttpNotFound();
84             }
85             ViewBag.project_id = new SelectList(db.Projects, "id", "name", projectTask.project_id);
86             ViewBag.task_status_id = new SelectList(db.TaskStatuses, "id", "status", projectTask.task_status_id);
87             ViewBag.user_id = new SelectList(db.Users, "id", "login", projectTask.user_id);
88             return View(projectTask);
89         }
90
91         // POST: ProjectTasks/Edit/5
92         // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
93         // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
94         [Authorize]
95         [HttpPost]
96         [ValidateAntiForgeryToken]
97         public ActionResult Edit([Bind(Include = "id,project_id,name,description,task_status_id,user_id,created_at")] ProjectTask projectTask)
98         {
99             if (ModelState.IsValid)
100             {
101                 projectTask.updated_at = DateTime.Now;
102                 db.Entry(projectTask).State = EntityState.Modified;
103                 db.SaveChanges();
104                 return RedirectToAction("Index");
105             }
106             ViewBag.project_id = new SelectList(db.Projects, "id", "name", projectTask.project_id);
107             ViewBag.task_status_id = new SelectList(db.TaskStatuses, "id", "status", projectTask.task_status_id);
108             ViewBag.user_id = new SelectList(db.Users, "id", "login", projectTask.user_id);
109             return View(projectTask);
110         }
111
112         // GET: ProjectTasks/Delete/5
113         [Authorize(Roles = "admin")]
114         public ActionResult Delete(int? id)
115         {
116             if (id == null)
117             {
118                 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
119             }
120             ProjectTask projectTask = db.ProjectTasks.Find(id);
121             if (projectTask == null)
122             {
123                 return HttpNotFound();
124             }
125             return View(projectTask);
126         }
127
128         // POST: ProjectTasks/Delete/5
129         [Authorize(Roles = "admin")]
130         [HttpPost, ActionName("Delete")]
131         [ValidateAntiForgeryToken]
132         public ActionResult DeleteConfirmed(int id)
133         {
134             ProjectTask projectTask = db.ProjectTasks.Find(id);
135             db.ProjectTasks.Remove(projectTask);
136             db.SaveChanges();
137             return RedirectToAction("Index");
138         }
139
140         protected override void Dispose(bool disposing)
141         {
142             if (disposing)
143             {
144                 db.Dispose();
145             }
146             base.Dispose(disposing);
147         }
148     }
149 }