PageRenderTime 48ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/Plugins/GizmoBeach.Components/UI/KingsMvc5ServiceLibraryCodeTemplatesForDbContext.cs

http://github.com/kahanu/CondorXE
C# | 409 lines | 379 code | 22 blank | 8 comment | 2 complexity | 01b8f421255d81ebdc2e973070bd435e MD5 | raw file
  1. using System;
  2. using System.Linq;
  3. using Condor.Core;
  4. using Condor.Core.Interfaces;
  5. namespace GizmoBeach.Components.UI
  6. {
  7. /// <summary>
  8. /// This class will render the code templates for the MVC 5 project. This is necessary because
  9. /// MVC 5 uses all new T4 templates to generate their controllers, views and WebApi classes.
  10. /// </summary>
  11. public class KingsMvc5ServiceLibraryCodeTemplatesForDbContext : RenderBase, ICodeTemplateBuilder
  12. {
  13. #region ctors
  14. private readonly RequestContext _context;
  15. private readonly UICriteria _criteria;
  16. /// <summary>
  17. /// This class will render the code templates for the MVC 5 project. This is necessary because
  18. /// MVC 5 uses all new T4 templates to generate their controllers, views and WebApi classes.
  19. /// </summary>
  20. public KingsMvc5ServiceLibraryCodeTemplatesForDbContext(RequestContext context)
  21. :this(context, null)
  22. {
  23. }
  24. public KingsMvc5ServiceLibraryCodeTemplatesForDbContext(RequestContext context, UICriteria criteria)
  25. : base(context.Zeus.Output)
  26. {
  27. this._context = context;
  28. this._criteria = criteria;
  29. }
  30. #endregion
  31. #region Implemented Methods
  32. public void RenderAspNetViewTemplates()
  33. {
  34. }
  35. public void RenderControllerTemplate()
  36. {
  37. _output.autoTabLn("<#@ template language=\"C#\" HostSpecific=\"True\" #>");
  38. _output.autoTabLn("<#@ output extension=\"cs\" #>");
  39. _output.autoTabLn("<#@ import namespace=\"System\" #>");
  40. _output.autoTabLn("<#@ parameter type=\"System.String\" name=\"ControllerName\" #>");
  41. _output.autoTabLn("<#@ parameter type=\"System.String\" name=\"ControllerRootName\" #>");
  42. _output.autoTabLn("<#@ parameter type=\"System.String\" name=\"Namespace\" #>");
  43. _output.autoTabLn("<#@ parameter type=\"System.String\" name=\"AreaName\" #>");
  44. _output.autoTabLn("<#");
  45. _output.autoTabLn("");
  46. _output.autoTabLn("string camelCaseServiceName = CamelCaseString(ControllerRootName);");
  47. _output.autoTabLn("string camelCaseServiceNameWithPrefix = CamelCaseString(ControllerRootName, \"_\");");
  48. _output.autoTabLn("#>");
  49. _output.autoTabLn("using System;");
  50. _output.autoTabLn("using System.Collections.Generic;");
  51. _output.autoTabLn("using System.Linq;");
  52. _output.autoTabLn("using System.Web;");
  53. _output.autoTabLn("using System.Web.Mvc;");
  54. _output.autoTabLn("");
  55. _output.autoTabLn("using " + _script.Settings.UI.UINamespace + ".ViewData;");
  56. _output.autoTabLn("using " + _script.Settings.UI.UINamespace + ".Controllers;");
  57. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + ";");
  58. _output.autoTabLn("using " + _script.Settings.ServiceLayer.ServiceNamespace + ".Interfaces;");
  59. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace + ";");
  60. _output.autoTabLn("using Kendo.Mvc.Extensions;");
  61. _output.autoTabLn("using Kendo.Mvc.UI;");
  62. _output.autoTabLn("");
  63. _output.autoTabLn("namespace <#= Namespace #>");
  64. _output.autoTabLn("{");
  65. _output.tabLevel++;
  66. _output.autoTabLn("[Authorize]");
  67. _output.autoTabLn("public class <#= ControllerName #> : BaseController");
  68. _output.autoTabLn("{");
  69. _output.autoTabLn("");
  70. _output.tabLevel++;
  71. _output.autoTabLn("#region ctors");
  72. _output.autoTabLn("");
  73. _output.autoTabLn("private readonly I<#= ControllerRootName #>Service <#= camelCaseServiceNameWithPrefix #>Service;");
  74. _output.autoTabLn("private readonly IUnitOfWork _unitOfWork;");
  75. _output.autoTabLn("");
  76. _output.autoTabLn("public <#= ControllerName #>(I<#= ControllerRootName #>Service <#= camelCaseServiceName #>Service, IUnitOfWork unitOfWork)");
  77. _output.autoTabLn("{");
  78. _output.tabLevel++;
  79. _output.autoTabLn("this._unitOfWork = unitOfWork;");
  80. _output.autoTabLn("this.<#= camelCaseServiceNameWithPrefix #>Service = <#= camelCaseServiceName #>Service;");
  81. _output.tabLevel--;
  82. _output.autoTabLn("}");
  83. _output.autoTabLn("");
  84. _output.autoTabLn("#endregion");
  85. _output.autoTabLn("");
  86. _output.autoTabLn("#region MVC Actions");
  87. _output.autoTabLn("");
  88. _output.autoTabLn("public ActionResult Index()");
  89. _output.autoTabLn("{");
  90. _output.tabLevel++;
  91. _output.autoTabLn("<#= ControllerRootName #>ViewData viewData = ViewDataFactory.CreateBaseViewData<<#= ControllerRootName #>ViewData>(\"<#= ControllerRootName #> List\");");
  92. _output.autoTabLn("viewData.<#= ControllerRootName #>List = <#= camelCaseServiceNameWithPrefix #>Service.Get().ToList();");
  93. _output.tabLevel--;
  94. _output.autoTabLn("");
  95. _output.tabLevel++;
  96. _output.autoTabLn("return View(viewData);");
  97. _output.tabLevel--;
  98. _output.autoTabLn("}");
  99. _output.autoTabLn("");
  100. _output.autoTabLn("public ActionResult Details(int id)");
  101. _output.autoTabLn("{");
  102. _output.tabLevel++;
  103. _output.autoTabLn("<#= ControllerRootName #>ViewData viewData = ViewDataFactory.CreateBaseViewData<<#= ControllerRootName #>ViewData>(\"<#= ControllerRootName #> Details\");");
  104. _output.autoTabLn("viewData.<#= ControllerRootName #> = <#= camelCaseServiceNameWithPrefix #>Service.GetById(id);");
  105. _output.tabLevel--;
  106. _output.autoTabLn("");
  107. _output.tabLevel++;
  108. _output.autoTabLn("return View(viewData);");
  109. _output.tabLevel--;
  110. _output.autoTabLn("}");
  111. _output.autoTabLn("");
  112. _output.autoTabLn("public ActionResult Create()");
  113. _output.autoTabLn("{");
  114. _output.tabLevel++;
  115. _output.autoTabLn("<#= ControllerRootName #>ViewData viewData = ViewDataFactory.CreateBaseViewData<<#= ControllerRootName #>ViewData>(\"Create <#= ControllerRootName #>\");");
  116. _output.autoTab("viewData.<#= ControllerRootName #> = new <#= ControllerRootName #>() { ");
  117. if (_criteria.UseTracking)
  118. {
  119. _output.write("UpdatedBy = User.Identity.Name, UpdatedOn = DateTime.Now");
  120. }
  121. _output.writeln("};");
  122. _output.tabLevel--;
  123. _output.autoTabLn("");
  124. _output.tabLevel++;
  125. _output.autoTabLn("return View(viewData);");
  126. _output.tabLevel--;
  127. _output.autoTabLn("} ");
  128. _output.autoTabLn("");
  129. _output.autoTabLn("[HttpPost]");
  130. _output.autoTabLn("[ValidateAntiForgeryToken]");
  131. _output.autoTabLn("public ActionResult Create([Bind(Exclude=\"Id,rowversion\")]<#= ControllerRootName #> model)");
  132. _output.autoTabLn("{");
  133. _output.tabLevel++;
  134. _output.autoTabLn("try");
  135. _output.autoTabLn("{");
  136. _output.tabLevel++;
  137. _output.autoTabLn("if (!ModelState.IsValid)");
  138. _output.tabLevel++;
  139. _output.autoTabLn("return RedirectToAction(\"Create\");");
  140. _output.tabLevel--;
  141. _output.tabLevel--;
  142. _output.autoTabLn("");
  143. _output.tabLevel++;
  144. _output.autoTabLn("<#= camelCaseServiceNameWithPrefix #>Service.Insert(model);");
  145. _output.autoTabLn("_unitOfWork.Commit();");
  146. _output.autoTabLn("");
  147. _output.autoTabLn("return RedirectToAction(\"Index\");");
  148. _output.tabLevel--;
  149. _output.autoTabLn("}");
  150. _output.autoTabLn("catch (Exception ex)");
  151. _output.autoTabLn("{");
  152. _output.tabLevel++;
  153. _output.autoTabLn("ModelState.AddModelError(\"\", ex.Message);");
  154. _output.autoTabLn("return RedirectToAction(\"Create\");");
  155. _output.tabLevel--;
  156. _output.autoTabLn("}");
  157. _output.tabLevel--;
  158. _output.autoTabLn("}");
  159. _output.autoTabLn("");
  160. _output.autoTabLn("public ActionResult Edit(int id)");
  161. _output.autoTabLn("{");
  162. _output.tabLevel++;
  163. _output.autoTabLn("<#= ControllerRootName #>ViewData viewData = ViewDataFactory.CreateBaseViewData<<#= ControllerRootName #>ViewData>(\"Edit <#= ControllerRootName #>\");");
  164. _output.autoTabLn("viewData.<#= ControllerRootName #> = <#= camelCaseServiceNameWithPrefix #>Service.GetById(id);");
  165. if (_criteria.UseTracking)
  166. {
  167. _output.autoTabLn("viewData.<#= ControllerRootName #>.UpdatedOn = DateTime.Now;");
  168. }
  169. _output.autoTabLn("");
  170. _output.autoTabLn("return View(viewData);");
  171. _output.tabLevel--;
  172. _output.autoTabLn("}");
  173. _output.autoTabLn("");
  174. _output.autoTabLn("[HttpPost]");
  175. _output.autoTabLn("[ValidateAntiForgeryToken]");
  176. _output.autoTabLn("public ActionResult Edit(" + ((_criteria.UseTracking) ? "[Bind(Prefix=\"<#= ControllerRootName #>\")]" : "") + "<#= ControllerRootName #> model)");
  177. _output.autoTabLn("{");
  178. _output.tabLevel++;
  179. _output.autoTabLn("try");
  180. _output.autoTabLn("{");
  181. _output.tabLevel++;
  182. _output.autoTabLn("if (!ModelState.IsValid)");
  183. _output.tabLevel++;
  184. _output.autoTabLn("return RedirectToAction(\"Edit\", new { id = model.Id });");
  185. _output.tabLevel--;
  186. _output.autoTabLn("");
  187. _output.autoTabLn("");
  188. _output.autoTabLn("<#= camelCaseServiceNameWithPrefix #>Service.Update(model);");
  189. _output.autoTabLn("_unitOfWork.Commit();");
  190. _output.autoTabLn("");
  191. _output.autoTabLn("return RedirectToAction(\"Index\");");
  192. _output.tabLevel--;
  193. _output.autoTabLn("}");
  194. _output.autoTabLn("catch (Exception ex)");
  195. _output.autoTabLn("{");
  196. _output.tabLevel++;
  197. _output.autoTabLn("ModelState.AddModelError(\"\", ex.Message);");
  198. _output.autoTabLn("return RedirectToAction(\"Edit\", new { id = model.Id });");
  199. _output.tabLevel--;
  200. _output.autoTabLn("}");
  201. _output.tabLevel--;
  202. _output.autoTabLn("}");
  203. _output.autoTabLn("");
  204. _output.autoTabLn("");
  205. _output.autoTabLn("public ActionResult Delete(int id)");
  206. _output.autoTabLn("{");
  207. _output.tabLevel++;
  208. _output.autoTabLn("<#= ControllerRootName #>ViewData viewData = ViewDataFactory.CreateBaseViewData<<#= ControllerRootName #>ViewData>(\"Delete <#= ControllerRootName #>\");");
  209. _output.autoTabLn("viewData.<#= ControllerRootName #> = <#= camelCaseServiceNameWithPrefix #>Service.GetById(id);");
  210. _output.tabLevel--;
  211. _output.autoTabLn("");
  212. _output.tabLevel++;
  213. _output.autoTabLn("return View(viewData);");
  214. _output.tabLevel--;
  215. _output.autoTabLn("}");
  216. _output.autoTabLn("");
  217. _output.autoTabLn("[HttpPost]");
  218. _output.autoTabLn("[ValidateAntiForgeryToken]");
  219. _output.autoTabLn("public ActionResult Delete([Bind(Prefix=\"<#= ControllerRootName #>\")]<#= ControllerRootName #> model)");
  220. _output.autoTabLn("{");
  221. _output.tabLevel++;
  222. _output.autoTabLn("try");
  223. _output.autoTabLn("{");
  224. _output.tabLevel++;
  225. _output.autoTabLn("");
  226. _output.autoTabLn("<#= camelCaseServiceNameWithPrefix #>Service.Delete(model.Id);");
  227. _output.autoTabLn("_unitOfWork.Commit();");
  228. _output.autoTabLn("");
  229. _output.autoTabLn("return RedirectToAction(\"Index\");");
  230. _output.tabLevel--;
  231. _output.autoTabLn("}");
  232. _output.autoTabLn("catch (Exception)");
  233. _output.autoTabLn("{");
  234. _output.tabLevel++;
  235. _output.autoTabLn("return RedirectToAction(\"Delete\", new { id = model.Id });");
  236. _output.tabLevel--;
  237. _output.autoTabLn("}");
  238. _output.tabLevel--;
  239. _output.autoTabLn("}");
  240. _output.autoTabLn("");
  241. _output.autoTabLn("");
  242. _output.autoTabLn("#endregion");
  243. _output.autoTabLn("");
  244. _output.autoTabLn("#region Ajax Grid Paging Methods");
  245. _output.autoTabLn("");
  246. _output.autoTabLn("//Used with KendoMvc.UI components");
  247. _output.autoTabLn("//public ActionResult _Get<#= ControllerRootName #>List([DataSourceRequest] DataSourceRequest request)");
  248. _output.autoTabLn("//{");
  249. _output.autoTabLn("// return Json(<#= camelCaseServiceNameWithPrefix #>Service.Get<#= ControllerRootName #>ListForIndex().ToDataSourceResult(request), JsonRequestBehavior.AllowGet);");
  250. _output.autoTabLn("//}");
  251. _output.autoTabLn("");
  252. _output.autoTabLn("#endregion");
  253. _output.tabLevel--;
  254. _output.autoTabLn("");
  255. _output.autoTabLn("}");
  256. _output.tabLevel--;
  257. _output.autoTabLn("}");
  258. _output.autoTabLn("<#+");
  259. _output.autoTabLn("");
  260. _output.tabLevel++;
  261. _output.autoTabLn("public string CamelCaseString(string input)");
  262. _output.autoTabLn("{");
  263. _output.tabLevel++;
  264. _output.autoTabLn("return CamelCaseString(input, \"\");");
  265. _output.tabLevel--;
  266. _output.autoTabLn("}");
  267. _output.autoTabLn("");
  268. _output.autoTabLn("public string CamelCaseString(string input, string prefix)");
  269. _output.autoTabLn("{");
  270. _output.tabLevel++;
  271. _output.autoTabLn("string firstChar = input.Substring(0, 1);");
  272. _output.autoTabLn("string remaining = input.Substring(1);");
  273. _output.autoTabLn("");
  274. _output.autoTabLn("string result = firstChar.ToLower() + remaining;");
  275. _output.autoTabLn("");
  276. _output.autoTabLn("if (!string.IsNullOrEmpty(prefix))");
  277. _output.tabLevel++;
  278. _output.autoTabLn("result = prefix + result;");
  279. _output.tabLevel--;
  280. _output.autoTabLn("");
  281. _output.autoTabLn("return result;");
  282. _output.tabLevel--;
  283. _output.autoTabLn("}");
  284. _output.autoTabLn("");
  285. _output.tabLevel--;
  286. _output.autoTabLn("#>");
  287. _context.FileList.Add(" MvcControllerWithActions\\Controller.cs.t4");
  288. SaveOutput(CreateFullPath(_script.Settings.UI.UINamespace + "\\CodeTemplates\\MvcControllerWithActions", "Controller.cs.t4"), SaveActions.DontOverwrite);
  289. }
  290. public void RenderRazorViewTemplates()
  291. {
  292. }
  293. public void RenderWebApiTemplates()
  294. {
  295. _output.autoTabLn("<#@ template language=\"C#\" HostSpecific=\"True\" #>");
  296. _output.autoTabLn("<#@ output extension=\"cs\" #>");
  297. _output.autoTabLn("<#@ parameter type=\"System.String\" name=\"ControllerName\" #>");
  298. _output.autoTabLn("<#@ parameter type=\"System.String\" name=\"ControllerRootName\" #>");
  299. _output.autoTabLn("<#@ parameter type=\"System.String\" name=\"Namespace\" #>");
  300. _output.autoTabLn("<#");
  301. _output.autoTabLn("");
  302. _output.autoTabLn("string camelCaseServiceName = CamelCaseString(ControllerRootName);");
  303. _output.autoTabLn("string camelCaseServiceNameWithPrefix = CamelCaseString(ControllerRootName, \"_\");");
  304. _output.autoTabLn("#>");
  305. _output.autoTabLn("using System;");
  306. _output.autoTabLn("using System.Collections.Generic;");
  307. _output.autoTabLn("using System.Linq;");
  308. _output.autoTabLn("using System.Net;");
  309. _output.autoTabLn("using System.Net.Http;");
  310. _output.autoTabLn("using System.Web.Http;");
  311. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace + ";");
  312. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + ";");
  313. _output.autoTabLn("using " + _script.Settings.ServiceLayer.ServiceNamespace + ".Interfaces;");
  314. _output.autoTabLn("");
  315. _output.autoTabLn("namespace <#= Namespace #>");
  316. _output.autoTabLn("{");
  317. _output.tabLevel++;
  318. _output.autoTabLn("public class <#= ControllerName #> : BaseController<<#= ControllerRootName #>>");
  319. _output.autoTabLn("{");
  320. _output.autoTabLn("");
  321. _output.tabLevel++;
  322. _output.autoTabLn("#region ctors");
  323. _output.autoTabLn("");
  324. _output.autoTabLn("private readonly I<#= ControllerRootName #>Service <#= camelCaseServiceNameWithPrefix #>Service;");
  325. _output.autoTabLn("");
  326. _output.autoTabLn("private readonly IUnitOfWork _unitOfWork;");
  327. _output.autoTabLn("");
  328. _output.autoTabLn("public <#= ControllerName #>(I<#= ControllerRootName #>Service <#= camelCaseServiceName #>Service, IUnitOfWork unitOfWork)");
  329. _output.tabLevel++;
  330. _output.autoTabLn(":base(<#= camelCaseServiceName #>Service, unitOfWork)");
  331. _output.tabLevel--;
  332. _output.autoTabLn("{");
  333. _output.tabLevel++;
  334. _output.autoTabLn("this.<#= camelCaseServiceNameWithPrefix #>Service = <#= camelCaseServiceName #>Service;");
  335. _output.autoTabLn("this._unitOfWork = unitOfWork;");
  336. _output.tabLevel--;
  337. _output.autoTabLn("}");
  338. _output.autoTabLn("");
  339. _output.autoTabLn("#endregion");
  340. _output.autoTabLn("");
  341. _output.autoTabLn("#region Public Methods");
  342. _output.tabLevel--;
  343. _output.autoTabLn("");
  344. _output.autoTabLn("");
  345. _output.autoTabLn("");
  346. _output.tabLevel++;
  347. _output.autoTabLn("#endregion");
  348. _output.tabLevel--;
  349. _output.autoTabLn("");
  350. _output.autoTabLn("}");
  351. _output.tabLevel--;
  352. _output.autoTabLn("}");
  353. _output.autoTabLn("<#+");
  354. _output.autoTabLn("");
  355. _output.tabLevel++;
  356. _output.autoTabLn("public string CamelCaseString(string input)");
  357. _output.autoTabLn("{");
  358. _output.tabLevel++;
  359. _output.autoTabLn("return CamelCaseString(input, \"\");");
  360. _output.tabLevel--;
  361. _output.autoTabLn("}");
  362. _output.autoTabLn("");
  363. _output.autoTabLn("public string CamelCaseString(string input, string prefix)");
  364. _output.autoTabLn("{");
  365. _output.tabLevel++;
  366. _output.autoTabLn("string firstChar = input.Substring(0, 1);");
  367. _output.autoTabLn("string remaining = input.Substring(1);");
  368. _output.autoTabLn("");
  369. _output.autoTabLn("string result = firstChar.ToLower() + remaining;");
  370. _output.autoTabLn("");
  371. _output.autoTabLn("if (!string.IsNullOrEmpty(prefix))");
  372. _output.tabLevel++;
  373. _output.autoTabLn("result = prefix + result;");
  374. _output.tabLevel--;
  375. _output.autoTabLn("");
  376. _output.autoTabLn("return result;");
  377. _output.tabLevel--;
  378. _output.autoTabLn("}");
  379. _output.autoTabLn("");
  380. _output.tabLevel--;
  381. _output.autoTabLn("#>");
  382. _context.FileList.Add(" ApiControllerEmpty\\Controller.cs.t4");
  383. SaveOutput(CreateFullPath(_script.Settings.UI.UINamespace + "\\CodeTemplates\\ApiControllerEmpty", "Controller.cs.t4"), SaveActions.DontOverwrite);
  384. }
  385. #endregion
  386. }
  387. }