Automatically update creation and modification date
[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         public ActionResult Create()
41         {
42             ViewBag.project_id = new SelectList(db.Projects, "id", "name");
43             ViewBag.task_status_id = new SelectList(db.TaskStatuses, "id", "status");
44             ViewBag.user_id = new SelectList(db.Users, "id", "login");
45             return View();
46         }
47
48         // POST: ProjectTasks/Create
49         // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
50         // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
51         [HttpPost]
52         [ValidateAntiForgeryToken]
53         public ActionResult Create([Bind(Include = "id,project_id,name,description,created_at,updated_at,task_status_id,user_id")] ProjectTask projectTask)
54         {
55             if (ModelState.IsValid)
56             {
57                 projectTask.created_at = DateTime.Now;
58                 projectTask.updated_at = DateTime.Now;
59                 db.ProjectTasks.Add(projectTask);
60                 db.SaveChanges();
61                 return RedirectToAction("Index");
62             }
63
64             ViewBag.project_id = new SelectList(db.Projects, "id", "name", projectTask.project_id);
65             ViewBag.task_status_id = new SelectList(db.TaskStatuses, "id", "status", projectTask.task_status_id);
66             ViewBag.user_id = new SelectList(db.Users, "id", "login", projectTask.user_id);
67             return View(projectTask);
68         }
69
70         // GET: ProjectTasks/Edit/5
71         public ActionResult Edit(int? id)
72         {
73             if (id == null)
74             {
75                 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
76             }
77             ProjectTask projectTask = db.ProjectTasks.Find(id);
78             if (projectTask == null)
79             {
80                 return HttpNotFound();
81             }
82             ViewBag.project_id = new SelectList(db.Projects, "id", "name", projectTask.project_id);
83             ViewBag.task_status_id = new SelectList(db.TaskStatuses, "id", "status", projectTask.task_status_id);
84             ViewBag.user_id = new SelectList(db.Users, "id", "login", projectTask.user_id);
85             return View(projectTask);
86         }
87
88         // POST: ProjectTasks/Edit/5
89         // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
90         // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
91         [HttpPost]
92         [ValidateAntiForgeryToken]
93         public ActionResult Edit([Bind(Include = "id,project_id,name,description,task_status_id,user_id,created_at")] ProjectTask projectTask)
94         {
95             if (ModelState.IsValid)
96             {
97                 projectTask.updated_at = DateTime.Now;
98                 db.Entry(projectTask).State = EntityState.Modified;
99                 db.SaveChanges();
100                 return RedirectToAction("Index");
101             }
102             ViewBag.project_id = new SelectList(db.Projects, "id", "name", projectTask.project_id);
103             ViewBag.task_status_id = new SelectList(db.TaskStatuses, "id", "status", projectTask.task_status_id);
104             ViewBag.user_id = new SelectList(db.Users, "id", "login", projectTask.user_id);
105             return View(projectTask);
106         }
107
108         // GET: ProjectTasks/Delete/5
109         public ActionResult Delete(int? id)
110         {
111             if (id == null)
112             {
113                 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
114             }
115             ProjectTask projectTask = db.ProjectTasks.Find(id);
116             if (projectTask == null)
117             {
118                 return HttpNotFound();
119             }
120             return View(projectTask);
121         }
122
123         // POST: ProjectTasks/Delete/5
124         [HttpPost, ActionName("Delete")]
125         [ValidateAntiForgeryToken]
126         public ActionResult DeleteConfirmed(int id)
127         {
128             ProjectTask projectTask = db.ProjectTasks.Find(id);
129             db.ProjectTasks.Remove(projectTask);
130             db.SaveChanges();
131             return RedirectToAction("Index");
132         }
133
134         protected override void Dispose(bool disposing)
135         {
136             if (disposing)
137             {
138                 db.Dispose();
139             }
140             base.Dispose(disposing);
141         }
142     }
143 }