PageRenderTime 39ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/CmsWeb/Areas/OnlineReg/Models/OnlineReg/OnlineRegModel.cs

https://bitbucket.org/rbhakser/bvcms
C# | 314 lines | 301 code | 13 blank | 0 comment | 57 complexity | f1bd2b6e62f11b1b0a80ac1b8b778412 MD5 | raw file
Possible License(s): CC-BY-SA-3.0, Apache-2.0, BSD-3-Clause, AGPL-3.0, MPL-2.0-no-copyleft-exception
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Data.Linq;
  6. using System.Reflection;
  7. using System.Web;
  8. using System.Xml;
  9. using System.Xml.Linq;
  10. using System.Xml.Schema;
  11. using System.Xml.Serialization;
  12. using CmsData;
  13. using CmsData.API;
  14. using CmsData.Registration;
  15. using UtilityExtensions;
  16. using CmsData.Codes;
  17. namespace CmsWeb.Models
  18. {
  19. [Serializable]
  20. public partial class OnlineRegModel : IXmlSerializable
  21. {
  22. public bool? testing { get; set; }
  23. public string URL { get; set; }
  24. private int? _masterorgid;
  25. public int? masterorgid
  26. {
  27. get { return _masterorgid; }
  28. set
  29. {
  30. _masterorgid = value;
  31. if (value > 0)
  32. ParseSettings();
  33. }
  34. }
  35. private int? _Orgid;
  36. public int? orgid
  37. {
  38. get { return _Orgid; }
  39. set
  40. {
  41. _Orgid = value;
  42. if (value > 0)
  43. {
  44. CheckMasterOrg();
  45. ParseSettings();
  46. }
  47. }
  48. }
  49. private int? _Divid;
  50. public int? divid
  51. {
  52. get { return _Divid; }
  53. set
  54. {
  55. _Divid = value;
  56. if (value > 0)
  57. ParseSettings();
  58. }
  59. }
  60. private int? _tranId;
  61. public int? TranId
  62. {
  63. get { return _tranId; }
  64. set
  65. {
  66. _tranId = value;
  67. _Transaction = null;
  68. }
  69. }
  70. public int? classid { get; set; }
  71. public string username { get; set; }
  72. public bool nologin { get; set; }
  73. public decimal? donation { get; set; }
  74. public int? donor { get; set; }
  75. public int? UserPeopleId { get; set; }
  76. private string _Registertag;
  77. public string registertag
  78. {
  79. get { return _Registertag; }
  80. set { _Registertag = value; }
  81. }
  82. private List<OnlineRegPersonModel> list = new List<OnlineRegPersonModel>();
  83. public List<OnlineRegPersonModel> List
  84. {
  85. get { return list; }
  86. set { list = value; }
  87. }
  88. [XmlIgnore]
  89. public string password { get; set; }
  90. public XmlSchema GetSchema()
  91. {
  92. throw new NotImplementedException();
  93. }
  94. public void ReadXml(XmlReader reader)
  95. {
  96. var s = reader.ReadOuterXml();
  97. var x = XDocument.Parse(s);
  98. if (x.Root == null) return;
  99. foreach (var e in x.Root.Elements())
  100. {
  101. var name = e.Name.ToString();
  102. switch (name)
  103. {
  104. case "List":
  105. foreach(var ee in e.Elements())
  106. list.Add(Util.DeSerialize<OnlineRegPersonModel>(ee.ToString()));
  107. break;
  108. default:
  109. Util.SetPropertyFromText(this, name, e.Value);
  110. break;
  111. }
  112. }
  113. }
  114. public void WriteXml(XmlWriter writer)
  115. {
  116. var w = new APIWriter(writer);
  117. writer.WriteComment(DateTime.Now.ToString());
  118. foreach (PropertyInfo pi in typeof(OnlineRegModel).GetProperties(BindingFlags.Public | BindingFlags.Instance)
  119. .Where(vv => vv.CanRead && vv.CanWrite))
  120. {
  121. Debug.WriteLine(pi.Name);
  122. switch (pi.Name)
  123. {
  124. case "List":
  125. w.Start("List");
  126. foreach(var i in list)
  127. Util.Serialize(i, writer);
  128. w.End();
  129. break;
  130. case "password":
  131. break;
  132. default:
  133. w.Add(pi.Name, pi.GetValue(this, null));
  134. break;
  135. }
  136. }
  137. }
  138. public OnlineRegModel()
  139. {
  140. HttpContext.Current.Items["OnlineRegModel"] = this;
  141. }
  142. public bool ShowFindInstructions;
  143. public bool ShowLoginInstructions;
  144. public bool ShowOtherInstructions;
  145. private CmsData.Division _div;
  146. public CmsData.Division div
  147. {
  148. get
  149. {
  150. if (_div == null && divid.HasValue)
  151. _div = DbUtil.Db.Divisions.SingleOrDefault(d => d.Id == divid);
  152. return _div;
  153. }
  154. }
  155. public void ParseSettings()
  156. {
  157. if (HttpContext.Current.Items.Contains("RegSettings"))
  158. return;
  159. var list = new Dictionary<int, Settings>();
  160. if (_Divid.HasValue)
  161. {
  162. var q = from o in DbUtil.Db.Organizations
  163. where o.DivOrgs.Any(od => od.DivId == divid)
  164. where o.OrganizationStatusId == OrgStatusCode.Active
  165. where (o.RegistrationClosed ?? false) == false
  166. where o.RegistrationTypeId != RegistrationTypeCode.None
  167. select new { o.OrganizationId, o.RegSetting };
  168. foreach (var i in q)
  169. list[i.OrganizationId] = new Settings(i.RegSetting, DbUtil.Db, i.OrganizationId);
  170. }
  171. else if (masterorgid.HasValue)
  172. {
  173. var q = from o in UserSelectClasses(masterorg)
  174. select new { o.OrganizationId, o.RegSetting };
  175. foreach (var i in q)
  176. list[i.OrganizationId] = new Settings(i.RegSetting, DbUtil.Db, i.OrganizationId);
  177. list[masterorg.OrganizationId] = new Settings(masterorg.RegSetting, DbUtil.Db, masterorg.OrganizationId);
  178. }
  179. else if (org == null)
  180. return;
  181. else
  182. list[_Orgid.Value] = new Settings(org.RegSetting, DbUtil.Db, _Orgid.Value);
  183. if (HttpContext.Current.Items.Contains("RegSettings"))
  184. return;
  185. HttpContext.Current.Items.Add("RegSettings", list);
  186. if (org != null && org.AddToSmallGroupScript.HasValue())
  187. {
  188. var script = DbUtil.Db.Content(org.AddToSmallGroupScript);
  189. if (script != null && script.Body.HasValue())
  190. {
  191. try
  192. {
  193. var pe = new PythonEvents(DbUtil.Db, "RegisterEvent", script.Body);
  194. HttpContext.Current.Items.Add("PythonEvents", pe);
  195. }
  196. catch (Exception ex)
  197. {
  198. org.AddToExtraData("Python.errors", ex.Message);
  199. throw;
  200. }
  201. }
  202. }
  203. }
  204. public static Settings ParseSetting(string RegSetting, int OrgId)
  205. {
  206. return new Settings(RegSetting, DbUtil.Db, OrgId);
  207. }
  208. private Organization _masterorg;
  209. public Organization masterorg
  210. {
  211. get
  212. {
  213. if (_masterorg != null)
  214. return _masterorg;
  215. if (masterorgid.HasValue)
  216. _masterorg = DbUtil.Db.LoadOrganizationById(masterorgid.Value);
  217. return _masterorg;
  218. }
  219. }
  220. public void CheckMasterOrg()
  221. {
  222. if (org != null && masterorgid == null &&
  223. (org.RegistrationTypeId == RegistrationTypeCode.UserSelectsOrganization2
  224. || org.RegistrationTypeId == RegistrationTypeCode.ComputeOrganizationByAge2
  225. || org.RegistrationTypeId == RegistrationTypeCode.ManageSubscriptions2))
  226. {
  227. _masterorg = org;
  228. masterorgid = orgid;
  229. _Orgid = null;
  230. _org = null;
  231. }
  232. }
  233. private CmsData.Organization _org;
  234. public CmsData.Organization org
  235. {
  236. get
  237. {
  238. if (_org == null && orgid.HasValue)
  239. if (orgid == Util.CreateAccountCode)
  240. _org = CreateAccountOrg();
  241. else
  242. _org = DbUtil.Db.LoadOrganizationById(orgid.Value);
  243. return _org;
  244. }
  245. }
  246. private Transaction _Transaction;
  247. public Transaction Transaction
  248. {
  249. get
  250. {
  251. if (_Transaction == null && TranId.HasValue)
  252. _Transaction = DbUtil.Db.Transactions.SingleOrDefault(tt => tt.Id == TranId);
  253. return _Transaction;
  254. }
  255. }
  256. private Person _User;
  257. public Person user
  258. {
  259. get
  260. {
  261. if (_User == null && UserPeopleId.HasValue)
  262. _User = DbUtil.Db.LoadPersonById(UserPeopleId.Value);
  263. return _User;
  264. }
  265. }
  266. private CmsData.Meeting _meeting;
  267. public CmsData.Meeting meeting()
  268. {
  269. if (_meeting == null)
  270. {
  271. var q = from m in DbUtil.Db.Meetings
  272. where m.Organization.OrganizationId == orgid
  273. where m.MeetingDate > Util.Now.AddHours(-12)
  274. orderby m.MeetingDate
  275. select m;
  276. _meeting = q.FirstOrDefault();
  277. }
  278. return _meeting;
  279. }
  280. public void CreateList()
  281. {
  282. List = new List<OnlineRegPersonModel>
  283. {
  284. new OnlineRegPersonModel
  285. {
  286. divid = divid,
  287. orgid = orgid,
  288. masterorgid = masterorgid,
  289. LoggedIn = false,
  290. #if DEBUG
  291. first = "David",
  292. last = "Roll",
  293. dob = "5/30/52",
  294. email = "david@bvcms.com",
  295. phone = "",
  296. #endif
  297. }
  298. };
  299. }
  300. }
  301. }