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.

354 lines
15 KiB

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.Linq;
  11. using System.Runtime.Remoting.Messaging;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. namespace Repository.MobileV2
  15. {
  16. public class MobileV2Repo : IMobileV2Repo
  17. {
  18. private readonly Dao _dao = new Dao();
  19. private static readonly ILog Log = LogManager.GetLogger(typeof(IMobileV2Repo));
  20. public JsonRxResponse GetReceiverInformationV2(DateFilterParams search, string customerId, string countryid)
  21. {
  22. MyTransferDto myTransferDto = new MyTransferDto() { Receivers = new List<ReceiverV2>(), RecentTransactions = new List<TranHistoryResponse>() };
  23. var lang = Convert.ToString(CallContext.GetData(Constants.Language));
  24. JsonRxResponse jsonRx = new JsonRxResponse();
  25. try
  26. {
  27. var sql = "EXEC PROC_MOBILE_RECEIVER_INFORMATION";
  28. sql += " @flag = " + _dao.FilterString("receiver-info");
  29. sql += ", @customerId = " + _dao.FilterString(customerId);
  30. sql += ", @countryId = " + _dao.FilterString(countryid);
  31. var dataSet = _dao.ExecuteDataset(sql);
  32. List<ReceiverV2> rim = new List<ReceiverV2>();
  33. List<ReceiverV2> receiverInfoModels = new List<ReceiverV2>();
  34. var map = Utilities.GetLanguageMapping(RESPONSE_MSG.GET_RECEIVER_INFORMATION_FAIL_1.ToString(), lang);
  35. if (dataSet.Tables[0].Rows.Count > 0 )
  36. {
  37. foreach (DataRow row in dataSet.Tables[0].Rows)
  38. {
  39. var s = GetReceiverInfoModel(row);
  40. receiverInfoModels.Add(s);
  41. }
  42. var grpresulst = receiverInfoModels.GroupBy(g => new { g.fullName, g.mobile })
  43. .Select(g => g.First())
  44. .ToList();
  45. grpresulst.ForEach(z =>
  46. {
  47. z.PaymentMethods = new List<ReceiverPaymentMethod>();
  48. //var r = new ReceiverV2() { fullName = z.fullName, mobile = z.mobile, address = z.address, idNumber = z.idNumber, PaymentMethods = new List<ReceiverPaymentMethod>() };
  49. z.PaymentMethods = receiverInfoModels.Where(a => a.fullName == z.fullName & a.mobile == z.mobile)
  50. .Select(s => new ReceiverPaymentMethod() { receiverId = s.receiverId,
  51. id = s.paymentMethod.id, currency = s.paymentMethod.currency, localizedName = s.paymentMethod.localizedName,
  52. name = s.paymentMethod.name, agent = s.agent , isForceUpdate = s.isForceUpdate, isPartnerChanged= s.isPartnerChanged, ForceUpdateMsg= s.ForceUpdateMsg
  53. , hasVerifiedOTP= s.hasVerifiedOTP, nativeCountry= s.nativeCountry, nativeCountryCode= s.nativeCountryCode, nativeCountryId= s.nativeCountryId, payoutPartner= s.payoutPartner}).ToList();
  54. rim.Add(z);
  55. });
  56. myTransferDto.Receivers = rim;
  57. }
  58. var sql1 = "Exec mobile_proc_TranHistory @flag='tran-history-v2'";
  59. sql1 += ", @customerId =" + _dao.FilterString(customerId);
  60. Log.DebugFormat("GetReceiverInformation | SQL : {0}", sql);
  61. if (search != null)
  62. {
  63. if (!string.IsNullOrEmpty(search.FromDate))
  64. sql1 += ", @fromDate=" + _dao.FilterString(search.FromDate);
  65. if (!string.IsNullOrEmpty(search.ToDate))
  66. sql1 += ", @toDate=" + _dao.FilterString(search.ToDate);
  67. if (!string.IsNullOrEmpty(search.Page))
  68. sql1 += ", @pageNumber=" + _dao.FilterString(search.Page);
  69. if (!string.IsNullOrEmpty(search.PageCount))
  70. sql1 += ", @pageSize" + _dao.FilterString(search.PageCount);
  71. }
  72. Log.DebugFormat("GetTransactionHistory | SQL : {0}", sql1);
  73. var ds = _dao.ExecuteDataset(sql1);
  74. if (ds == null)
  75. {
  76. myTransferDto.RecentTransactions = null;
  77. }
  78. else
  79. {
  80. if (ds.Tables.Count > 1)
  81. {
  82. DataTable data = ds.Tables[1];
  83. foreach (DataRow dr in data.Rows)
  84. {
  85. TranHistoryResponse tranHistoryResponse = new TranHistoryResponse()
  86. {
  87. User = Convert.ToString(dr["userId"]),
  88. TranId = Convert.ToString(dr["tranId"]),
  89. ControlNo = Convert.ToString(dr["controlNo"]),
  90. CollAmt = Convert.ToString(dr["collAmount"]),
  91. PayoutAmt = Utilities.ShowDecimal(Convert.ToString(dr["payoutAmt"])),
  92. PCurr = Convert.ToString(dr["pCurr"]),
  93. CollCurr = Convert.ToString(dr["collCurr"]),
  94. PayStatus = Convert.ToString(dr["payStatus"]),
  95. PayoutMode = Convert.ToString(dr["payoutMode"]),
  96. SendDate = Convert.ToString(dr["sendDate"]),
  97. PaidDate = Convert.ToString(dr["paidDate"]),
  98. DisplayActions = dr["DisplayActions"].ToString()
  99. // PayoutAgent = Convert.ToString(dr["PayoutAgent"]),
  100. };
  101. myTransferDto.RecentTransactions.Add(tranHistoryResponse);
  102. }
  103. }
  104. }
  105. jsonRx.ErrorCode = "0";
  106. jsonRx.Msg = "Success";
  107. jsonRx.Data = myTransferDto;
  108. return jsonRx;
  109. }
  110. catch (Exception e)
  111. {
  112. Log.DebugFormat($"Exception : {e.ToString()}");
  113. jsonRx.ErrorCode = "1";
  114. //jsonRx.Msg = "Failed";
  115. //var map = Utilities.GetLanguageMapping(RESPONSE_MSG.GET_RECEIVER_INFORMATION_FAIL_2.ToString(), lang);
  116. jsonRx.Msg = $"Exception has occured at GetReceiverInformationV2";
  117. return jsonRx;
  118. }
  119. }
  120. private ReceiverV2 GetReceiverInfoModel(DataRow row)
  121. {
  122. ReceiverInfoBranch b = null;
  123. ReceiverInfoAgent a = null;
  124. ReceiverInfoPaymentmethod p = null;
  125. if (!string.IsNullOrWhiteSpace(Convert.ToString(row["branchId"])))
  126. {
  127. b = new ReceiverInfoBranch();
  128. b.id = Convert.ToString(row["branchId"]);
  129. b.name = Convert.ToString(row["branchName"]);
  130. b.localizedName = Convert.ToString(row["branchLocalizedName"]);
  131. }
  132. //if (!string.IsNullOrWhiteSpace(Convert.ToString(row["bankId"])))
  133. //{
  134. a = new ReceiverInfoAgent();
  135. a.id = Convert.ToString(row["bankId"]);
  136. a.name = Convert.ToString(row["bankName"]);
  137. a.localizedName = Convert.ToString(row["bankLocalizedName"]);
  138. a.accountNo = Convert.ToString(row["accountNo"]);
  139. a.currency = string.IsNullOrWhiteSpace(Convert.ToString(row["bankCurrency"])) ? null : Convert.ToString(row["bankCurrency"]).Split(',');
  140. a.branch = b;
  141. //}
  142. p = new ReceiverInfoPaymentmethod();
  143. //Commented by arjun
  144. if (!string.IsNullOrWhiteSpace(Convert.ToString(row["paymentMethodId"])))
  145. {
  146. var country = Convert.ToString(row["country"]) ?? "English";
  147. //var path = GetStatic.ReadWebConfig("ServiceType_Resource", "");
  148. //var text = File.ReadAllText(path);
  149. //List<ServiceTypeDetails> sd = JsonConvert.DeserializeObject<List<ServiceTypeDetails>>(text);
  150. //var idx = sd.FindIndex(x => x.countryName.ToLower() == country.ToLower());
  151. //var data = new ServiceTypeDetails();
  152. //if (idx < 0)
  153. //{
  154. // data = sd[sd.FindIndex(x => x.countryCode == "en")];
  155. //}
  156. //else
  157. //{
  158. // data = sd[idx];
  159. //}
  160. p.id = Convert.ToString(row["paymentMethodId"]);
  161. p.name = Convert.ToString(row["paymentMethodName"]);
  162. //added by arjun
  163. p.localizedName = Convert.ToString(row["paymentMethodName"]);
  164. //if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Cash Payment".ToLower()))
  165. //{
  166. // p.localizedName = data.cashPayment;
  167. //}
  168. //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Bank Deposit".ToLower()))
  169. //{
  170. // p.localizedName = data.bankDeposit;
  171. //}
  172. //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Mobile Wallet".ToLower()))
  173. //{
  174. // p.localizedName = data.mobileWallet;
  175. //}
  176. //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Home Delivery".ToLower()))
  177. //{
  178. // p.localizedName = data.homeDelivery;
  179. //}
  180. //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Card Payment".ToLower()))
  181. //{
  182. // p.localizedName = data.cardPayment;
  183. //}
  184. p.currency = string.IsNullOrWhiteSpace(Convert.ToString(row["paymentMethodCurrency"])) ? null : Convert.ToString(row["paymentMethodCurrency"]).Split(',');
  185. }
  186. var s = new ReceiverV2();
  187. s.receiverId = Convert.ToString(row["receiverId"]);
  188. s.fullName = Convert.ToString(row["fullName"]);
  189. s.firstName = Convert.ToString(row["firstName"]);
  190. s.middleName = Convert.ToString(row["middleName"]);
  191. s.lastName = Convert.ToString(row["lastName1"]);
  192. s.localFullName = Convert.ToString(row["localizedName"]);
  193. s.country = Convert.ToString(row["country"]);
  194. s.countryId = Convert.ToString(row["countryId"]);
  195. s.countryCode = Convert.ToString(row["countryCode"]);
  196. s.address = Convert.ToString(row["address"]);
  197. s.state = Convert.ToString(row["state"]);
  198. s.stateId = Convert.ToString(row["stateId"]);
  199. s.district = Convert.ToString(row["district"]);
  200. s.districtId = Convert.ToString(row["districtId"]);
  201. s.city = Convert.ToString(row["city"]);
  202. s.email = Convert.ToString(row["email"]);
  203. s.mobile = Convert.ToString(row["mobile"]);
  204. s.relationship = Convert.ToString(row["relationship"]);
  205. s.relationshipId = Convert.ToString(row["relationshipId"]);
  206. s.district = Convert.ToString(row["district"]);
  207. s.purposeOfRemit = Convert.ToString(row["purposeOfRemit"]);
  208. s.purposeOfRemitId = Convert.ToString(row["purposeOfRemitId"]);
  209. s.idType = Convert.ToString(row["idType"]);
  210. s.idTypeId = Convert.ToString(row["idTypeId"]);
  211. s.idNumber = Convert.ToString(row["idNumber"]);
  212. s.localFirstName = Convert.ToString(row["localFirstName"]);
  213. s.localMiddleName = Convert.ToString(row["localMiddleName"]);
  214. s.localLastName = Convert.ToString(row["localLastName1"]);
  215. s.payoutPartner = Convert.ToString(row["payoutPartner"]);
  216. s.nativeCountry = Convert.ToString(row["nativeCountry"]);
  217. s.nativeCountryCode = Convert.ToString(row["nativeCountryCode"]);
  218. s.nativeCountryId = Convert.ToString(row["nativeCountryId"]);
  219. s.hasVerifiedOTP = Convert.ToBoolean(row["isOTPVerified"]);
  220. s.isForceUpdate = Convert.ToString(row["isForceUpdate"]);
  221. if (row.Table.Columns.Contains("IsAccountValidation"))
  222. {
  223. s.IsAccountValidationReq = Convert.ToString(row["IsAccountValidation"]);
  224. }
  225. if (row.Table.Columns.Contains("ApiBankCode"))
  226. {
  227. s.ApiBankCode = Convert.ToString(row["ApiBankCode"]);
  228. }
  229. s.isPartnerChanged = string.IsNullOrEmpty(a.id) ? "1" : "0";
  230. if (s.countryId.Equals("151") && !string.IsNullOrWhiteSpace(p.id) && p.id.Equals("1"))
  231. {
  232. s.isPartnerChanged = "0";
  233. }
  234. else if (s.countryId.Equals("203") && !string.IsNullOrWhiteSpace(p.id) && p.id.Equals("12"))
  235. {
  236. s.isPartnerChanged = "0";
  237. }
  238. if (s.countryId.Equals("151") && !string.IsNullOrWhiteSpace(p.id) && p.id.Equals("2") && !string.IsNullOrWhiteSpace(a.id))
  239. {
  240. s.isPartnerChanged = "0";
  241. }
  242. s.paymentMethod = p;
  243. s.agent = a;
  244. return s;
  245. }
  246. public JsonRxResponse SaveProfile(string username, string url, string fileName, string fileType)
  247. {
  248. // JsonRxResponse jsonRx = new JsonRxResponse();
  249. var sql = "EXEC mobile_proc_customerMaster";
  250. sql += " @flag = " + _dao.FilterString("save-profile");
  251. sql += ", @username = " + _dao.FilterString(username);
  252. sql += ", @url = " + _dao.FilterString(url);
  253. sql += ", @fileType = " + _dao.FilterString(fileType);
  254. sql += ", @fileName = " + _dao.FilterString(fileName);
  255. Log.DebugFormat("SaveProfile | SQL : {0}", sql);
  256. var _dbRes = _dao.ParseDbResult(sql);
  257. return new JsonRxResponse
  258. {
  259. ErrorCode = _dbRes.ResponseCode,
  260. Msg = _dbRes.Msg,
  261. Extra = _dbRes.Id
  262. };
  263. }
  264. public DataRow GetMembershipId(string customerId)
  265. {
  266. var sql = "EXEC mobile_proc_customerMaster @flag= 'get-membershipId'";
  267. sql += ", @userId = " + _dao.FilterString(customerId);
  268. Log.DebugFormat("GetMembershipId | SQL:{0}", sql);
  269. return _dao.ExecuteDataRow(sql);
  270. }
  271. public JsonRxResponse SaveKycSettings(KycOption kycOption)
  272. {
  273. var sql = "EXEC JsonRx_Proc_UserRegistration @flag='save-kyc-option'";
  274. sql += ", @username = " + _dao.FilterString(kycOption.UserId);
  275. sql += ", @registrationType = " + _dao.FilterString(kycOption.RegistrationType);
  276. sql += ", @clientId = " + _dao.FilterString(kycOption.Code);
  277. Log.DebugFormat("SaveKycSettings | SQL : {0}", sql);
  278. var _dbRes = _dao.ParseDbResult(sql);
  279. return new JsonRxResponse
  280. {
  281. ErrorCode = _dbRes.ResponseCode,
  282. Msg = _dbRes.Msg,
  283. Extra = _dbRes.Id
  284. };
  285. }
  286. public DataRow GetResidenceType(string customerId)
  287. {
  288. var sql = "EXEC mobile_proc_customerMaster @flag= 'get-ResidenceType'";
  289. sql += ", @username = " + _dao.FilterString(customerId);
  290. Log.DebugFormat("GetMembershipId | SQL:{0}", sql);
  291. return _dao.ExecuteDataRow(sql);
  292. }
  293. }
  294. }