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.

490 lines
20 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
1 year ago
1 year ago
  1. using Common;
  2. using Common.Helper;
  3. using Common.Model;
  4. using Common.Model.Config;
  5. using Common.Model.MobileV2;
  6. using log4net;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Data;
  10. using System.Globalization;
  11. using System.Linq;
  12. using System.Runtime.Remoting.Messaging;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. namespace Repository.MobileV2
  16. {
  17. public class MobileV2Repo : IMobileV2Repo
  18. {
  19. private readonly Dao _dao = new Dao();
  20. private static readonly ILog Log = LogManager.GetLogger(typeof(IMobileV2Repo));
  21. public JsonRxResponse GetReceiverInformationV2(DateFilterParams search, string customerId, string countryid)
  22. {
  23. MyTransferDto myTransferDto = new MyTransferDto() { Receivers = new List<ReceiverV2>(), RecentTransactions = new List<TranHistoryResponse>() };
  24. var lang = Convert.ToString(CallContext.GetData(Constants.Language));
  25. JsonRxResponse jsonRx = new JsonRxResponse();
  26. try
  27. {
  28. var sql = "EXEC PROC_MOBILE_RECEIVER_INFORMATION";
  29. sql += " @flag = " + _dao.FilterString("receiver-info");
  30. sql += ", @customerId = " + _dao.FilterString(customerId);
  31. sql += ", @countryId = " + _dao.FilterString(countryid);
  32. var dataSet = _dao.ExecuteDataset(sql);
  33. List<ReceiverV2> rim = new List<ReceiverV2>();
  34. List<ReceiverV2> receiverInfoModels = new List<ReceiverV2>();
  35. var map = Utilities.GetLanguageMapping(RESPONSE_MSG.GET_RECEIVER_INFORMATION_FAIL_1.ToString(), lang);
  36. if (dataSet.Tables[0].Rows.Count > 0)
  37. {
  38. foreach (DataRow row in dataSet.Tables[0].Rows)
  39. {
  40. var s = GetReceiverInfoModel(row);
  41. receiverInfoModels.Add(s);
  42. }
  43. var grpresulst = receiverInfoModels.GroupBy(g => new { g.fullName, g.mobile })
  44. .Select(g => g.First())
  45. .ToList();
  46. grpresulst.ForEach(z =>
  47. {
  48. z.PaymentMethods = new List<ReceiverPaymentMethod>();
  49. //var r = new ReceiverV2() { fullName = z.fullName, mobile = z.mobile, address = z.address, idNumber = z.idNumber, PaymentMethods = new List<ReceiverPaymentMethod>() };
  50. z.PaymentMethods = receiverInfoModels.Where(a => a.fullName == z.fullName & a.mobile == z.mobile)
  51. .Select(s => new ReceiverPaymentMethod()
  52. {
  53. receiverId = s.receiverId,
  54. id = s.paymentMethod.id,
  55. currency = s.paymentMethod.currency,
  56. localizedName = s.paymentMethod.localizedName,
  57. name = s.paymentMethod.name,
  58. agent = s.agent,
  59. isForceUpdate = s.isForceUpdate,
  60. isPartnerChanged = s.isPartnerChanged,
  61. ForceUpdateMsg = s.ForceUpdateMsg
  62. ,
  63. hasVerifiedOTP = s.hasVerifiedOTP,
  64. nativeCountry = s.nativeCountry,
  65. nativeCountryCode = s.nativeCountryCode,
  66. nativeCountryId = s.nativeCountryId,
  67. payoutPartner = s.payoutPartner
  68. }).ToList();
  69. rim.Add(z);
  70. });
  71. myTransferDto.Receivers = rim;
  72. }
  73. var sql1 = "Exec mobile_proc_TranHistory @flag='tran-history-v2'";
  74. sql1 += ", @customerId =" + _dao.FilterString(customerId);
  75. Log.DebugFormat("GetReceiverInformation | SQL : {0}", sql);
  76. if (search != null)
  77. {
  78. CultureInfo enUS = new CultureInfo("en-US");
  79. if (!string.IsNullOrEmpty(search.FromDate))
  80. {
  81. DateTime FromDate;
  82. if (DateTime.TryParseExact(search.FromDate,"dd/MM/yyyy", enUS, DateTimeStyles.AdjustToUniversal, out FromDate))
  83. {
  84. sql1 += ", @fromDate=" + _dao.FilterString(FromDate.ToString("yyyy-MM-dd"));
  85. }
  86. else
  87. sql1 += ", @fromDate=" + _dao.FilterString(search.FromDate);
  88. }
  89. if (!string.IsNullOrEmpty(search.ToDate))
  90. {
  91. DateTime ToDate;
  92. if (DateTime.TryParseExact(search.ToDate, "dd/MM/yyyy", enUS, DateTimeStyles.AdjustToUniversal, out ToDate))
  93. {
  94. sql1 += ", @toDate=" + _dao.FilterString(ToDate.ToString("yyyy-MM-dd"));
  95. }
  96. else
  97. sql1 += ", @toDate=" + _dao.FilterString(search.ToDate);
  98. }
  99. if (!string.IsNullOrEmpty(search.Page))
  100. sql1 += ", @pageNumber=" + _dao.FilterString(search.Page);
  101. if (!string.IsNullOrEmpty(search.PageCount))
  102. sql1 += ", @pageSize" + _dao.FilterString(search.PageCount);
  103. }
  104. Log.DebugFormat("GetTransactionHistory | SQL : {0}", sql1);
  105. var ds = _dao.ExecuteDataset(sql1);
  106. if (ds == null)
  107. {
  108. myTransferDto.RecentTransactions = null;
  109. }
  110. else
  111. {
  112. if (ds.Tables.Count > 1)
  113. {
  114. DataTable data = ds.Tables[1];
  115. foreach (DataRow dr in data.Rows)
  116. {
  117. TranHistoryResponse tranHistoryResponse = new TranHistoryResponse()
  118. {
  119. User = Convert.ToString(dr["userId"]),
  120. TranId = Convert.ToString(dr["tranId"]),
  121. ControlNo = Convert.ToString(dr["controlNo"]),
  122. CollAmt = Convert.ToString(dr["collAmount"]),
  123. PayoutAmt = Utilities.ShowDecimal(Convert.ToString(dr["payoutAmt"])),
  124. PCurr = Convert.ToString(dr["pCurr"]),
  125. CollCurr = Convert.ToString(dr["collCurr"]),
  126. PayStatus = Convert.ToString(dr["payStatus"]),
  127. PayoutMode = Convert.ToString(dr["payoutMode"]),
  128. SendDate = Convert.ToString(dr["sendDate"]),
  129. PaidDate = Convert.ToString(dr["paidDate"]),
  130. DisplayActions = dr["DisplayActions"].ToString(),
  131. ColorIcon = GetColor(dr["payStatus"].ToString()),
  132. ColorCode = GetColorCode(dr["payStatus"].ToString()),
  133. TextCode= GetTextCode(dr["payStatus"].ToString()),
  134. // PayoutAgent = Convert.ToString(dr["PayoutAgent"]),
  135. };
  136. myTransferDto.RecentTransactions.Add(tranHistoryResponse);
  137. }
  138. }
  139. }
  140. jsonRx.ErrorCode = "0";
  141. jsonRx.Msg = "Success";
  142. jsonRx.Data = myTransferDto;
  143. return jsonRx;
  144. }
  145. catch (Exception e)
  146. {
  147. Log.DebugFormat($"Exception : {e.ToString()}");
  148. jsonRx.ErrorCode = "1";
  149. //jsonRx.Msg = "Failed";
  150. //var map = Utilities.GetLanguageMapping(RESPONSE_MSG.GET_RECEIVER_INFORMATION_FAIL_2.ToString(), lang);
  151. jsonRx.Msg = $"Exception has occured at GetReceiverInformationV2";
  152. return jsonRx;
  153. }
  154. }
  155. private string GetColor(string status)
  156. {
  157. if (status.Equals("AWAITING PAYMENT") || status.Equals("PENDING"))
  158. {
  159. return "Blue";
  160. }
  161. else if (status.Equals("PROCESSING"))
  162. {
  163. return "Brown";
  164. }
  165. else if (status.Equals("PAID"))
  166. {
  167. return "Green";
  168. }
  169. else if (status.Equals("CANCELLED"))
  170. {
  171. return "Red";
  172. }
  173. else
  174. return "Blue";
  175. }
  176. private string GetColorCode(string status)
  177. {
  178. if (status.Equals("AWAITING PAYMENT") || status.Equals("PENDING"))
  179. {
  180. return "#514e82";
  181. }
  182. else if (status.Equals("PROCESSING"))
  183. {
  184. return "#AF804F";
  185. }
  186. else if (status.Equals("PAID"))
  187. {
  188. return "#008000";
  189. }
  190. else if (status.Equals("CANCELLED"))
  191. {
  192. return "#FF0000";
  193. }
  194. else
  195. return "#514e82";
  196. // return "#FF0000";
  197. }
  198. private string GetTextCode(string status)
  199. {
  200. if (status.Equals("AWAITING PAYMENT") || status.Equals("PENDING"))
  201. {
  202. return "#FFFFFF";
  203. }
  204. else if (status.Equals("PROCESSING"))
  205. {
  206. return "#262262";
  207. }
  208. else if (status.Equals("PAID"))
  209. {
  210. return "#FFFFFF";
  211. }
  212. else if (status.Equals("CANCELLED"))
  213. {
  214. return "#FFFFFF";
  215. }
  216. else
  217. return "#FFFFFF";
  218. }
  219. private ReceiverV2 GetReceiverInfoModel(DataRow row)
  220. {
  221. ReceiverInfoBranch b = null;
  222. ReceiverInfoAgent a = null;
  223. ReceiverInfoPaymentmethod p = null;
  224. if (!string.IsNullOrWhiteSpace(Convert.ToString(row["branchId"])))
  225. {
  226. b = new ReceiverInfoBranch();
  227. b.id = Convert.ToString(row["branchId"]);
  228. b.name = Convert.ToString(row["branchName"]);
  229. b.localizedName = Convert.ToString(row["branchLocalizedName"]);
  230. }
  231. //if (!string.IsNullOrWhiteSpace(Convert.ToString(row["bankId"])))
  232. //{
  233. a = new ReceiverInfoAgent();
  234. a.id = Convert.ToString(row["bankId"]);
  235. a.name = Convert.ToString(row["bankName"]);
  236. a.localizedName = Convert.ToString(row["bankLocalizedName"]);
  237. a.accountNo = Convert.ToString(row["accountNo"]);
  238. a.currency = string.IsNullOrWhiteSpace(Convert.ToString(row["bankCurrency"])) ? null : Convert.ToString(row["bankCurrency"]).Split(',');
  239. a.branch = b;
  240. //}
  241. p = new ReceiverInfoPaymentmethod();
  242. //Commented by arjun
  243. if (!string.IsNullOrWhiteSpace(Convert.ToString(row["paymentMethodId"])))
  244. {
  245. var country = Convert.ToString(row["country"]) ?? "English";
  246. //var path = GetStatic.ReadWebConfig("ServiceType_Resource", "");
  247. //var text = File.ReadAllText(path);
  248. //List<ServiceTypeDetails> sd = JsonConvert.DeserializeObject<List<ServiceTypeDetails>>(text);
  249. //var idx = sd.FindIndex(x => x.countryName.ToLower() == country.ToLower());
  250. //var data = new ServiceTypeDetails();
  251. //if (idx < 0)
  252. //{
  253. // data = sd[sd.FindIndex(x => x.countryCode == "en")];
  254. //}
  255. //else
  256. //{
  257. // data = sd[idx];
  258. //}
  259. p.id = Convert.ToString(row["paymentMethodId"]);
  260. p.name = Convert.ToString(row["paymentMethodName"]);
  261. //added by arjun
  262. p.localizedName = Convert.ToString(row["paymentMethodName"]);
  263. //if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Cash Payment".ToLower()))
  264. //{
  265. // p.localizedName = data.cashPayment;
  266. //}
  267. //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Bank Deposit".ToLower()))
  268. //{
  269. // p.localizedName = data.bankDeposit;
  270. //}
  271. //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Mobile Wallet".ToLower()))
  272. //{
  273. // p.localizedName = data.mobileWallet;
  274. //}
  275. //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Home Delivery".ToLower()))
  276. //{
  277. // p.localizedName = data.homeDelivery;
  278. //}
  279. //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Card Payment".ToLower()))
  280. //{
  281. // p.localizedName = data.cardPayment;
  282. //}
  283. p.currency = string.IsNullOrWhiteSpace(Convert.ToString(row["paymentMethodCurrency"])) ? null : Convert.ToString(row["paymentMethodCurrency"]).Split(',');
  284. }
  285. var s = new ReceiverV2();
  286. s.receiverId = Convert.ToString(row["receiverId"]);
  287. s.fullName = Convert.ToString(row["fullName"]);
  288. s.firstName = Convert.ToString(row["firstName"]);
  289. s.middleName = Convert.ToString(row["middleName"]);
  290. s.lastName = Convert.ToString(row["lastName1"]);
  291. s.localFullName = Convert.ToString(row["localizedName"]);
  292. s.country = Convert.ToString(row["country"]);
  293. s.countryId = Convert.ToString(row["countryId"]);
  294. s.countryCode = Convert.ToString(row["countryCode"]);
  295. s.address = Convert.ToString(row["address"]);
  296. s.state = Convert.ToString(row["state"]);
  297. s.stateId = Convert.ToString(row["stateId"]);
  298. s.district = Convert.ToString(row["district"]);
  299. s.districtId = Convert.ToString(row["districtId"]);
  300. s.city = Convert.ToString(row["city"]);
  301. s.email = Convert.ToString(row["email"]);
  302. s.mobile = Convert.ToString(row["mobile"]);
  303. s.relationship = Convert.ToString(row["relationship"]);
  304. s.relationshipId = Convert.ToString(row["relationshipId"]);
  305. s.district = Convert.ToString(row["district"]);
  306. s.purposeOfRemit = Convert.ToString(row["purposeOfRemit"]);
  307. s.purposeOfRemitId = Convert.ToString(row["purposeOfRemitId"]);
  308. s.idType = Convert.ToString(row["idType"]);
  309. s.idTypeId = Convert.ToString(row["idTypeId"]);
  310. s.idNumber = Convert.ToString(row["idNumber"]);
  311. s.localFirstName = Convert.ToString(row["localFirstName"]);
  312. s.localMiddleName = Convert.ToString(row["localMiddleName"]);
  313. s.localLastName = Convert.ToString(row["localLastName1"]);
  314. s.payoutPartner = Convert.ToString(row["payoutPartner"]);
  315. s.nativeCountry = Convert.ToString(row["nativeCountry"]);
  316. s.nativeCountryCode = Convert.ToString(row["nativeCountryCode"]);
  317. s.nativeCountryId = Convert.ToString(row["nativeCountryId"]);
  318. s.hasVerifiedOTP = Convert.ToBoolean(row["isOTPVerified"]);
  319. s.isForceUpdate = Convert.ToString(row["isForceUpdate"]);
  320. if (row.Table.Columns.Contains("IsAccountValidation"))
  321. {
  322. s.IsAccountValidationReq = Convert.ToString(row["IsAccountValidation"]);
  323. }
  324. if (row.Table.Columns.Contains("ApiBankCode"))
  325. {
  326. s.ApiBankCode = Convert.ToString(row["ApiBankCode"]);
  327. }
  328. s.isPartnerChanged = string.IsNullOrEmpty(a.id) ? "1" : "0";
  329. if (s.countryId.Equals("151") && !string.IsNullOrWhiteSpace(p.id) && p.id.Equals("1"))
  330. {
  331. s.isPartnerChanged = "0";
  332. }
  333. else if (s.countryId.Equals("203") && !string.IsNullOrWhiteSpace(p.id) && p.id.Equals("12"))
  334. {
  335. s.isPartnerChanged = "0";
  336. }
  337. if (s.countryId.Equals("151") && !string.IsNullOrWhiteSpace(p.id) && p.id.Equals("2") && !string.IsNullOrWhiteSpace(a.id))
  338. {
  339. s.isPartnerChanged = "0";
  340. }
  341. s.paymentMethod = p;
  342. s.agent = a;
  343. return s;
  344. }
  345. public JsonRxResponse SaveProfile(string username, string url, string fileName, string fileType)
  346. {
  347. // JsonRxResponse jsonRx = new JsonRxResponse();
  348. var sql = "EXEC mobile_proc_customerMaster";
  349. sql += " @flag = " + _dao.FilterString("save-profile");
  350. sql += ", @username = " + _dao.FilterString(username);
  351. sql += ", @url = " + _dao.FilterString(url);
  352. sql += ", @fileType = " + _dao.FilterString(fileType);
  353. sql += ", @fileName = " + _dao.FilterString(fileName);
  354. Log.DebugFormat("SaveProfile | SQL : {0}", sql);
  355. var _dbRes = _dao.ParseDbResult(sql);
  356. return new JsonRxResponse
  357. {
  358. ErrorCode = _dbRes.ResponseCode,
  359. Msg = _dbRes.Msg,
  360. Extra = _dbRes.Id
  361. };
  362. }
  363. public DataRow GetMembershipId(string customerId)
  364. {
  365. var sql = "EXEC mobile_proc_customerMaster @flag= 'get-membershipId'";
  366. sql += ", @userId = " + _dao.FilterString(customerId);
  367. Log.DebugFormat("GetMembershipId | SQL:{0}", sql);
  368. return _dao.ExecuteDataRow(sql);
  369. }
  370. public DataRow GetProfileDetails(string customerId)
  371. {
  372. var sql = "EXEC mobile_proc_customerMaster @flag= 'get-profile-details'";
  373. sql += ", @email = " + _dao.FilterString(customerId);
  374. Log.DebugFormat("GetProfileDetails | SQL:{0}", sql);
  375. return _dao.ExecuteDataRow(sql);
  376. }
  377. public JsonRxResponse SaveKycSettings(KycOption kycOption)
  378. {
  379. var sql = "EXEC JsonRx_Proc_UserRegistration @flag='save-kyc-option'";
  380. sql += ", @username = " + _dao.FilterString(kycOption.UserId);
  381. sql += ", @registrationType = " + _dao.FilterString(kycOption.RegistrationType);
  382. sql += ", @clientId = " + _dao.FilterString(kycOption.Code);
  383. Log.DebugFormat("SaveKycSettings | SQL : {0}", sql);
  384. var _dbRes = _dao.ParseDbResult(sql);
  385. return new JsonRxResponse
  386. {
  387. ErrorCode = _dbRes.ResponseCode,
  388. Msg = _dbRes.Msg,
  389. Extra = _dbRes.Id
  390. };
  391. }
  392. public DataRow GetResidenceType(string customerId)
  393. {
  394. var sql = "EXEC mobile_proc_customerMaster @flag= 'get-ResidenceType'";
  395. sql += ", @username = " + _dao.FilterString(customerId);
  396. Log.DebugFormat("GetMembershipId | SQL:{0}", sql);
  397. return _dao.ExecuteDataRow(sql);
  398. }
  399. public JsonRxResponse UpdateCustomerProfile(CustomerDetailV2 req)
  400. {
  401. var sql = "EXEC mobile_proc_online_customerMaster_V1 @flag= 'update-address'";
  402. sql += ", @customerId = " + _dao.FilterString(req.UserId);
  403. sql += ", @postalCode = " + _dao.FilterString(req.PostalCode);
  404. sql += ", @address1 = " + _dao.FilterString(req.Address1);
  405. sql += ", @address2 = " + _dao.FilterString(req.Address2);
  406. Log.DebugFormat("UpdateProfile | SQL:{0}", sql);
  407. var _dbRes = _dao.ParseDbResult(sql);
  408. return new JsonRxResponse
  409. {
  410. ErrorCode = _dbRes.ResponseCode,
  411. Msg = _dbRes.Msg,
  412. Extra = _dbRes.Id
  413. };
  414. }
  415. }
  416. }