Skip to content

Commit 7249a7c

Browse files
authored
Merge pull request #19 from telerik/taskboard-service
feat(taskboard): add taskboard service
2 parents b30c8a1 + cabd8a2 commit 7249a7c

File tree

4 files changed

+183
-0
lines changed

4 files changed

+183
-0
lines changed
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Web;
5+
using System.Web.Mvc;
6+
using KendoCRUDService.Models;
7+
using KendoCRUDService.Common;
8+
9+
namespace KendoCRUDService.Controllers
10+
{
11+
public class TaskBoardController : Controller
12+
{
13+
public ActionResult Index()
14+
{
15+
return Json(All, JsonRequestBehavior.AllowGet);
16+
}
17+
18+
public JsonResult Create(CardModel model)
19+
{
20+
int lastID = All.Select(m => m.ID).Max();
21+
model.ID = lastID + 1;
22+
All.Add(model);
23+
24+
return Json(model);
25+
}
26+
27+
public JsonResult Update(CardModel model)
28+
{
29+
var target = One(m => m.ID == model.ID);
30+
31+
target.Title = model.Title;
32+
target.Description = model.Description;
33+
target.Category = model.Category;
34+
target.Order = model.Order;
35+
target.Status = model.Status;
36+
37+
return Json(target);
38+
}
39+
40+
public JsonResult Destroy(CardModel model)
41+
{
42+
var target = One(m => m.ID == model.ID);
43+
44+
All.Remove(target);
45+
46+
return Json(target);
47+
}
48+
49+
public ActionResult Columns()
50+
{
51+
return Json(ColumnsList, JsonRequestBehavior.AllowGet);
52+
}
53+
54+
public JsonResult Columns_Create(ColumnModel model)
55+
{
56+
int lastID = ColumnsList.Select(m => m.ID).Max();
57+
int order = ColumnsList.Select(m => m.Order).Max();
58+
model.ID = lastID + 1;
59+
model.Order = order + 1;
60+
model.Status = model.Text.ToLowerInvariant();
61+
ColumnsList.Add(model);
62+
63+
return Json(model);
64+
}
65+
66+
public JsonResult Columns_Update(ColumnModel model)
67+
{
68+
var target = ColumnOne(m => m.ID == model.ID);
69+
70+
target.Text = model.Text;
71+
target.Order = model.Order;
72+
target.Status = model.Status;
73+
74+
return Json(target);
75+
}
76+
77+
public JsonResult Columns_Destroy(ColumnModel model)
78+
{
79+
var target = ColumnOne(m => m.ID == model.ID);
80+
81+
ColumnsList.Remove(target);
82+
83+
return Json(target);
84+
}
85+
86+
public static CardModel One(Func<CardModel, bool> predicate)
87+
{
88+
return All.FirstOrDefault(predicate);
89+
}
90+
91+
public static ColumnModel ColumnOne(Func<ColumnModel, bool> predicate)
92+
{
93+
return ColumnsList.FirstOrDefault(predicate);
94+
}
95+
96+
private static IList<CardModel> All
97+
{
98+
get
99+
{
100+
IList<CardModel> result = System.Web.HttpContext.Current.Session["TaskBoardCards"] as IList<CardModel>;
101+
102+
if (result == null)
103+
{
104+
System.Web.HttpContext.Current.Session["TaskBoardCards"] = result = new List<CardModel>
105+
{
106+
new CardModel { ID = 1, Title = "Campaigns", Order = 1, Description = "Create a new landing page for campaign", Status = "todo", Category = "urgent" },
107+
new CardModel { ID = 2, Title = "Newsletters", Order = 2, Description = "Send newsletter", Status = "todo", Category = "highpriority" },
108+
new CardModel { ID = 3, Title = "Ads Analytics", Order = 3, Description = "Review ads performance", Status = "todo", Category = "lowpriority" },
109+
new CardModel { ID = 4, Title = "SEO Analytics", Order = 4, Description = "Review SEO results", Status = "todo", Category = "lowpriority" },
110+
new CardModel { ID = 5, Title = "Customer Research", Order = 5, Description = "Interview focus groups", Status = "todo", Category = "urgent" },
111+
new CardModel { ID = 6, Title = "Testimonials & Case Studies", Order = 6, Description = "Publish new case study", Status = "todo", Category = "urgent" },
112+
new CardModel { ID = 7, Title = "Content", Order = 7, Description = "Plan content for podcasts", Status = "todo", Category = "highpriority" },
113+
new CardModel { ID = 8, Title = "Customer Journey", Order = 8, Description = "Update virtual classrooms' experience", Status = "todo", Category = "urgent" },
114+
new CardModel { ID = 9, Title = "Funnel Analytics", Order = 9, Description = "Funnel analysis", Status = "inProgress", Category = "highpriority" },
115+
new CardModel { ID = 10, Title = "Customer Research", Order = 10, Description = "Refine feedback from user interviews", Status = "inProgress", Category = "highpriority" },
116+
new CardModel { ID = 11, Title = "Campaigns", Order = 11, Description = "Collaborate with designers on new banners", Status = "inProgress", Category = "urgent" },
117+
new CardModel { ID = 12, Title = "Campaigns", Order = 12, Description = "Schedule social media for release", Status = "inProgress", Category = "highpriority" },
118+
new CardModel { ID = 13, Title = "Customer Journey", Order = 13, Description = "Review shopping cart experience", Status = "done", Category = "lowpriority" },
119+
new CardModel { ID = 14, Title = "Content", Order = 14, Description = "Publish new blogpost", Status = "done", Category = "urgent" },
120+
new CardModel { ID = 15, Title = "Post-Release Party", Order = 15, Description = "Plan new release celebration", Status = "done", Category = "lowpriority" }
121+
};
122+
}
123+
124+
return result;
125+
}
126+
}
127+
128+
private static IList<ColumnModel> ColumnsList
129+
{
130+
get
131+
{
132+
IList<ColumnModel> result = System.Web.HttpContext.Current.Session["TaskBoardColumns"] as IList<ColumnModel>;
133+
134+
if (result == null)
135+
{
136+
System.Web.HttpContext.Current.Session["TaskBoardColumns"] = result = new List<ColumnModel>
137+
{
138+
new ColumnModel { ID = 1, Text = "Pending", Order = 1, Status = "todo" },
139+
new ColumnModel { ID = 2, Text = "Under Review", Order = 2, Status = "inProgress" },
140+
new ColumnModel { ID = 2, Text = "Scheduled", Order = 3, Status = "done" }
141+
};
142+
}
143+
144+
return result;
145+
}
146+
}
147+
}
148+
}

