You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

415 lines
17 KiB

1 year ago
10 months ago
1 year ago
1 year ago
8 months ago
1 year ago
8 months ago
1 year ago
8 months ago
1 year ago
8 months ago
1 year ago
  1. using Business.Authentication;
  2. using Business.Mobile;
  3. using Common;
  4. using Common.Model;
  5. using Common.Model.Config;
  6. using Common.Model.CustomerRegister;
  7. using Common.Model.Remit;
  8. using JsonRx.AuthFilter;
  9. using JsonRx.Helper;
  10. using log4net;
  11. using Newtonsoft.Json;
  12. using System;
  13. using System.Linq;
  14. using System.Web;
  15. using System.Web.Http;
  16. using System.Web.Http.ModelBinding;
  17. namespace JsonRx.Api
  18. {
  19. /// <summary>
  20. /// </summary>
  21. [RoutePrefix("api/v1")]
  22. public class CustomerController : ApiController
  23. {
  24. private readonly IMobileServices _requestServices;
  25. private readonly IAuthenticationBusiness _authenticationBusiness;
  26. private static readonly ILog Log = LogManager.GetLogger(typeof(CustomerController));
  27. public CustomerController()
  28. {
  29. }
  30. /// <summary>
  31. /// </summary>
  32. /// <param name="requestServices"></param>
  33. /// <param name="authenticationBusiness"></param>
  34. public CustomerController(IMobileServices requestServices, IAuthenticationBusiness authenticationBusiness)
  35. {
  36. _requestServices = requestServices;
  37. _authenticationBusiness = authenticationBusiness;
  38. }
  39. /// <summary>
  40. /// </summary>
  41. /// <param name="registerParam"></param>
  42. /// <returns></returns>
  43. [HttpPost]
  44. [ApplicationLevelAuthentication]
  45. [Route("mobile/oldUserAccessRequest")]
  46. public IHttpActionResult OldUserAccessRequest(OldUserAccessRequestModel oldUserAccessRequest)
  47. {
  48. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  49. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "oldUserAccessRequest";
  50. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = oldUserAccessRequest.IdNumber;
  51. Log.Debug("OldUserAccessRequest | REQUEST : " + JsonConvert.SerializeObject(oldUserAccessRequest));
  52. Validate(oldUserAccessRequest);
  53. if (ModelState.IsValid)
  54. {
  55. var custRegisterResponse = _requestServices.OldUserAccessRequest(oldUserAccessRequest);
  56. return Ok(custRegisterResponse);
  57. }
  58. return ModelValidationError(ModelState);
  59. }
  60. /// <summary>
  61. /// </summary>
  62. /// <param name="registerParam"></param>
  63. /// <returns></returns>
  64. [HttpPost]
  65. [ApplicationLevelAuthentication]
  66. [Route("mobile/oldUserRegister")]
  67. public IHttpActionResult OldUserRegister(OldUserRegisterModel oldUserRegister)
  68. {
  69. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  70. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = oldUserRegister.UserId;
  71. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "OldUserRegister";
  72. //CallContext.SetData(Constants.FcmId,registerParam.fcmId);
  73. Log.Debug("OldUserRegister | REQUEST : " + JsonConvert.SerializeObject(oldUserRegister));
  74. Validate(oldUserRegister);
  75. if (ModelState.IsValid)
  76. {
  77. var custRegisterResponse = _requestServices.OldUserRegister(oldUserRegister);
  78. if (custRegisterResponse.ErrorCode == "0")
  79. {
  80. var fcmid = oldUserRegister.fcmId;
  81. var lang = Util.getJWTTokenClaim(Request.GetJWTToken(), "language");
  82. // Task.Run(() => FcmNotifier.Notify(fcmid, Languages.GetMessage("registration_success", lang), Languages.GetTitle("registration", lang)));
  83. }
  84. return Ok(custRegisterResponse);
  85. }
  86. return ModelValidationError(ModelState);
  87. }
  88. /// <summary>
  89. /// </summary>
  90. /// <param name="registerParam"></param>
  91. /// <returns></returns>
  92. [HttpPost]
  93. [ApplicationLevelAuthentication]
  94. [Route("mobile/newUserRegister")]
  95. public IHttpActionResult NewUserRegister(NewUserRegisterModel newUserRegister)
  96. {
  97. var processid = Guid.NewGuid().ToString();
  98. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = processid;
  99. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = newUserRegister.UserId;
  100. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "NewUserRegister";
  101. Log.Debug("NewUserRegister | REQUEST : " + JsonConvert.SerializeObject(newUserRegister));
  102. JsonRxResponse res = new JsonRxResponse();
  103. if (string.IsNullOrEmpty(newUserRegister.UserId))
  104. {
  105. res.SetResponse("100", "Email is required!");
  106. return Ok(res);
  107. }
  108. Validate(newUserRegister);
  109. if (ModelState.IsValid)
  110. {
  111. // newUserRegister.phoneOs = Util.GetDeviceType(Request);
  112. newUserRegister.FullName= newUserRegister.FullName.ToTitleCase(TitleCase.All);
  113. var custRegisterResponse = _requestServices.NewUserRegister(newUserRegister);
  114. Log.Debug("NewUserRegister | RESPONSE : " + JsonConvert.SerializeObject(custRegisterResponse));
  115. return Ok(custRegisterResponse);
  116. }
  117. return ModelValidationError(ModelState,"100");
  118. }
  119. /// <summary>
  120. /// </summary>
  121. /// <returns></returns>
  122. [HttpPost]
  123. [TokenAuthentication]
  124. [Route("mobile/RenewID")]
  125. public IHttpActionResult RenewID()
  126. {
  127. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  128. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "RenewID";
  129. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = HttpContext.Current.Request["userId"];
  130. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "RenewID";
  131. //CallContext.SetData(Constants.FcmId, "");
  132. Log.Debug("RenewID | " + HttpContext.Current.Request["userId"]);
  133. var kycResponse = _requestServices.RenewID();
  134. return Ok(kycResponse);
  135. }
  136. /// <summary>
  137. /// </summary>
  138. /// <returns></returns>
  139. [HttpPost]
  140. [TokenAuthentication]
  141. [Route("mobile/DepositSlip")]
  142. public IHttpActionResult DepositSlip()
  143. {
  144. DepositSlip request = new DepositSlip();
  145. request.UserId= HttpContext.Current.Request["userId"];
  146. request.Amount = HttpContext.Current.Request["Amount"];
  147. request.Remarks = HttpContext.Current.Request["Remarks"];
  148. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  149. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "DepositSlip";
  150. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = request.UserId;
  151. Log.Debug("DepositSlip | " + JsonConvert.SerializeObject(request));
  152. var depositResponse = _requestServices.DepositSlip(request);
  153. return Ok(depositResponse);
  154. }
  155. ///// <summary>
  156. ///// </summary>
  157. ///// <param name="search"></param>
  158. ///// <param name="userId"></param>
  159. ///// <returns></returns>
  160. //[HttpPost]
  161. //[TokenAuthentication]
  162. //[Route("mobile/DepositSlipHistory/{userId}")]
  163. //public IHttpActionResult GetDepositSlipHistory(DateFilterParams search, string userId)
  164. //{
  165. // LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  166. // LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = userId;
  167. // LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GetDepositSlipHistory";
  168. // Log.Debug("GetDepositSlipHistory | REQUEST : " + userId);
  169. // var tranHistoryResponse = _requestServices.GetTransactionHistory(search, userId);
  170. // return Ok(tranHistoryResponse);
  171. //}
  172. /// <summary>
  173. /// </summary>
  174. /// <returns></returns>
  175. [HttpPost]
  176. [TokenAuthentication]
  177. [Route("mobile/RegisterKyc")]
  178. public IHttpActionResult RegisterKyc()
  179. {
  180. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  181. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "RegisterKyc";
  182. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = HttpContext.Current.Request["userId"];
  183. LogicalThreadContext.Properties[LoggerProperty.IPADDRESS] = HttpContext.Current.Request["TrustDocId"] != null ? HttpContext.Current.Request["TrustDocId"] : "";
  184. //Log.Debug("RegisterKyc | REQUEST : " + HttpContext.Current.Request["userId"]);
  185. //var fcmid = Util.getJWTTokenClaim(Request.GetJWTToken(), "ClientFcmId");
  186. var kycResponse = _requestServices.RegisterKYC(Util.GetDeviceType(Request));
  187. return Ok(kycResponse);
  188. }
  189. /// <summary>
  190. /// </summary>
  191. /// <returns></returns>
  192. [HttpPost]
  193. [TokenAuthentication]
  194. [Route("mobile/RegisterKycExistingCustomer")]
  195. public IHttpActionResult RegisterKycExistingCustomer()
  196. {
  197. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  198. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "RegisterKyc";
  199. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = HttpContext.Current.Request["userId"];
  200. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "RegisterKycExistingCustomer";
  201. //CallContext.SetData(Constants.FcmId, "");
  202. Log.Debug("RegisterKycExistingCustomer | REQUEST : " + HttpContext.Current.Request["userId"]);
  203. var kycResponse = _requestServices.RegisterKycExistingCustomer();
  204. return Ok(kycResponse);
  205. }
  206. /// <summary>
  207. /// </summary>
  208. /// <returns></returns>
  209. [HttpPost]
  210. [TokenAuthentication]
  211. [Route("mobile/changeTxnPin")]
  212. public IHttpActionResult ChangeTxnPin(ChangeTxnPinModel changeTxnPin)
  213. {
  214. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  215. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = changeTxnPin.UserId;
  216. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "ChangeTxnPin";
  217. //CallContext.SetData(Constants.FcmId, "");
  218. Log.Debug("ChangeTxnPin | REQUEST : " + JsonConvert.SerializeObject(changeTxnPin));
  219. var kycResponse = _requestServices.ChangeTxnPin(changeTxnPin);
  220. return Ok(kycResponse);
  221. }
  222. /// <summary>
  223. /// </summary>
  224. /// <returns></returns>
  225. [HttpPost]
  226. [TokenAuthentication]
  227. [Route("mobile/changePasswordAndTxnPin")]
  228. public IHttpActionResult ChangePasswordAndTxnPin(ChangePasswordAndTxnPinModel changePasswordAndTxnPin)
  229. {
  230. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  231. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = changePasswordAndTxnPin.UserId;
  232. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "ChangePasswordAndTxnPin";
  233. //CallContext.SetData(Constants.FcmId, "");
  234. Log.Debug("ChangePasswordAndTxnPin | REQUEST : " + JsonConvert.SerializeObject(changePasswordAndTxnPin));
  235. var kycResponse = _requestServices.ChangePasswordAndTxnPin(changePasswordAndTxnPin);
  236. return Ok(kycResponse);
  237. }
  238. /// <summary>
  239. /// </summary>
  240. /// <param name="user"></param>
  241. /// <returns></returns>
  242. [HttpPost]
  243. [TokenAuthentication]
  244. [Route("mobile/CustomerProfile")]
  245. public IHttpActionResult RefreshCustomerInformation(UserModel user)
  246. {
  247. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  248. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = user.UserId;
  249. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "RefreshCustomerInformation";
  250. LogicalThreadContext.Properties[LoggerProperty.IPADDRESS] = Request.GetClientIpAddress();
  251. Log.Debug("RefreshCustomerInformation | REQUEST : " + JsonConvert.SerializeObject(user));
  252. JsonRxResponse custResponse = new JsonRxResponse();
  253. if (user == null)
  254. {
  255. user = new UserModel();
  256. }
  257. if (string.IsNullOrEmpty(user.UserId))
  258. {
  259. custResponse.ErrorCode = "1";
  260. custResponse.Msg = "UserId is missing.";
  261. return Ok(custResponse);
  262. }
  263. custResponse = _requestServices.RefreshCustomerInformation(user);
  264. return Ok(custResponse);
  265. }
  266. /// <summary>
  267. /// </summary>
  268. /// <param name="customer"></param>
  269. /// <param name="search"></param>
  270. /// <returns></returns>
  271. [HttpGet]
  272. [TokenAuthentication]
  273. [Route("mobile/{customer}/receivers")]
  274. public IHttpActionResult GetReceiversByCustomer(string customer, [FromUri] string search)
  275. {
  276. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  277. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = customer;
  278. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GetReceiversByCustomer";
  279. Log.Debug("GetReceiversByCustomer | REQUEST : " + customer);
  280. Log.Debug("GetReceiversByCustomer | REQUEST : " + customer);
  281. var customerId = Util.GetCustomerId(Request);
  282. var lsReceivers = _requestServices.GetReceiversByCustomer(customer, customerId, search);
  283. return Ok(lsReceivers);
  284. }
  285. [HttpPost]
  286. [TokenAuthentication]
  287. [Route("mobile/ChangeSettings")]
  288. public IHttpActionResult ChangeSettings(ChangeSettingModel changeSettings)
  289. {
  290. LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
  291. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = changeSettings.UserId;
  292. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "ChangeSettings";
  293. //CallContext.SetData(Constants.FcmId, "");
  294. Log.Debug("ChangeSettings | REQUEST : " + JsonConvert.SerializeObject(changeSettings));
  295. ModelState.Clear();
  296. // changeSettings.uuid = Util.GetUuid(Request);
  297. string token = Guid.NewGuid().ToString();
  298. changeSettings.guid = token;
  299. int SettingTypeInt;
  300. int.TryParse(changeSettings.SettingType.ToString(), out SettingTypeInt);
  301. JsonRxResponse res = new JsonRxResponse();
  302. if (Enum.IsDefined(typeof(SettingType), changeSettings.SettingType)
  303. || Enum.IsDefined(typeof(SettingType), SettingTypeInt))
  304. {
  305. if (changeSettings.SettingType == SettingType.FINGER_PRINT_LOGIN)
  306. {
  307. if (changeSettings.Flag && string.IsNullOrEmpty(changeSettings.Password))
  308. {
  309. res.ErrorCode = "1";
  310. res.Msg = "Password is required.";
  311. return Ok(res);
  312. }
  313. res = _requestServices.ChangeSettings(changeSettings);
  314. }
  315. }
  316. else
  317. {
  318. res.ErrorCode = "1";
  319. res.Msg = "SettingType is Invalid.";
  320. Log.Info("ChangeSettings | RESPONSE : " + JsonConvert.SerializeObject(res));
  321. return Ok(res);
  322. }
  323. return Ok(res);
  324. }
  325. /// <summary>
  326. /// </summary>
  327. /// <param name="modelState"></param>
  328. /// <returns></returns>
  329. protected IHttpActionResult ModelValidationError(ModelStateDictionary modelState, string error="")
  330. {
  331. var modelErrors = modelState.Select(x => x.Value.Errors)
  332. .Where(y => y.Count > 0)
  333. .First()[0].ErrorMessage;
  334. JsonRxResponse jsonRx = new JsonRxResponse()
  335. {
  336. ErrorCode = error??"1",
  337. Msg = string.IsNullOrEmpty(modelErrors) ? "It seems like incorrect Json input(s)." : modelErrors,
  338. Data = ""
  339. };
  340. return Ok(jsonRx);
  341. }
  342. /// <summary>
  343. /// </summary>
  344. /// <param name="referralCode"></param>
  345. /// <returns></returns>
  346. [HttpPost]
  347. [ApplicationLevelAuthentication]
  348. [Route("mobile/validateReferralCode")]
  349. public IHttpActionResult ValidateReferralCode(validateReferralCodeRequest request)
  350. {
  351. LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = request.referralCode;
  352. LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "ValidateReferralCode";
  353. LogicalThreadContext.Properties[LoggerProperty.IPADDRESS] = Request.GetClientIpAddress();
  354. Log.Debug("ValidateReferralCode | REQUEST : " + JsonConvert.SerializeObject(request));
  355. if (ModelState.IsValid)
  356. {
  357. var response = _requestServices.ValidateReferralCode(request.referralCode);
  358. return Ok(response);
  359. }
  360. return ModelValidationError(ModelState);
  361. }
  362. }
  363. }