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

/App_Code/StaffRmb/StaffRmb.cs

https://github.com/mailekah/AgapeConnect1
C# | 350 lines | 283 code | 63 blank | 4 comment | 111 complexity | 5428a7ca0f4ec63b14556eba285736fb MD5 | raw file
Possible License(s): BSD-3-Clause, Apache-2.0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. /// <summary>
  6. /// Summary description for StaffRmb
  7. /// </summary>
  8. ///
  9. namespace StaffRmb
  10. {
  11. public static class RmbReceiptMode
  12. {
  13. public const int Disabled = 0;
  14. public const int NoVAT = 1;
  15. public const int VAT = 2;
  16. static public string ModeName(int ModeNo)
  17. {
  18. switch (ModeNo)
  19. {
  20. case 0: return "Disabled";
  21. case 1: return "NoVAT";
  22. case 2: return "VAT";
  23. default: return "Unknown";
  24. }
  25. }
  26. }
  27. public static class RmbStatus
  28. {
  29. public const int Draft = 0;
  30. public const int Submitted = 1;
  31. public const int Approved = 2;
  32. public const int Processed = 3;
  33. public const int Cancelled = 4;
  34. public const int MoreInfo = 5;
  35. public const int PendingDownload = 10;
  36. public const int DownloadFailed = 20;
  37. static public string StatusName(int StatusNo)
  38. {
  39. switch (StatusNo)
  40. {
  41. case 0: return "Draft";
  42. case 1: return "Submitted";
  43. case 2: return "Approved";
  44. case 3: return "Processed";
  45. case 4: return "Cancelled";
  46. case 5: return "MoreInfo";
  47. case 10: return "PendingDownload";
  48. case 20: return "DownloadFailed";
  49. default: return "Unknown";
  50. }
  51. }
  52. }
  53. public static class RmbAccess
  54. {
  55. public const int Denied = 0;
  56. public const int Owner = 1;
  57. public const int Spouse = 2;
  58. public const int Approver = 3;
  59. public const int Leader = 4;
  60. public const int Accounts = 5;
  61. static public string StatusName(int StatusNo)
  62. {
  63. switch (StatusNo)
  64. {
  65. case 0: return "Denied";
  66. case 1: return "Owner";
  67. case 2: return "Spouse";
  68. case 3: return "Approver";
  69. case 4: return "Leader";
  70. case 5: return "Accounts";
  71. default: return "Denied";
  72. }
  73. }
  74. }
  75. public class StaffRmbFunctions
  76. {
  77. public struct Approvers
  78. {
  79. public List<DotNetNuke.Entities.Users.UserInfo> UserIds;
  80. public Boolean CCMSpecial, SpouseSpecial, AmountSpecial, isDept;
  81. public string Name;
  82. }
  83. public StaffRmbFunctions()
  84. {
  85. }
  86. static public Approvers getApprovers(AP_Staff_Rmb rmb, DotNetNuke.Entities.Users.UserInfo authUser, DotNetNuke.Entities.Users.UserInfo authAuthUser)
  87. {
  88. StaffBroker.StaffBrokerDataContext dStaff = new StaffBroker.StaffBrokerDataContext();
  89. Approvers rtn = new Approvers();
  90. var st = StaffBrokerFunctions.GetStaffMember(rmb.UserId);
  91. rtn.Name = st.DisplayName;
  92. int SpouseId = StaffBrokerFunctions.GetSpouseId(rmb.UserId);
  93. rtn.AmountSpecial = (from c in rmb.AP_Staff_RmbLines where c.LargeTransaction == true select c).Count() > 0;
  94. rtn.isDept = (rmb.CostCenter != st.CostCenter);
  95. rtn.SpouseSpecial = false;
  96. rtn.UserIds = new List<DotNetNuke.Entities.Users.UserInfo>();
  97. if (rtn.isDept)
  98. {
  99. var cc = from c in dStaff.AP_StaffBroker_Departments where (c.CostCentre == rmb.CostCenter) && c.PortalId == rmb.PortalId select c;
  100. rtn.CCMSpecial = (from c in cc
  101. where ((c.CostCentreManager == null && c.CostCentreDelegate == null) == false) &&
  102. (
  103. ((c.CostCentreManager != rmb.UserId) && (c.CostCentreManager != SpouseId)) ||
  104. ((c.CostCentreDelegate != rmb.UserId) && (c.CostCentreDelegate != SpouseId))
  105. )
  106. select c.CostCenterId).Count() == 0;
  107. if (rtn.CCMSpecial || rtn.AmountSpecial || rtn.SpouseSpecial)
  108. {
  109. rtn.UserIds.Add(authUser.UserID == rmb.UserId ? authAuthUser : authUser);
  110. if (cc.First().CostCentreManager == rtn.UserIds.First().UserID || cc.First().CostCentreDelegate == rtn.UserIds.First().UserID)
  111. {
  112. rtn.AmountSpecial = false;
  113. rtn.CCMSpecial = false;
  114. }
  115. }
  116. else
  117. {
  118. if (cc.First().CostCentreManager != rmb.UserId && cc.First().CostCentreManager != SpouseId && cc.First().CostCentreManager != null)
  119. rtn.UserIds.Add(DotNetNuke.Entities.Users.UserController.GetUserById(rmb.PortalId, (int)cc.First().CostCentreManager));
  120. if (cc.First().CostCentreDelegate != rmb.UserId && cc.First().CostCentreDelegate != SpouseId && cc.First().CostCentreDelegate != null)
  121. rtn.UserIds.Add(DotNetNuke.Entities.Users.UserController.GetUserById(rmb.PortalId, (int)cc.First().CostCentreDelegate));
  122. }
  123. if (cc.Count() > 0)
  124. rtn.Name = cc.First().Name;
  125. }
  126. else
  127. {
  128. rtn.CCMSpecial = false;
  129. var app2 = StaffBrokerFunctions.GetLeaders(rmb.UserId, true);
  130. rtn.SpouseSpecial = (app2.Count() == 1 && ((app2.First() == SpouseId) || (app2.First() == rmb.UserId)));
  131. if (rtn.AmountSpecial || rtn.SpouseSpecial || app2.Count() == 0)
  132. {
  133. rtn.UserIds.Add(authUser.UserID == rmb.UserId ? authAuthUser : authUser);
  134. if (app2.Contains(rtn.UserIds.First().UserID))
  135. {
  136. rtn.AmountSpecial = false;
  137. }
  138. }
  139. else
  140. {
  141. foreach (int i in (from c in app2 where c != rmb.UserId && c != SpouseId select c))
  142. rtn.UserIds.Add(DotNetNuke.Entities.Users.UserController.GetUserById(rmb.PortalId, i));
  143. }
  144. }
  145. if(rtn.UserIds.Count()==0)
  146. rtn.UserIds.Add(authUser.UserID == rmb.UserId ? authAuthUser : authUser);
  147. return rtn;
  148. }
  149. static public Approvers getAdvApprovers(AP_Staff_AdvanceRequest adv, double LargeTransaction, DotNetNuke.Entities.Users.UserInfo authUser, DotNetNuke.Entities.Users.UserInfo authAuthUser)
  150. {
  151. StaffBroker.StaffBrokerDataContext dStaff = new StaffBroker.StaffBrokerDataContext();
  152. Approvers rtn = new Approvers();
  153. var st = StaffBrokerFunctions.GetStaffMember((int)adv.UserId );
  154. rtn.Name = st.DisplayName;
  155. int SpouseId = StaffBrokerFunctions.GetSpouseId((int)adv.UserId);
  156. rtn.AmountSpecial = ((double)adv.RequestAmount)>LargeTransaction ;
  157. rtn.SpouseSpecial = false;
  158. rtn.UserIds = new List<DotNetNuke.Entities.Users.UserInfo>();
  159. var app2 = StaffBrokerFunctions.GetLeaders((int)adv.UserId, true);
  160. rtn.SpouseSpecial = (app2.Count() == 1 && ((app2.First() == SpouseId) || (app2.First() == (int)adv.UserId)));
  161. if (rtn.AmountSpecial || rtn.SpouseSpecial || app2.Count() == 0)
  162. {
  163. rtn.UserIds.Add(authUser.UserID == adv.UserId ? authAuthUser : authUser);
  164. if (app2.Contains((authUser.UserID == adv.UserId ? (authAuthUser.UserID) : authUser.UserID)))
  165. {
  166. rtn.AmountSpecial = false;
  167. }
  168. }
  169. else
  170. {
  171. foreach (int i in (from c in app2 where c != adv.UserId && c != SpouseId select c))
  172. rtn.UserIds.Add(DotNetNuke.Entities.Users.UserController.GetUserById(adv.PortalId, i));
  173. }
  174. return rtn;
  175. }
  176. static public int GetNewRID(int PortalId)
  177. {
  178. string NextRID = StaffBrokerFunctions.GetSetting("NextRID", PortalId);
  179. if (NextRID == "")
  180. {
  181. StaffRmbDataContext d = new StaffRmbDataContext();
  182. var MaxRID = (from c in d.AP_Staff_Rmbs where c.PortalId == PortalId select c.RID);
  183. if (MaxRID.Count() == 0)
  184. {
  185. StaffBrokerFunctions.SetSetting("NextRID", "2", PortalId);
  186. return 1;
  187. }
  188. else
  189. {
  190. StaffBrokerFunctions.SetSetting("NextRID", (MaxRID.Max() + 1).ToString(), PortalId);
  191. return MaxRID.First();
  192. }
  193. }
  194. else
  195. {
  196. StaffBrokerFunctions.SetSetting("NextRID", (Convert.ToInt32(NextRID) + 1).ToString(), PortalId);
  197. return Convert.ToInt32( NextRID);
  198. }
  199. }
  200. static public int GetNewAdvId(int PortalId)
  201. {
  202. string NextAdvID = StaffBrokerFunctions.GetSetting("NextAdvID", PortalId);
  203. if (NextAdvID == "")
  204. {
  205. StaffRmbDataContext d = new StaffRmbDataContext();
  206. var MaxAdvID = (from c in d.AP_Staff_AdvanceRequests where c.PortalId == PortalId select c.LocalAdvanceId);
  207. if (MaxAdvID.Count() == 0)
  208. {
  209. StaffBrokerFunctions.SetSetting( "NextAdvID", "2", PortalId);
  210. return 1;
  211. }
  212. else
  213. {
  214. StaffBrokerFunctions.SetSetting("NextAdvID", (MaxAdvID.Max() + 1).ToString(), PortalId);
  215. return (int) MaxAdvID.First();
  216. }
  217. }
  218. else
  219. {
  220. StaffBrokerFunctions.SetSetting("NextAdvID", (Convert.ToInt32(NextAdvID) + 1).ToString(), PortalId);
  221. return Convert.ToInt32(NextAdvID);
  222. }
  223. }
  224. static public int Authenticate(int UserId, int RmbNo, int PortalId )
  225. {
  226. StaffRmbDataContext d = new StaffRmbDataContext();
  227. var rmb = from c in d.AP_Staff_Rmbs where c.RMBNo == RmbNo && c.PortalId == PortalId select c;
  228. if (rmb.Count() > 0)
  229. {
  230. if (rmb.First().UserId == UserId)
  231. return RmbAccess.Owner;
  232. else if (rmb.First().ApprUserId == UserId)
  233. return RmbAccess.Approver;
  234. else
  235. {
  236. var spouseId = StaffBrokerFunctions.GetSpouseId(UserId);
  237. if (rmb.First().UserId == spouseId)
  238. return RmbAccess.Spouse;
  239. else
  240. {
  241. var team = from c in StaffBrokerFunctions.GetTeam(UserId) select c.UserID;
  242. string pcc = StaffBrokerFunctions.GetStaffMember(UserId).CostCenter;
  243. if (rmb.First().CostCenter == pcc)
  244. {
  245. if (team.Contains(rmb.First().UserId))
  246. return RmbAccess.Approver;
  247. }
  248. else
  249. {
  250. var depts = from c in StaffBrokerFunctions.GetDepartments(UserId) select c.CostCentre;
  251. if (depts.Contains(rmb.First().CostCenter))
  252. return RmbAccess.Approver;
  253. else if (team.Contains(rmb.First().UserId))
  254. return RmbAccess.Leader;
  255. }
  256. }
  257. }
  258. }
  259. return RmbAccess.Denied;
  260. }
  261. static public int AuthenticateAdv(int UserId, int AdvanceId, int PortalId)
  262. {
  263. StaffRmbDataContext d = new StaffRmbDataContext();
  264. var adv = from c in d.AP_Staff_AdvanceRequests where c.AdvanceId == AdvanceId && c.PortalId == PortalId select c;
  265. if (adv.Count() > 0)
  266. {
  267. if (adv.First().UserId == UserId)
  268. return RmbAccess.Owner;
  269. else if (adv.First().ApproverId == UserId)
  270. return RmbAccess.Approver;
  271. else
  272. {
  273. var spouseId = StaffBrokerFunctions.GetSpouseId(UserId);
  274. if (adv.First().UserId == spouseId)
  275. return RmbAccess.Spouse;
  276. else
  277. {
  278. var team = from c in StaffBrokerFunctions.GetTeam(UserId) select c.UserID;
  279. if (team.Contains((int)(adv.First().UserId)) )
  280. return RmbAccess.Approver;
  281. }
  282. }
  283. }
  284. return RmbAccess.Denied;
  285. }
  286. }
  287. }