using Common; using Common.Helper; using Common.Model; using Common.Model.Config; using Common.Model.MobileV2; using log4net; using System; using System.Collections.Generic; using System.Data; using System.Globalization; using System.Linq; using System.Runtime.Remoting.Messaging; using System.Text; using System.Threading.Tasks; namespace Repository.MobileV2 { public class MobileV2Repo : IMobileV2Repo { private readonly Dao _dao = new Dao(); private static readonly ILog Log = LogManager.GetLogger(typeof(IMobileV2Repo)); public JsonRxResponse GetReceiverInformationV2(DateFilterParams search, string customerId, string countryid) { MyTransferDto myTransferDto = new MyTransferDto() { Receivers = new List(), RecentTransactions = new List() }; var lang = Convert.ToString(CallContext.GetData(Constants.Language)); JsonRxResponse jsonRx = new JsonRxResponse(); try { var sql = "EXEC PROC_MOBILE_RECEIVER_INFORMATION"; sql += " @flag = " + _dao.FilterString("receiver-info"); sql += ", @customerId = " + _dao.FilterString(customerId); sql += ", @countryId = " + _dao.FilterString(countryid); var dataSet = _dao.ExecuteDataset(sql); List rim = new List(); List receiverInfoModels = new List(); var map = Utilities.GetLanguageMapping(RESPONSE_MSG.GET_RECEIVER_INFORMATION_FAIL_1.ToString(), lang); if (dataSet.Tables[0].Rows.Count > 0) { foreach (DataRow row in dataSet.Tables[0].Rows) { var s = GetReceiverInfoModel(row); receiverInfoModels.Add(s); } var grpresulst = receiverInfoModels.GroupBy(g => new { g.fullName, g.mobile }) .Select(g => g.First()) .ToList(); grpresulst.ForEach(z => { z.PaymentMethods = new List(); //var r = new ReceiverV2() { fullName = z.fullName, mobile = z.mobile, address = z.address, idNumber = z.idNumber, PaymentMethods = new List() }; z.PaymentMethods = receiverInfoModels.Where(a => a.fullName == z.fullName & a.mobile == z.mobile) .Select(s => new ReceiverPaymentMethod() { receiverId = s.receiverId, id = s.paymentMethod.id, currency = s.paymentMethod.currency, localizedName = s.paymentMethod.localizedName, name = s.paymentMethod.name, agent = s.agent, isForceUpdate = s.isForceUpdate, isPartnerChanged = s.isPartnerChanged, ForceUpdateMsg = s.ForceUpdateMsg , hasVerifiedOTP = s.hasVerifiedOTP, nativeCountry = s.nativeCountry, nativeCountryCode = s.nativeCountryCode, nativeCountryId = s.nativeCountryId, payoutPartner = s.payoutPartner }).ToList(); rim.Add(z); }); myTransferDto.Receivers = rim; } var sql1 = "Exec mobile_proc_TranHistory @flag='tran-history-v2'"; sql1 += ", @customerId =" + _dao.FilterString(customerId); Log.DebugFormat("GetReceiverInformation | SQL : {0}", sql); if (search != null) { CultureInfo enUS = new CultureInfo("en-US"); if (!string.IsNullOrEmpty(search.FromDate)) { DateTime FromDate; if (DateTime.TryParseExact(search.FromDate,"dd/MM/yyyy", enUS, DateTimeStyles.AdjustToUniversal, out FromDate)) { sql1 += ", @fromDate=" + _dao.FilterString(FromDate.ToString("yyyy-MM-dd")); } else sql1 += ", @fromDate=" + _dao.FilterString(search.FromDate); } if (!string.IsNullOrEmpty(search.ToDate)) { DateTime ToDate; if (DateTime.TryParseExact(search.ToDate, "dd/MM/yyyy", enUS, DateTimeStyles.AdjustToUniversal, out ToDate)) { sql1 += ", @toDate=" + _dao.FilterString(ToDate.ToString("yyyy-MM-dd")); } else sql1 += ", @toDate=" + _dao.FilterString(search.ToDate); } if (!string.IsNullOrEmpty(search.Page)) sql1 += ", @pageNumber=" + _dao.FilterString(search.Page); if (!string.IsNullOrEmpty(search.PageCount)) sql1 += ", @pageSize" + _dao.FilterString(search.PageCount); } Log.DebugFormat("GetTransactionHistory | SQL : {0}", sql1); var ds = _dao.ExecuteDataset(sql1); if (ds == null) { myTransferDto.RecentTransactions = null; } else { if (ds.Tables.Count > 1) { DataTable data = ds.Tables[1]; foreach (DataRow dr in data.Rows) { TranHistoryResponse tranHistoryResponse = new TranHistoryResponse() { User = Convert.ToString(dr["userId"]), TranId = Convert.ToString(dr["tranId"]), ControlNo = Convert.ToString(dr["controlNo"]), CollAmt = Convert.ToString(dr["collAmount"]), PayoutAmt = Utilities.ShowDecimal(Convert.ToString(dr["payoutAmt"])), PCurr = Convert.ToString(dr["pCurr"]), CollCurr = Convert.ToString(dr["collCurr"]), PayStatus = Convert.ToString(dr["payStatus"]), PayoutMode = Convert.ToString(dr["payoutMode"]), SendDate = Convert.ToString(dr["sendDate"]), PaidDate = Convert.ToString(dr["paidDate"]), DisplayActions = dr["DisplayActions"].ToString(), ColorIcon = GetColor(dr["payStatus"].ToString()), ColorCode = GetColorCode(dr["payStatus"].ToString()), TextCode= GetTextCode(dr["payStatus"].ToString()), // PayoutAgent = Convert.ToString(dr["PayoutAgent"]), }; myTransferDto.RecentTransactions.Add(tranHistoryResponse); } } } jsonRx.ErrorCode = "0"; jsonRx.Msg = "Success"; jsonRx.Data = myTransferDto; return jsonRx; } catch (Exception e) { Log.DebugFormat($"Exception : {e.ToString()}"); jsonRx.ErrorCode = "1"; //jsonRx.Msg = "Failed"; //var map = Utilities.GetLanguageMapping(RESPONSE_MSG.GET_RECEIVER_INFORMATION_FAIL_2.ToString(), lang); jsonRx.Msg = $"Exception has occured at GetReceiverInformationV2"; return jsonRx; } } private string GetColor(string status) { if (status.Equals("AWAITING PAYMENT") || status.Equals("PENDING")) { return "Blue"; } else if (status.Equals("PROCESSING")) { return "Brown"; } else if (status.Equals("PAID")) { return "Green"; } else if (status.Equals("CANCELLED")) { return "Red"; } else return "Blue"; } private string GetColorCode(string status) { if (status.Equals("AWAITING PAYMENT") || status.Equals("PENDING")) { return "#514e82"; } else if (status.Equals("PROCESSING")) { return "#AF804F"; } else if (status.Equals("PAID")) { return "#008000"; } else if (status.Equals("CANCELLED")) { return "#FF0000"; } else return "#514e82"; // return "#FF0000"; } private string GetTextCode(string status) { if (status.Equals("AWAITING PAYMENT") || status.Equals("PENDING")) { return "#FFFFFF"; } else if (status.Equals("PROCESSING")) { return "#262262"; } else if (status.Equals("PAID")) { return "#FFFFFF"; } else if (status.Equals("CANCELLED")) { return "#FFFFFF"; } else return "#FFFFFF"; } private ReceiverV2 GetReceiverInfoModel(DataRow row) { ReceiverInfoBranch b = null; ReceiverInfoAgent a = null; ReceiverInfoPaymentmethod p = null; if (!string.IsNullOrWhiteSpace(Convert.ToString(row["branchId"]))) { b = new ReceiverInfoBranch(); b.id = Convert.ToString(row["branchId"]); b.name = Convert.ToString(row["branchName"]); b.localizedName = Convert.ToString(row["branchLocalizedName"]); } //if (!string.IsNullOrWhiteSpace(Convert.ToString(row["bankId"]))) //{ a = new ReceiverInfoAgent(); a.id = Convert.ToString(row["bankId"]); a.name = Convert.ToString(row["bankName"]); a.localizedName = Convert.ToString(row["bankLocalizedName"]); a.accountNo = Convert.ToString(row["accountNo"]); a.currency = string.IsNullOrWhiteSpace(Convert.ToString(row["bankCurrency"])) ? null : Convert.ToString(row["bankCurrency"]).Split(','); a.branch = b; //} p = new ReceiverInfoPaymentmethod(); //Commented by arjun if (!string.IsNullOrWhiteSpace(Convert.ToString(row["paymentMethodId"]))) { var country = Convert.ToString(row["country"]) ?? "English"; //var path = GetStatic.ReadWebConfig("ServiceType_Resource", ""); //var text = File.ReadAllText(path); //List sd = JsonConvert.DeserializeObject>(text); //var idx = sd.FindIndex(x => x.countryName.ToLower() == country.ToLower()); //var data = new ServiceTypeDetails(); //if (idx < 0) //{ // data = sd[sd.FindIndex(x => x.countryCode == "en")]; //} //else //{ // data = sd[idx]; //} p.id = Convert.ToString(row["paymentMethodId"]); p.name = Convert.ToString(row["paymentMethodName"]); //added by arjun p.localizedName = Convert.ToString(row["paymentMethodName"]); //if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Cash Payment".ToLower())) //{ // p.localizedName = data.cashPayment; //} //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Bank Deposit".ToLower())) //{ // p.localizedName = data.bankDeposit; //} //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Mobile Wallet".ToLower())) //{ // p.localizedName = data.mobileWallet; //} //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Home Delivery".ToLower())) //{ // p.localizedName = data.homeDelivery; //} //else if (Convert.ToString(row["paymentMethodName"]).ToLower().Equals("Card Payment".ToLower())) //{ // p.localizedName = data.cardPayment; //} p.currency = string.IsNullOrWhiteSpace(Convert.ToString(row["paymentMethodCurrency"])) ? null : Convert.ToString(row["paymentMethodCurrency"]).Split(','); } var s = new ReceiverV2(); s.receiverId = Convert.ToString(row["receiverId"]); s.fullName = Convert.ToString(row["fullName"]); s.firstName = Convert.ToString(row["firstName"]); s.middleName = Convert.ToString(row["middleName"]); s.lastName = Convert.ToString(row["lastName1"]); s.localFullName = Convert.ToString(row["localizedName"]); s.country = Convert.ToString(row["country"]); s.countryId = Convert.ToString(row["countryId"]); s.countryCode = Convert.ToString(row["countryCode"]); s.address = Convert.ToString(row["address"]); s.state = Convert.ToString(row["state"]); s.stateId = Convert.ToString(row["stateId"]); s.district = Convert.ToString(row["district"]); s.districtId = Convert.ToString(row["districtId"]); s.city = Convert.ToString(row["city"]); s.email = Convert.ToString(row["email"]); s.mobile = Convert.ToString(row["mobile"]); s.relationship = Convert.ToString(row["relationship"]); s.relationshipId = Convert.ToString(row["relationshipId"]); s.district = Convert.ToString(row["district"]); s.purposeOfRemit = Convert.ToString(row["purposeOfRemit"]); s.purposeOfRemitId = Convert.ToString(row["purposeOfRemitId"]); s.idType = Convert.ToString(row["idType"]); s.idTypeId = Convert.ToString(row["idTypeId"]); s.idNumber = Convert.ToString(row["idNumber"]); s.localFirstName = Convert.ToString(row["localFirstName"]); s.localMiddleName = Convert.ToString(row["localMiddleName"]); s.localLastName = Convert.ToString(row["localLastName1"]); s.payoutPartner = Convert.ToString(row["payoutPartner"]); s.nativeCountry = Convert.ToString(row["nativeCountry"]); s.nativeCountryCode = Convert.ToString(row["nativeCountryCode"]); s.nativeCountryId = Convert.ToString(row["nativeCountryId"]); s.hasVerifiedOTP = Convert.ToBoolean(row["isOTPVerified"]); s.isForceUpdate = Convert.ToString(row["isForceUpdate"]); if (row.Table.Columns.Contains("IsAccountValidation")) { s.IsAccountValidationReq = Convert.ToString(row["IsAccountValidation"]); } if (row.Table.Columns.Contains("ApiBankCode")) { s.ApiBankCode = Convert.ToString(row["ApiBankCode"]); } s.isPartnerChanged = string.IsNullOrEmpty(a.id) ? "1" : "0"; if (s.countryId.Equals("151") && !string.IsNullOrWhiteSpace(p.id) && p.id.Equals("1")) { s.isPartnerChanged = "0"; } else if (s.countryId.Equals("203") && !string.IsNullOrWhiteSpace(p.id) && p.id.Equals("12")) { s.isPartnerChanged = "0"; } if (s.countryId.Equals("151") && !string.IsNullOrWhiteSpace(p.id) && p.id.Equals("2") && !string.IsNullOrWhiteSpace(a.id)) { s.isPartnerChanged = "0"; } s.paymentMethod = p; s.agent = a; return s; } public JsonRxResponse SaveProfile(string username, string url, string fileName, string fileType) { // JsonRxResponse jsonRx = new JsonRxResponse(); var sql = "EXEC mobile_proc_customerMaster"; sql += " @flag = " + _dao.FilterString("save-profile"); sql += ", @username = " + _dao.FilterString(username); sql += ", @url = " + _dao.FilterString(url); sql += ", @fileType = " + _dao.FilterString(fileType); sql += ", @fileName = " + _dao.FilterString(fileName); Log.DebugFormat("SaveProfile | SQL : {0}", sql); var _dbRes = _dao.ParseDbResult(sql); return new JsonRxResponse { ErrorCode = _dbRes.ResponseCode, Msg = _dbRes.Msg, Extra = _dbRes.Id }; } public DataRow GetMembershipId(string customerId) { var sql = "EXEC mobile_proc_customerMaster @flag= 'get-membershipId'"; sql += ", @userId = " + _dao.FilterString(customerId); Log.DebugFormat("GetMembershipId | SQL:{0}", sql); return _dao.ExecuteDataRow(sql); } public DataRow GetProfileDetails(string customerId) { var sql = "EXEC mobile_proc_customerMaster @flag= 'get-profile-details'"; sql += ", @email = " + _dao.FilterString(customerId); Log.DebugFormat("GetProfileDetails | SQL:{0}", sql); return _dao.ExecuteDataRow(sql); } public JsonRxResponse SaveKycSettings(KycOption kycOption) { var sql = "EXEC JsonRx_Proc_UserRegistration @flag='save-kyc-option'"; sql += ", @username = " + _dao.FilterString(kycOption.UserId); sql += ", @registrationType = " + _dao.FilterString(kycOption.RegistrationType); sql += ", @clientId = " + _dao.FilterString(kycOption.Code); Log.DebugFormat("SaveKycSettings | SQL : {0}", sql); var _dbRes = _dao.ParseDbResult(sql); return new JsonRxResponse { ErrorCode = _dbRes.ResponseCode, Msg = _dbRes.Msg, Extra = _dbRes.Id }; } public DataRow GetResidenceType(string customerId) { var sql = "EXEC mobile_proc_customerMaster @flag= 'get-ResidenceType'"; sql += ", @username = " + _dao.FilterString(customerId); Log.DebugFormat("GetMembershipId | SQL:{0}", sql); return _dao.ExecuteDataRow(sql); } public JsonRxResponse UpdateCustomerProfile(CustomerDetailV2 req) { var sql = "EXEC mobile_proc_online_customerMaster_V1 @flag= 'update-address'"; sql += ", @customerId = " + _dao.FilterString(req.UserId); sql += ", @postalCode = " + _dao.FilterString(req.PostalCode); sql += ", @address1 = " + _dao.FilterString(req.Address1); sql += ", @address2 = " + _dao.FilterString(req.Address2); Log.DebugFormat("UpdateProfile | SQL:{0}", sql); var _dbRes = _dao.ParseDbResult(sql); return new JsonRxResponse { ErrorCode = _dbRes.ResponseCode, Msg = _dbRes.Msg, Extra = _dbRes.Id }; } } }