demos-and-odata-v3/KendoCRUDService/KendoCRUDService.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@
183183
<Compile Include="Controllers\ProductsController.cs" />
184184
<Compile Include="Controllers\RedditImagesController.cs" />
185185
<Compile Include="Controllers\StockDataController.cs" />
186+
<Compile Include="Controllers\TaskBoardController.cs" />
186187
<Compile Include="Controllers\TasksController.cs" />
187188
<Compile Include="Controllers\TwitterController.cs" />
188189
<Compile Include="Controllers\WeatherController.cs" />
@@ -247,6 +248,8 @@
247248
<Compile Include="Models\StockData\BaseUnit.cs" />
248249
<Compile Include="Models\StockData\DataFilter.cs" />
249250
<Compile Include="Models\StockData\StockDataPoint.cs" />
251+
<Compile Include="Models\TaskBoard\ColumnModel.cs" />
252+
<Compile Include="Models\TaskBoard\CardModel.cs" />
250253
<Compile Include="Models\TreeList\EmployeeDirectoryModel.cs" />
251254
<Compile Include="Models\TreeList\EmployeeDrirectoryRepository.cs" />
252255
<Compile Include="Models\Weather\WeatherRepository.cs" />
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Web;
5+
6+
namespace KendoCRUDService.Models
7+
{
8+
public class ColumnModel
9+
{
10+
public int ID { get; set; }
11+
public string Text { get; set; }
12+
public int Order { get; set; }
13+
public string Status { get; set; }
14+
}
15+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Web;
5+
6+
namespace KendoCRUDService.Models
7+
{
8+
public class CardModel
9+
{
10+
public int ID { get; set; }
11+
public string Category { get; set; }
12+
public string Title { get; set; }
13+
public int Order { get; set; }
14+
public string Description { get; set; }
15+
public string Status { get; set; }
16+
}
17+
}

0 commit comments

Comments
 (0)