PageRenderTime 53ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/UserInterface/Stakeholder/add/StakeholderApiController.cs

https://github.com/tiaohai/collosys
C# | 422 lines | 323 code | 74 blank | 25 comment | 35 complexity | a555e339bdc10088619672005cd7b87b MD5 | raw file
  1. #region references
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Net.Http;
  7. using System.Web.Http;
  8. using AngularUI.Shared.apis;
  9. using ColloSys.DataLayer.Domain;
  10. using ColloSys.DataLayer.Enumerations;
  11. using ColloSys.QueryBuilder.GenericBuilder;
  12. using ColloSys.QueryBuilder.StakeholderBuilder;
  13. using ColloSys.UserInterface.Areas.Stakeholder2.Models;
  14. using NHibernate;
  15. using NHibernate.Linq;
  16. using NLog;
  17. using Newtonsoft.Json.Linq;
  18. #endregion
  19. //stakeholders calls changed
  20. //hierarchy calls changed
  21. //namespace UserInterfaceAngular.app
  22. namespace ColloSys.UserInterface.Areas.Stakeholder2.api
  23. {
  24. public class StakeholderApiController : BaseApiController<Stakeholders>
  25. {
  26. private readonly Logger _log = LogManager.GetCurrentClassLogger();
  27. private static readonly HierarchyQueryBuilder HierarchyQuery = new HierarchyQueryBuilder();
  28. private static readonly StakeQueryBuilder StakeQuery = new StakeQueryBuilder();
  29. private static readonly AddressQueryBuilder AddressQuery = new AddressQueryBuilder();
  30. private static readonly StakePaymentQueryBuilder StakePaymentBuilder = new StakePaymentQueryBuilder();
  31. private static readonly StakeWorkingQueryBuilder StakeWorkingBuilder = new StakeWorkingQueryBuilder();
  32. private static readonly ProductConfigBuilder ProductConfigBuilder = new ProductConfigBuilder();
  33. private static readonly GPincodeBuilder GPincodeBuilder = new GPincodeBuilder();
  34. [HttpGet]
  35. public IEnumerable<StkhHierarchy> GetAllHierarchies()
  36. {
  37. return HierarchyQuery.FilterBy(x => x.Hierarchy != "Developer");
  38. }
  39. [HttpGet]
  40. public bool UserIdVal(string userid)
  41. {
  42. var listOfuserId = StakeQuery.FilterBy(x => x.ExternalId == userid).ToList();
  43. return listOfuserId.Count != 0;
  44. }
  45. [HttpGet]
  46. public IEnumerable<string> UserIdList()
  47. {
  48. return StakeQuery.GetAll().Select(x => x.ExternalId).As<List<String>>();
  49. }
  50. [HttpGet]
  51. public bool CheckUserId(string id)
  52. {
  53. var idExists = StakeQuery.FilterBy(x => x.ExternalId == id);
  54. return (idExists.Count > 0);
  55. }
  56. [HttpGet]
  57. public IEnumerable<ScbEnums.Products> GetProducts()
  58. {
  59. return ProductConfigBuilder.GetProducts();
  60. }
  61. [HttpGet]
  62. public IEnumerable<string> VariableLinerPolicies()
  63. {
  64. return new[] { "Collection Policy1", "Collection Policy2", "Collection Policy3" };
  65. }
  66. [HttpGet]
  67. public IEnumerable<string> VariableWriteoffPolicies()
  68. {
  69. return new[] { "Recovery Policy1", "Recovery Policy2", "Recovery Policy3" };
  70. }
  71. [HttpGet]
  72. public IEnumerable<int> GetBucketList()
  73. {
  74. _log.Info("In getBucket list");
  75. return new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  76. }
  77. [HttpGet]
  78. public StkhHierarchy GetHierarchyWithId(Guid hierarchyId)
  79. {
  80. _log.Info("In load hierarchy with id");
  81. var data = HierarchyQuery.FilterBy(x => x.Id == hierarchyId)
  82. .Select(x => x);
  83. return data.First();
  84. }
  85. [HttpGet]
  86. public IEnumerable<string> GetStateList()
  87. {
  88. return GPincodeBuilder.StateList();
  89. }
  90. [HttpGet]
  91. public IEnumerable<GPincode> GetPincodes(string pincode, string level)
  92. {
  93. return level == "City" ? GetPincodesCity(pincode) : GetPincodesArea(pincode);
  94. }
  95. [HttpGet]
  96. public IEnumerable<GPincode> GetClusters(string cluster)
  97. {
  98. return GetClusterList(cluster);
  99. }
  100. [HttpGet]
  101. public string GetRegionOfState(string state)
  102. {
  103. var data = GetRegionOnState(state);
  104. return data;
  105. }
  106. [HttpGet]
  107. public IEnumerable<Stakeholders> GetReportingList(string reportsTo, string hierarchy)
  108. {
  109. var data = GetReportsToList(reportsTo, hierarchy);
  110. if (data != null)
  111. _log.Info("Reports to list loaded in StakeholderApi/GetReportingList");
  112. return data;
  113. }
  114. [HttpGet]
  115. public IEnumerable<Stakeholders> GetReportsToInHierarchy(Guid reportsto)
  116. {
  117. var data = GetReportsToList(reportsto);
  118. if (data != null)
  119. _log.Info("Reports to list loaded in StakeholderApi/GetReportingList");
  120. return data;
  121. }
  122. [HttpPost]
  123. public HttpResponseMessage SaveStakeholder(Stakeholders stakeholders)
  124. {
  125. var usersList = UsersIDList();
  126. if (stakeholders.ExternalId != null)
  127. {
  128. var isUserIdExist = usersList.Any(x => x == stakeholders.ExternalId);
  129. if (isUserIdExist)
  130. {
  131. //var message = "User already registered with this UserId";
  132. var obj = new JObject { { "Message", "User already registered with this UserId" } };
  133. return Request.CreateResponse(HttpStatusCode.BadRequest, obj);
  134. }
  135. }
  136. try
  137. {
  138. //save stakeholder here
  139. //if (DateTime.MinValue == stakeholders.BirthDate)
  140. //stakeholders.BirthDate = null;
  141. Save(stakeholders);
  142. _log.Info("Stakeholder is saved in StakeholderApi/Save");
  143. var result =
  144. Request.CreateResponse(HttpStatusCode.Created, stakeholders);
  145. return result;
  146. }
  147. catch (Exception ex)
  148. {
  149. _log.Error(ex.Message);
  150. return Request.
  151. CreateErrorResponse(HttpStatusCode.BadRequest, ex);
  152. }
  153. }
  154. [HttpPost]
  155. public HttpResponseMessage DeleteLists(IList<ListValue> list)
  156. {
  157. _log.Info("In StakeholderApi/DeleteLists");
  158. try
  159. {
  160. if (ModelState.IsValid)
  161. {
  162. var paymentlist = ListValueConvert.ConvertList(list, "Payment");
  163. var addresslist = ListValueConvert.ConvertList(list, "Address");
  164. var workinglist = ListValueConvert.ConvertList(list, "Working");
  165. DeleteList(addresslist, paymentlist, workinglist);
  166. var result =
  167. Request.CreateResponse(HttpStatusCode.Created);
  168. return result;
  169. }
  170. return Request.
  171. CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
  172. }
  173. catch (Exception ex)
  174. {
  175. _log.Error(ex.Message);
  176. return Request.
  177. CreateErrorResponse(HttpStatusCode.BadRequest, ex);
  178. }
  179. }
  180. [HttpGet]
  181. public IEnumerable<string> ListOfUserID()
  182. {
  183. var data = UsersIDList();
  184. if (data != null)
  185. _log.Info("List of user id loaded in Stakeholder/ListOfUserID");
  186. return data;
  187. }
  188. #region
  189. private static IEnumerable<GPincode> GetClusterList(string cluster)
  190. {
  191. try
  192. {
  193. var list = GPincodeBuilder.OnCluster(cluster);
  194. if (list.Count == 0) return null;
  195. return list.OrderBy(x => x.Key).Take(10).Select(entry => entry.First()).ToList();
  196. }
  197. catch (HibernateException exception)
  198. {
  199. LogManager.GetCurrentClassLogger().InfoException("Error while fetching Pincode list.", exception);
  200. throw;
  201. }
  202. }
  203. private static IEnumerable<GPincode> GetPincodesCity(string pin)
  204. {
  205. var list = GPincodeBuilder.OnPinOrCity(pin).ToList();
  206. if (list.Count == 0) return null;
  207. var uniq = (from l in list group l by l.City into g select g.First()).ToList();
  208. uniq.RemoveAll(x => x.City.Trim().Equals("-"));
  209. return uniq.Take(10);
  210. }
  211. private static IEnumerable<GPincode> GetPincodesArea(string pin)
  212. {
  213. var list = GPincodeBuilder.OnPinOrArea(pin).ToList();
  214. if (list.Count == 0) return null;
  215. var uniq = (from l in list group l by l.Area into g select g.First()).ToList();
  216. uniq.RemoveAll(x => x.City.Trim().Equals("-"));
  217. return uniq.Take(10);
  218. }
  219. private static string GetRegionOnState(string state)
  220. {
  221. return GPincodeBuilder.RegionOnState(state);
  222. }
  223. private static IEnumerable<Stakeholders> GetReportsToList(string reportsTo, string hierarchy)
  224. {
  225. var data = StakeQuery.FilterBy(x => x.Hierarchy.Designation == reportsTo && x.Hierarchy.Hierarchy == hierarchy)
  226. .Select(x => x).ToList();
  227. LogManager.GetCurrentClassLogger()
  228. .Info("StakeholderServices: Total Count for ReportsTo List " + data.Count());
  229. return data;
  230. }
  231. private static IEnumerable<Stakeholders> GetReportsToList(Guid hierarchyId)
  232. {
  233. var data = StakeQuery.OnHieararchyIdWithPayments(hierarchyId).ToList();
  234. if (data.Any() && (data.First().ReportingManager != Guid.Empty))
  235. {
  236. var reporttoId = data[0].ReportingManager;
  237. if (reporttoId != Guid.Empty)
  238. {
  239. var stakeholder = StakeQuery.OnIdWithAllReferences(reporttoId).Hierarchy.Id;
  240. var onelevelupperlist = StakeQuery.OnHierarchyId(stakeholder).ToList();
  241. data.AddRange(onelevelupperlist);
  242. }
  243. }
  244. LogManager.GetCurrentClassLogger()
  245. .Info("StakeholderServices: Total Count for ReportsTo List " + data.Count());
  246. return data;
  247. }
  248. private static void DeleteList(IEnumerable<Guid> addresslist, IEnumerable<Guid> paymentlist, IEnumerable<Guid> working)
  249. {
  250. foreach (var guid in addresslist)
  251. {
  252. AddressQuery.Delete(AddressQuery.Load(guid));
  253. }
  254. foreach (var guid in paymentlist)
  255. {
  256. StakePaymentBuilder.Delete(StakePaymentBuilder.Load(guid));
  257. }
  258. foreach (var guid in working)
  259. {
  260. StakeWorkingBuilder.Delete(StakeWorkingBuilder.Load(guid));
  261. }
  262. }
  263. private static IEnumerable<string> UsersIDList()
  264. {
  265. return StakeQuery.GetAll().Select(x => x.ExternalId).ToList();
  266. }
  267. #region save
  268. private static void Save(Stakeholders stakeholders)
  269. {
  270. stakeholders = SetStakeholder(stakeholders);
  271. StakeQuery.Save(stakeholders);
  272. if (stakeholders.GAddress.Any())
  273. {
  274. var listOfAddresses = SetGAddress(stakeholders);
  275. foreach (var gAddress in listOfAddresses)
  276. {
  277. AddressQuery.Save(gAddress);
  278. }
  279. }
  280. }
  281. private static IEnumerable<StakeAddress> SetGAddress(Stakeholders stakeholders)
  282. {
  283. var gAddresses = stakeholders.GAddress;
  284. foreach (var gAddress in gAddresses)
  285. {
  286. //gAddress.Source = "Stakeholder";
  287. gAddress.Country = "India";
  288. // gAddress.SourceId = stakeholders.Id;
  289. }
  290. return gAddresses;
  291. }
  292. private static Stakeholders SetStakeholder(Stakeholders stakeholders)
  293. {
  294. //set payment
  295. SetPayment(stakeholders);
  296. //set working
  297. SetWorking(stakeholders);
  298. //set registration
  299. SetRegistration(stakeholders);
  300. return stakeholders;
  301. }
  302. private static void SetRegistration(Stakeholders stakeholders)
  303. {
  304. if (stakeholders.StkhRegistrations.Any())
  305. {
  306. foreach (var stkhRegistration in stakeholders.StkhRegistrations)
  307. {
  308. stkhRegistration.Stakeholder = stakeholders;
  309. }
  310. }
  311. }
  312. private static void SetPayment(Stakeholders stakeholders)
  313. {
  314. if (stakeholders.StkhPayments.Any())
  315. {
  316. foreach (var stkhPayment in stakeholders.StkhPayments)
  317. {
  318. stkhPayment.Stakeholder = stakeholders;
  319. }
  320. }
  321. }
  322. private static void SetWorking(Stakeholders stakeholders)
  323. {
  324. if (stakeholders.StkhWorkings.Any())
  325. {
  326. foreach (var gWorking in stakeholders.StkhWorkings)
  327. {
  328. gWorking.Stakeholder = stakeholders;
  329. }
  330. }
  331. }
  332. #endregion
  333. #endregion
  334. }
  335. }
  336. //var hiegherhierarchyId = session.Query<StakeHierarchy>()
  337. // .Where(x => x.ReportsTo == reporttoId)
  338. // .Select(x => x.Id).Single();
  339. //Stakeholders stake = null;
  340. //StkhPayment payment = null;
  341. //var listStake = session.QueryOver<Stakeholders>(() => stake)
  342. // .Fetch(x => x.StkhPayments).Eager
  343. // .JoinAlias(() => stake.StkhPayments, () => payment, JoinType.LeftOuterJoin)
  344. // .Where(() => stake.HierarchyId == stakeholder)
  345. // .And(() => stake.LeavingDate == null || stake.LeavingDate < DateTime.Now)
  346. // //.And(() => payment.StartDate < DateTime.Now)
  347. // //.And(() => payment.EndDate > DateTime.Now)
  348. // .List();