PageRenderTime 69ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/Plugins/GizmoBeach.Components/UI/AspNetMvcUILayerObjectsForDbContextBase.cs

http://github.com/kahanu/CondorXE
C# | 704 lines | 627 code | 75 blank | 2 comment | 14 complexity | c73490d6da4cdae266ee6ba0aa7f7c7c MD5 | raw file
  1. using System;
  2. using System.Linq;
  3. using Condor.Core;
  4. using Condor.Core.Interfaces;
  5. using MyMeta;
  6. namespace GizmoBeach.Components.UI
  7. {
  8. public class AspNetMvcUILayerObjectsForDbContextBase : RenderBase, IUIObjects
  9. {
  10. #region ctors
  11. private readonly UICriteria _criteria;
  12. private readonly IAutoMapperFramework _autoMapperFramework;
  13. private readonly ProgressDialogWrapper _dialog;
  14. private readonly IDatabase _database;
  15. private readonly RequestContext _context;
  16. public AspNetMvcUILayerObjectsForDbContextBase(RequestContext context)
  17. : this(context, null)
  18. {
  19. }
  20. public AspNetMvcUILayerObjectsForDbContextBase(RequestContext context, IAutoMapperFramework autoMapperFramework)
  21. :this(context, autoMapperFramework, new UICriteria())
  22. {
  23. }
  24. public AspNetMvcUILayerObjectsForDbContextBase(RequestContext context, IAutoMapperFramework autoMapperFramework, UICriteria criteria)
  25. : base(context.Zeus.Output)
  26. {
  27. this._criteria = criteria;
  28. this._autoMapperFramework = autoMapperFramework;
  29. this._context = context;
  30. this._dialog = context.Dialog;
  31. this._database = context.Database;
  32. }
  33. #endregion
  34. #region IRenderObject Members
  35. public void Render()
  36. {
  37. _dialog.InitDialog();
  38. _context.FileList.Add("");
  39. _context.FileList.Add("Generated UI MVC ViewData classes:");
  40. bool useUIDtos = false;
  41. if (_autoMapperFramework != null)
  42. useUIDtos = true;
  43. foreach (string tableName in _script.Tables)
  44. {
  45. MyMeta.ITable table = _database.Tables[tableName];
  46. BuildViewDataClass(table, useUIDtos);
  47. }
  48. _dialog.InitDialog(3);
  49. _dialog.Display("Processing UI MVC BaseViewData class.");
  50. BuildBaseViewDataClass();
  51. _dialog.Display("Processing UI MVC BaseViewDataBuilder class.");
  52. BuildBaseViewDataBuilderClass();
  53. _dialog.Display("Processing UI MVC ViewDataFactory class.");
  54. BuildViewDataFactory();
  55. CreateCommonClass();
  56. CreateConfigSettingsClass();
  57. CreateJsonResponseClass();
  58. BuildControllerCodeTemplate();
  59. BuildBaseController();
  60. BuildAutoMapperFramework();
  61. }
  62. private void BuildAutoMapperFramework()
  63. {
  64. if (_autoMapperFramework != null)
  65. {
  66. bool useWebService = false;
  67. _autoMapperFramework.RenderAutoMapperExtensionClass(useWebService);
  68. _autoMapperFramework.RenderAutoMapperConfiguration(useWebService);
  69. _autoMapperFramework.RenderAutoMapperAppStart();
  70. foreach (string tableName in _script.Tables)
  71. {
  72. ITable table = _database.Tables[tableName];
  73. _autoMapperFramework.BuildModelClass(table, useWebService);
  74. }
  75. }
  76. }
  77. private void BuildBaseController()
  78. {
  79. _hdrUtil.WriteClassHeader(_output);
  80. _output.autoTabLn("using " + _script.Settings.ServiceLayer.ServiceNamespace + ".Interfaces;");
  81. _output.autoTabLn("using System.Linq;");
  82. _output.autoTabLn("using System.Web.Mvc;");
  83. _output.autoTabLn("");
  84. _output.autoTabLn("namespace " + _script.Settings.UI.UINamespace + ".Controllers");
  85. _output.autoTabLn("{");
  86. _output.tabLevel++;
  87. _output.autoTabLn("public class BaseController : Controller");
  88. _output.autoTabLn("{");
  89. _output.autoTabLn("");
  90. _output.tabLevel++;
  91. _output.autoTabLn("#region DI stuff");
  92. foreach (string tableName in _script.Tables)
  93. {
  94. if (tableName == "SiteSetting")
  95. {
  96. _output.autoTabLn("private ISiteSettingService siteSettingService;");
  97. _output.autoTabLn("");
  98. _output.autoTabLn("public BaseController(ISiteSettingService siteSettingService)");
  99. _output.autoTabLn("{");
  100. _output.tabLevel++;
  101. _output.autoTabLn("this.siteSettingService = siteSettingService;");
  102. _output.tabLevel--;
  103. _output.autoTabLn("}");
  104. }
  105. }
  106. _output.autoTabLn("");
  107. _output.autoTabLn("public BaseController()");
  108. _output.autoTabLn("{");
  109. _output.autoTabLn("");
  110. _output.autoTabLn("}");
  111. _output.autoTabLn("");
  112. _output.autoTabLn("#endregion");
  113. _output.autoTabLn("");
  114. foreach (string tableName in _script.Tables)
  115. {
  116. if (tableName == "SiteSetting")
  117. {
  118. _output.autoTabLn("#region Public Methods");
  119. _output.autoTabLn("");
  120. _output.autoTabLn("/// <summary>");
  121. _output.autoTabLn("/// Get the value of a SiteSetting.");
  122. _output.autoTabLn("/// </summary>");
  123. _output.autoTabLn("/// <param name=\"key\"></param>");
  124. _output.autoTabLn("/// <returns></returns>");
  125. _output.autoTabLn("public string GetSetting(string key)");
  126. _output.autoTabLn("{");
  127. _output.tabLevel++;
  128. _output.autoTabLn("string result = string.Empty;");
  129. _output.autoTabLn("");
  130. _output.autoTabLn("var query = siteSettingService.GetByKey(key);");
  131. _output.autoTabLn("");
  132. _output.autoTabLn("return result;");
  133. _output.tabLevel--;
  134. _output.autoTabLn("}");
  135. _output.autoTabLn("");
  136. _output.autoTabLn("#endregion");
  137. _output.autoTabLn("");
  138. }
  139. }
  140. _output.autoTabLn("#region Overrides");
  141. _output.autoTabLn("/// <summary>");
  142. _output.autoTabLn("/// This provides simple feedback to the modelstate in the case of errors.");
  143. _output.autoTabLn("/// </summary>");
  144. _output.autoTabLn("/// <param name=\"filterContext\"></param>");
  145. _output.autoTabLn("protected override void OnActionExecuted(ActionExecutedContext filterContext)");
  146. _output.autoTabLn("{");
  147. _output.tabLevel++;
  148. _output.autoTabLn("if (filterContext.Result is RedirectToRouteResult)");
  149. _output.autoTabLn("{");
  150. _output.tabLevel++;
  151. _output.autoTabLn("// put the ModelState into TempData");
  152. _output.autoTabLn("TempData.Add(\"_MODELSTATE\", ModelState);");
  153. _output.tabLevel--;
  154. _output.autoTabLn("}");
  155. _output.autoTabLn("else if (filterContext.Result is ViewResult && TempData.ContainsKey(\"_MODELSTATE\"))");
  156. _output.autoTabLn("{");
  157. _output.tabLevel++;
  158. _output.autoTabLn("// merge modelstate from TempData");
  159. _output.autoTabLn("var modelState = TempData[\"_MODELSTATE\"] as ModelStateDictionary;");
  160. _output.autoTabLn("foreach (var item in modelState)");
  161. _output.autoTabLn("{");
  162. _output.tabLevel++;
  163. _output.autoTabLn("if (!ModelState.ContainsKey(item.Key))");
  164. _output.tabLevel++;
  165. _output.autoTabLn("ModelState.Add(item);");
  166. _output.tabLevel--;
  167. _output.tabLevel--;
  168. _output.autoTabLn("}");
  169. _output.tabLevel--;
  170. _output.autoTabLn("}");
  171. _output.autoTabLn("base.OnActionExecuted(filterContext);");
  172. _output.tabLevel--;
  173. _output.autoTabLn("}");
  174. _output.autoTabLn("#endregion");
  175. _output.autoTabLn("");
  176. _output.tabLevel--;
  177. _output.autoTabLn("}");
  178. _output.tabLevel--;
  179. _output.autoTabLn("}");
  180. _context.FileList.Add(" BaseController.cs");
  181. SaveOutput(CreateFullPath(_script.Settings.UI.UINamespace + "\\Controllers", "BaseController.cs"), SaveActions.DontOverwrite);
  182. // Now create the WebApi base class
  183. _hdrUtil.WriteClassHeader(_output);
  184. _output.autoTabLn("using System;");
  185. _output.autoTabLn("using System.Collections.Generic;");
  186. _output.autoTabLn("using System.Linq;");
  187. _output.autoTabLn("using System.Net;");
  188. _output.autoTabLn("using System.Net.Http;");
  189. _output.autoTabLn("using System.Web.Http;");
  190. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + ";");
  191. _output.autoTabLn("using " + _script.Settings.ServiceLayer.ServiceNamespace + ".Generated;");
  192. _output.autoTabLn("");
  193. _output.autoTabLn("namespace " + _script.Settings.UI.UINamespace + ".Controllers.api");
  194. _output.autoTabLn("{");
  195. _output.tabLevel++;
  196. _output.autoTabLn("/// <summary>");
  197. _output.autoTabLn("/// This is the common base ApiController used for all controllers.");
  198. _output.autoTabLn("/// It will be used primarily for GET operations, even though it has");
  199. _output.autoTabLn("/// the other CRUD operations enabled. Other operations such as POST,");
  200. _output.autoTabLn("/// PUT, DELETE, etc., should be used only where absolutely necessary,");
  201. _output.autoTabLn("/// and only in the Admin Area, not the public site.");
  202. _output.autoTabLn("/// </summary>");
  203. _output.autoTabLn("/// <typeparam name=\"T\">a business object type</typeparam>");
  204. _output.autoTabLn("public class BaseController<T> : ApiController where T : class");
  205. _output.autoTabLn("{");
  206. _output.tabLevel++;
  207. _output.autoTabLn("#region ctors");
  208. _output.autoTabLn("private readonly IService<T> _service;");
  209. _output.autoTabLn("private readonly IUnitOfWork _unitOfWork;");
  210. _output.autoTabLn("");
  211. _output.autoTabLn("public BaseController(IService<T> service, IUnitOfWork unitOfWork)");
  212. _output.autoTabLn("{");
  213. _output.tabLevel++;
  214. _output.autoTabLn("this._unitOfWork = unitOfWork;");
  215. _output.autoTabLn("this._service = service;");
  216. _output.tabLevel--;
  217. _output.autoTabLn("}");
  218. _output.autoTabLn("");
  219. _output.autoTabLn("#endregion");
  220. _output.autoTabLn("");
  221. _output.autoTabLn("#region Basic CRUD");
  222. _output.autoTabLn("");
  223. _output.autoTabLn("/// <summary>");
  224. _output.autoTabLn("/// Get all the Products in the repository.");
  225. _output.autoTabLn("/// </summary>");
  226. _output.autoTabLn("/// <returns></returns>");
  227. _output.autoTabLn("public IEnumerable<T> Get()");
  228. _output.autoTabLn("{");
  229. _output.tabLevel++;
  230. _output.autoTabLn("return _service.Get();");
  231. _output.tabLevel--;
  232. _output.autoTabLn("}");
  233. _output.autoTabLn("");
  234. _output.autoTabLn("/// <summary>");
  235. _output.autoTabLn("/// Get the selected Entity.");
  236. _output.autoTabLn("/// </summary>");
  237. _output.autoTabLn("/// <param name=\"id\">Id</param>");
  238. _output.autoTabLn("/// <returns></returns>");
  239. _output.autoTabLn("public T Get(int id)");
  240. _output.autoTabLn("{");
  241. _output.tabLevel++;
  242. _output.autoTabLn("T model = _service.GetById(id);");
  243. _output.autoTabLn("if (model == null)");
  244. _output.tabLevel++;
  245. _output.autoTabLn("throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));");
  246. _output.tabLevel--;
  247. _output.autoTabLn("");
  248. _output.autoTabLn("return model;");
  249. _output.tabLevel--;
  250. _output.autoTabLn("}");
  251. _output.autoTabLn("");
  252. _output.autoTabLn("/// <summary>");
  253. _output.autoTabLn("/// Insert a new Product into the repository.");
  254. _output.autoTabLn("/// </summary>");
  255. _output.autoTabLn("/// <param name=\"model\">Product</param>");
  256. _output.autoTabLn("/// <returns></returns>");
  257. _output.autoTabLn("/// ");
  258. _output.autoTabLn("[Authorize]");
  259. _output.autoTabLn("public HttpResponseMessage Post(T model)");
  260. _output.autoTabLn("{");
  261. _output.tabLevel++;
  262. _output.autoTabLn("if (ModelState.IsValid)");
  263. _output.autoTabLn("{");
  264. _output.tabLevel++;
  265. _output.autoTabLn("_service.Insert(model);");
  266. _output.autoTabLn("_unitOfWork.Db.Commit();");
  267. _output.autoTabLn("");
  268. _output.autoTabLn("var response = Request.CreateResponse(HttpStatusCode.Created, model);");
  269. _output.autoTabLn("//response.Headers.Location = new Uri(Url.Link(\"DefaultApi\", new { controller = \"" + " id = model.Id }));");
  270. _output.autoTabLn("");
  271. _output.autoTabLn("return response;");
  272. _output.tabLevel--;
  273. _output.autoTabLn("}");
  274. _output.autoTabLn("else");
  275. _output.autoTabLn("{");
  276. _output.tabLevel++;
  277. _output.autoTabLn("throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));");
  278. _output.tabLevel--;
  279. _output.autoTabLn("}");
  280. _output.tabLevel--;
  281. _output.autoTabLn("}");
  282. _output.autoTabLn("");
  283. _output.autoTabLn("/// <summary>");
  284. _output.autoTabLn("/// Update the selected Product.");
  285. _output.autoTabLn("/// </summary>");
  286. _output.autoTabLn("/// <param name=\"id\">Id</param>");
  287. _output.autoTabLn("/// <param name=\"model\">Product</param>");
  288. _output.autoTabLn("/// <returns></returns>");
  289. _output.autoTabLn("/// ");
  290. _output.autoTabLn("[Authorize]");
  291. _output.autoTabLn("public HttpResponseMessage Put(T model)");
  292. _output.autoTabLn("{");
  293. _output.tabLevel++;
  294. _output.autoTabLn("if (ModelState.IsValid)");
  295. _output.autoTabLn("{");
  296. _output.tabLevel++;
  297. _output.autoTabLn("try");
  298. _output.autoTabLn("{");
  299. _output.tabLevel++;
  300. _output.autoTabLn("_service.Update(model);");
  301. _output.autoTabLn("_unitOfWork.Db.Commit();");
  302. _output.tabLevel--;
  303. _output.autoTabLn("}");
  304. _output.autoTabLn("catch (Exception)");
  305. _output.autoTabLn("{");
  306. _output.tabLevel++;
  307. _output.autoTabLn("return Request.CreateResponse(HttpStatusCode.NotFound);");
  308. _output.tabLevel--;
  309. _output.autoTabLn("}");
  310. _output.autoTabLn("return Request.CreateResponse(HttpStatusCode.OK, model);");
  311. _output.tabLevel--;
  312. _output.autoTabLn("}");
  313. _output.autoTabLn("else");
  314. _output.autoTabLn("{");
  315. _output.tabLevel++;
  316. _output.autoTabLn("return Request.CreateResponse(HttpStatusCode.BadRequest);");
  317. _output.tabLevel--;
  318. _output.autoTabLn("}");
  319. _output.tabLevel--;
  320. _output.autoTabLn("}");
  321. _output.autoTabLn("");
  322. _output.autoTabLn("/// <summary>");
  323. _output.autoTabLn("/// Delete the selected Product.");
  324. _output.autoTabLn("/// </summary>");
  325. _output.autoTabLn("/// <param name=\"id\">Id</param>");
  326. _output.autoTabLn("/// <returns></returns>");
  327. _output.autoTabLn("/// ");
  328. _output.autoTabLn("[Authorize]");
  329. _output.autoTabLn("public HttpResponseMessage Delete(int id)");
  330. _output.autoTabLn("{");
  331. _output.tabLevel++;
  332. _output.autoTabLn("T model = _service.GetById(id);");
  333. _output.autoTabLn("if (model == null)");
  334. _output.autoTabLn("{");
  335. _output.tabLevel++;
  336. _output.autoTabLn("return Request.CreateResponse(HttpStatusCode.NotFound);");
  337. _output.tabLevel--;
  338. _output.autoTabLn("}");
  339. _output.autoTabLn("");
  340. _output.autoTabLn("try");
  341. _output.autoTabLn("{");
  342. _output.tabLevel++;
  343. _output.autoTabLn("_service.Delete(model);");
  344. _output.autoTabLn("_unitOfWork.Db.Commit();");
  345. _output.tabLevel--;
  346. _output.autoTabLn("}");
  347. _output.autoTabLn("catch (Exception)");
  348. _output.autoTabLn("{");
  349. _output.tabLevel++;
  350. _output.autoTabLn("return Request.CreateResponse(HttpStatusCode.NotFound);");
  351. _output.tabLevel--;
  352. _output.autoTabLn("}");
  353. _output.autoTabLn("");
  354. _output.autoTabLn("return Request.CreateResponse(HttpStatusCode.OK, model);");
  355. _output.tabLevel--;
  356. _output.autoTabLn("}");
  357. _output.autoTabLn("#endregion");
  358. _output.tabLevel--;
  359. _output.autoTabLn("");
  360. _output.autoTabLn("}");
  361. _output.tabLevel--;
  362. _output.autoTabLn("");
  363. _output.autoTabLn("");
  364. _output.autoTabLn("}");
  365. _context.FileList.Add(" api\\BaseController.cs");
  366. SaveOutput(CreateFullPath(_script.Settings.UI.UINamespace + "\\Controllers\\api", "BaseController.cs"), SaveActions.DontOverwrite);
  367. }
  368. private void BuildControllerCodeTemplate()
  369. {
  370. // Am I building a PIA patterned code template, no. (false)
  371. bool useDtos = false;
  372. if (_autoMapperFramework != null)
  373. useDtos = true;
  374. ICodeTemplateBuilder builder;
  375. if (_criteria == null)
  376. {
  377. builder = new KingsMvcServiceLibraryCodeTemplatesForDbContext(_context, false, useDtos);
  378. builder.RenderControllerTemplate();
  379. builder.RenderAspNetViewTemplates();
  380. builder.RenderRazorViewTemplates();
  381. builder.RenderWebApiTemplates();
  382. }
  383. else
  384. {
  385. if (_criteria.MvcVersion >= 5.0)
  386. {
  387. builder = new KingsMvc5ServiceLibraryCodeTemplatesForDbContext(_context, _criteria);
  388. builder.RenderControllerTemplate();
  389. builder.RenderAspNetViewTemplates();
  390. builder.RenderRazorViewTemplates();
  391. builder.RenderWebApiTemplates();
  392. }
  393. else
  394. {
  395. builder = new KingsMvcServiceLibraryCodeTemplatesForDbContext(_context, false, useDtos);
  396. builder.RenderControllerTemplate();
  397. builder.RenderAspNetViewTemplates();
  398. builder.RenderRazorViewTemplates();
  399. builder.RenderWebApiTemplates();
  400. }
  401. }
  402. }
  403. private void CreateJsonResponseClass()
  404. {
  405. _hdrUtil.WriteClassHeader(_output);
  406. _output.autoTabLn("using System;");
  407. _output.autoTabLn("using System.Collections.Generic;");
  408. _output.autoTabLn("using System.Linq;");
  409. _output.autoTabLn("using System.Web;");
  410. _output.autoTabLn("");
  411. _output.autoTabLn("namespace " + _script.Settings.UI.UINamespace + ".ViewData");
  412. _output.autoTabLn("{");
  413. _output.tabLevel++;
  414. _output.autoTabLn("public class JsonResponse");
  415. _output.autoTabLn("{");
  416. _output.tabLevel++;
  417. _output.autoTabLn("public bool Success { get; set; }");
  418. _output.autoTabLn("public string Message { get; set; }");
  419. _output.autoTabLn("public bool Exists { get; set; }");
  420. _output.tabLevel--;
  421. _output.autoTabLn("}");
  422. _output.tabLevel--;
  423. _output.autoTabLn("}");
  424. _context.FileList.Add(" JsonResponse.cs");
  425. SaveOutput(CreateFullPath(_script.Settings.UI.UINamespace + "\\ViewData", "JsonResponse.cs"), SaveActions.DontOverwrite);
  426. }
  427. private void CreateConfigSettingsClass()
  428. {
  429. _hdrUtil.WriteClassHeader(_output);
  430. _output.autoTabLn("using System;");
  431. _output.autoTabLn("using System.Configuration;");
  432. _output.autoTabLn("");
  433. _output.autoTabLn("namespace " + _script.Settings.Namespace + ".Core");
  434. _output.autoTabLn("{");
  435. _output.tabLevel++;
  436. _output.autoTabLn("public class ConfigSettings");
  437. _output.autoTabLn("{");
  438. _output.tabLevel++;
  439. _output.autoTabLn("public static string SiteTitle { get { return ConfigurationManager.AppSettings[\"SiteTitle\"]; } }");
  440. _output.autoTabLn("public static string MetaKeywords { get { return ConfigurationManager.AppSettings[\"MetaKeywords\"]; } }");
  441. _output.autoTabLn("public static string MetaDescription { get { return ConfigurationManager.AppSettings[\"MetaDescription\"]; } }");
  442. _output.autoTabLn("public static string FromEmail { get { return ConfigurationManager.AppSettings[\"FromEmail\"]; } }");
  443. _output.tabLevel--;
  444. _output.autoTabLn("}");
  445. _output.tabLevel--;
  446. _output.autoTabLn("}");
  447. _context.FileList.Add(" ConfigSettings.cs");
  448. SaveOutput(CreateFullPath(_script.Settings.Namespace + ".Core", "ConfigSettings.cs"), SaveActions.DontOverwrite);
  449. }
  450. private void CreateCommonClass()
  451. {
  452. _hdrUtil.WriteClassHeader(_output);
  453. _output.autoTabLn("using System.Web;");
  454. _output.autoTabLn("");
  455. _output.autoTabLn("namespace " + _script.Settings.Namespace + ".Core");
  456. _output.autoTabLn("{");
  457. _output.tabLevel++;
  458. _output.autoTabLn("public class Common");
  459. _output.autoTabLn("{");
  460. _output.tabLevel++;
  461. _output.autoTabLn("public static string GetSiteUrl()");
  462. _output.autoTabLn("{");
  463. _output.tabLevel++;
  464. _output.autoTabLn("HttpContext current = HttpContext.Current;");
  465. _output.autoTabLn("string str = current.Request.ServerVariables[\"SERVER_PORT\"];");
  466. _output.autoTabLn("switch (str)");
  467. _output.autoTabLn("{");
  468. _output.tabLevel++;
  469. _output.autoTabLn("case null:");
  470. _output.autoTabLn("case \"80\":");
  471. _output.autoTabLn("case \"443\":");
  472. _output.tabLevel++;
  473. _output.autoTabLn("str = \"\";");
  474. _output.autoTabLn("break;");
  475. _output.tabLevel--;
  476. _output.autoTabLn("");
  477. _output.autoTabLn("default:");
  478. _output.tabLevel++;
  479. _output.autoTabLn("str = \":\" + str;");
  480. _output.autoTabLn("break;");
  481. _output.tabLevel--;
  482. _output.autoTabLn("}");
  483. _output.autoTabLn("string str2 = current.Request.ServerVariables[\"SERVER_PORT_SECURE\"];");
  484. _output.autoTabLn("switch (str2)");
  485. _output.autoTabLn("{");
  486. _output.tabLevel++;
  487. _output.autoTabLn("case null:");
  488. _output.autoTabLn("case \"0\":");
  489. _output.tabLevel++;
  490. _output.autoTabLn("str2 = \"http://\";");
  491. _output.autoTabLn("break;");
  492. _output.tabLevel--;
  493. _output.autoTabLn("");
  494. _output.autoTabLn("default:");
  495. _output.tabLevel++;
  496. _output.autoTabLn("str2 = \"https://\";");
  497. _output.autoTabLn("break;");
  498. _output.tabLevel--;
  499. _output.autoTabLn("}");
  500. _output.autoTabLn("string applicationPath = current.Request.ApplicationPath;");
  501. _output.autoTabLn("if (applicationPath == \"/\")");
  502. _output.autoTabLn("{");
  503. _output.tabLevel++;
  504. _output.autoTabLn("applicationPath = \"\";");
  505. _output.tabLevel--;
  506. _output.autoTabLn("}");
  507. _output.autoTabLn("return (str2 + current.Request.ServerVariables[\"SERVER_NAME\"] + str + applicationPath);");
  508. _output.tabLevel--;
  509. _output.autoTabLn("}");
  510. _output.tabLevel--;
  511. _output.autoTabLn("}");
  512. _output.tabLevel--;
  513. _output.autoTabLn("}");
  514. _context.FileList.Add(" Common.cs");
  515. SaveOutput(CreateFullPath(_script.Settings.Namespace + ".Core", "Common.cs"), SaveActions.DontOverwrite);
  516. }
  517. private void BuildViewDataFactory()
  518. {
  519. _hdrUtil.WriteClassHeader(_output);
  520. _output.autoTabLn("namespace " + _script.Settings.UI.UINamespace + ".ViewData");
  521. _output.autoTabLn("{");
  522. _output.tabLevel++;
  523. _output.autoTabLn("public class ViewDataFactory : BaseViewDataBuilder");
  524. _output.autoTabLn("{");
  525. _output.tabLevel++;
  526. _output.autoTabLn("public static T CreateBaseViewData<T>(string pageTitle) where T : BaseViewData, new()");
  527. _output.autoTabLn("{");
  528. _output.tabLevel++;
  529. _output.autoTabLn("T viewData = CreateViewData<T>(pageTitle);");
  530. _output.autoTabLn("");
  531. _output.autoTabLn("return viewData;");
  532. _output.tabLevel--;
  533. _output.autoTabLn("}");
  534. _output.tabLevel--;
  535. _output.autoTabLn("}");
  536. _output.tabLevel--;
  537. _output.autoTabLn("}");
  538. _context.FileList.Add(" ViewDataFactory.cs");
  539. SaveOutput(CreateFullPath(_script.Settings.UI.UINamespace + "\\ViewData", "ViewDataFactory.cs"), SaveActions.DontOverwrite);
  540. }
  541. private void BuildBaseViewDataBuilderClass()
  542. {
  543. _hdrUtil.WriteClassHeader(_output);
  544. _output.autoTabLn("using " + _script.Settings.Namespace + ".Core;");
  545. _output.autoTabLn("");
  546. _output.autoTabLn("namespace " + _script.Settings.UI.UINamespace + ".ViewData");
  547. _output.autoTabLn("{");
  548. _output.tabLevel++;
  549. _output.autoTabLn("public class BaseViewDataBuilder");
  550. _output.autoTabLn("{");
  551. _output.tabLevel++;
  552. _output.autoTabLn("public static T CreateViewData<T>(string pageTitle) where T : BaseViewData, new()");
  553. _output.autoTabLn("{");
  554. _output.tabLevel++;
  555. _output.autoTabLn("T viewData = new T");
  556. _output.autoTabLn("{");
  557. _output.tabLevel++;
  558. _output.autoTabLn("SiteTitle = ConfigSettings.SiteTitle,");
  559. _output.autoTabLn("MetaKeywords = ConfigSettings.MetaKeywords,");
  560. _output.autoTabLn("MetaDescription = ConfigSettings.MetaDescription,");
  561. _output.autoTabLn("PageTitle = pageTitle");
  562. _output.tabLevel--;
  563. _output.autoTabLn("};");
  564. _output.autoTabLn("return viewData;");
  565. _output.tabLevel--;
  566. _output.autoTabLn("}");
  567. _output.tabLevel--;
  568. _output.autoTabLn("}");
  569. _output.tabLevel--;
  570. _output.autoTabLn("}");
  571. _context.FileList.Add(" BaseViewDataBuilder.cs");
  572. SaveOutput(CreateFullPath(_script.Settings.UI.UINamespace + "\\ViewData", "BaseViewDataBuilder.cs"), SaveActions.DontOverwrite);
  573. }
  574. private void BuildBaseViewDataClass()
  575. {
  576. _hdrUtil.WriteClassHeader(_output);
  577. _output.autoTabLn("namespace " + _script.Settings.UI.UINamespace + ".ViewData");
  578. _output.autoTabLn("{");
  579. _output.tabLevel++;
  580. _output.autoTabLn("public abstract class BaseViewData");
  581. _output.autoTabLn("{");
  582. _output.tabLevel++;
  583. _output.autoTabLn("public string SiteTitle { get; set; }");
  584. _output.autoTabLn("public string MetaKeywords { get; set; }");
  585. _output.autoTabLn("public string MetaDescription { get; set; }");
  586. _output.autoTabLn("public string PageTitle { get; set; }");
  587. _output.autoTabLn("public bool IsAdmin { get; set; }");
  588. _output.tabLevel--;
  589. _output.autoTabLn("}");
  590. _output.tabLevel--;
  591. _output.autoTabLn("}");
  592. _context.FileList.Add(" BaseViewData.cs");
  593. SaveOutput(CreateFullPath(_script.Settings.UI.UINamespace + "\\ViewData", "BaseViewData.cs"), SaveActions.DontOverwrite);
  594. }
  595. private void BuildViewDataClass(MyMeta.ITable table, bool useUIDtos)
  596. {
  597. _hdrUtil.WriteClassHeader(_output);
  598. _output.autoTabLn("using System;");
  599. _output.autoTabLn("using System.Collections.Generic;");
  600. _output.autoTabLn("using System.Linq;");
  601. _output.autoTabLn("using System.Web;");
  602. _output.autoTabLn("");
  603. if (useUIDtos)
  604. {
  605. _output.autoTabLn("using " + _script.Settings.UI.UINamespace + ".Models;");
  606. }
  607. else
  608. {
  609. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace + ";");
  610. }
  611. _output.autoTabLn("");
  612. _output.autoTabLn("namespace " + _script.Settings.UI.UINamespace + ".ViewData");
  613. _output.autoTabLn("{");
  614. _output.tabLevel++;
  615. _output.autoTabLn("public class " + StringFormatter.CleanUpClassName(table.Name) + "ViewData : BaseViewData");
  616. _output.autoTabLn("{");
  617. _output.tabLevel++;
  618. _output.autoTabLn("public " + StringFormatter.CleanUpClassName(table.Name) + ((useUIDtos) ? "Model" : "") + " " + StringFormatter.CleanUpClassName(table.Name) + " { get; set; }");
  619. _output.autoTabLn("public List<" + StringFormatter.CleanUpClassName(table.Name) + ((useUIDtos) ? "Model" : "") + "> " + StringFormatter.CleanUpClassName(table.Name) + "List { get; set; }");
  620. _output.tabLevel--;
  621. _output.autoTabLn("}");
  622. _output.tabLevel--;
  623. _output.autoTabLn("}");
  624. _context.FileList.Add(" " + StringFormatter.CleanUpClassName(table.Name) + "ViewData.cs");
  625. SaveOutput(CreateFullPath(_script.Settings.UI.UINamespace + "\\ViewData", StringFormatter.CleanUpClassName(table.Name) + "ViewData.cs"), SaveActions.DontOverwrite);
  626. }
  627. #endregion
  628. }
  629. }