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.
 
 
 

494 lines
20 KiB

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<ReceiverV2>(), RecentTransactions = new List<TranHistoryResponse>() };
var lang = Convert.ToString(CallContext.GetData(Constants.Language));
JsonRxResponse jsonRx = new JsonRxResponse();
string viewOption = search.ViewAll;
try
{
var sql = "EXEC PROC_MOBILE_RECEIVER_INFORMATION";
sql += " @flag = " + _dao.FilterString("receiver-info");
sql += ", @customerId = " + _dao.FilterString(customerId);
sql += ", @countryId = " + _dao.FilterString(countryid);
sql += ", @viewAll = " + _dao.FilterString(viewOption);
var dataSet = _dao.ExecuteDataset(sql);
List<ReceiverV2> rim = new List<ReceiverV2>();
List<ReceiverV2> receiverInfoModels = new List<ReceiverV2>();
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<ReceiverPaymentMethod>();
//var r = new ReceiverV2() { fullName = z.fullName, mobile = z.mobile, address = z.address, idNumber = z.idNumber, PaymentMethods = new List<ReceiverPaymentMethod>() };
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);
sql1 += ", @viewAll =" + _dao.FilterString(viewOption);
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()),
ReceiverId = Convert.ToString(dr["Receiverid"])
// 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<ServiceTypeDetails> sd = JsonConvert.DeserializeObject<List<ServiceTypeDetails>>(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
};
}
}
}