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.
 
 
 

308 lines
16 KiB

using Common;
using Common.Helper;
using Common.Model;
using Common.Model.Config;
using Common.Model.Enum;
using log4net;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Runtime.Remoting.Messaging;
using System.Text;
using JsonRx.Helper;
namespace Repository.Authentication
{
public class AuthenticationRepo : IAuthenticationRepo
{
private readonly Dao _dao = new Dao();
private static readonly ILog Log = LogManager.GetLogger(typeof(AuthenticationRepo));
/// <summary>
/// Check for client validity.
/// </summary>
/// <param name="credentials"></param>
/// <returns></returns>
public DbResult IsMapAPIWithOtherApp(ClientRegistrationKeys credentials)
{
var sql = "EXEC mobile_proc_GmeApiClientRegistration @flag='chk-client'";
sql += ", @clientId = " + _dao.FilterString(credentials.clientId);
sql += ", @secret = " + _dao.FilterString(credentials.secret);
// Log.DebugFormat("Repository.AuthenticationRepo.IsMapAPIWithOtherApp | Requested parameters : {0}, SQL:{1}", credentials.ToString(), sql);
return _dao.ParseDbResult(sql);
}
/// <summary>
/// Method allow to enter into the system. Check for user exists, Generates accesscode
/// </summary>
/// <param name="credentials"></param>
/// <returns></returns>
public LoginResponse LoginSystem(LoginCredential credentials)
{
var lang = Convert.ToString(CallContext.GetData(Constants.Language));
LoginResponse ls = null;
var sql = "EXEC mobile_proc_userLogin @flag='l'";
sql += ", @userName = " + _dao.FilterString(credentials.userId);
sql += ", @password = " + _dao.FilterString(credentials.password);
sql += ", @Imei = " + _dao.FilterString(credentials.uuid);
sql += ", @accessCode = " + _dao.FilterString(credentials.AccessGuid);
sql += ", @clientId = " + _dao.FilterString(credentials.clientId);
sql += ", @fcmid = " + _dao.FilterString(credentials.fcmId);
sql += ", @isBiometricLogin = " + _dao.FilterString(credentials.IsBiometricLogin.ToString());
sql += ", @biometricLoginType = " + _dao.FilterString(credentials.BiometricLoginType.ToString());
sql += ", @deviceType = " + _dao.FilterString(string.IsNullOrEmpty(credentials.DeviceType) ? "" : credentials.DeviceType.ToString());
sql += ", @accessToken = " + _dao.FilterString(string.IsNullOrEmpty(credentials.accessCode) ? "" : credentials.accessCode.ToString());
sql += ", @residenceType = " + _dao.FilterString(credentials.CustomerType.ToString());
Log.Debug("LoginSystem | SQL : " + sql);
var dataTable = _dao.ExecuteDataTable(sql);
if (dataTable.Rows[0]["errorCode"].Equals("0"))
{
var ios = ConfigurationManager.AppSettings["IosUpdate"].ToString().Split('-');
var iosInfo = ConfigurationManager.AppSettings["IosUpdateInfo"].ToString();
var android = ConfigurationManager.AppSettings["AndroidUpdate"].ToString().Split('-');
var androidInfo = ConfigurationManager.AppSettings["AndroidUpdateInfo"].ToString();
IList<AppUpdate> app = new List<AppUpdate>();
app.Add(new AppUpdate { OS = "IOS", Build = ios[0], Version = ios[1], Critical = ios[2], Info = iosInfo });
app.Add(new AppUpdate { OS = "ANDROID", Build = android[0], Version = android[1], Critical = android[2], Info = androidInfo });
//var dpStr = dataTable.Rows[0]["dpUrl"].ToString();
//var fileInBytes = Encoding.UTF8.GetBytes(dataTable.Rows[0]["dpUrl"].ToString());
var userIdInBytes = Encoding.UTF8.GetBytes(dataTable.Rows[0]["userId"].ToString());
var moduleInBytes = Encoding.UTF8.GetBytes("kyc");
ls = new LoginResponse
{
ErrorCode = dataTable.Rows[0]["errorCode"].ToString(),
userId = dataTable.Rows[0]["userId"].ToString(),
senderId = dataTable.Rows[0]["SenderId"].ToString(),
firstName = dataTable.Rows[0]["firstName"].ToString(),
// middleName = dataTable.Rows[0]["middleName"].ToString(), lastName =
// dataTable.Rows[0]["lastName"].ToString(), nickName = dataTable.Rows[0]["nickName"].ToString(),
email = dataTable.Rows[0]["email"].ToString(),
customerEmail = dataTable.Rows[0]["customerEmail"].ToString(),
mobileNumber = dataTable.Rows[0]["phone"].ToString(),
// rewardPoint = dataTable.Rows[0]["rewardPoint"].ToString(),
active = dataTable.Rows[0]["active"].ToString().ToBoolean(),
kyc = dataTable.Rows[0]["kyc"].ToString().ToBoolean(),
verified = dataTable.Rows[0]["verified"].ToString().ToBoolean(),
walletNumber = dataTable.Rows[0]["walletNumber"].ToString(),
availableBalance = dataTable.Rows[0]["availableBalance"].ToString(),
primaryBankName = dataTable.Rows[0]["primaryBankName"].ToString(),
accessCode = dataTable.Rows[0]["accessCode"].ToString(),
// cmRegistrationId = dataTable.Rows[0]["cmRegistrationId"].ToString(), dpUrl =
// !(string.IsNullOrEmpty(dpStr)) ? ApplicationConfig.GetRootURL() +
// "handler/docs.ashx?img=" + Convert.ToBase64String(fileInBytes) + "&userId=" +
// Convert.ToBase64String(userIdInBytes) + "&module=" +
// Convert.ToBase64String(moduleInBytes) : null,
country = dataTable.Rows[0]["country"].ToString(),
// province = dataTable.Rows[0]["province"].ToString(),
provinceId = dataTable.Rows[0]["provinceId"].ToString(),
// isReferred = Convert.ToBoolean(dataTable.Rows[0]["isReferred"]),
sourceId = dataTable.Rows[0]["sourceId"].ToString(),
// idType = dataTable.Rows[0]["idType"].ToString(),
//idNumber = dataTable.Rows[0]["idNumber"].ToString(),
countryCode = dataTable.Rows[0]["countryCode"].ToString(),
yearlyLimit = Convert.ToString(dataTable.Rows[0]["yearlyLimit"]),
// primaryBankAccount = Convert.ToString(dataTable.Rows[0]["primaryBankAccount"]),
pennyTestStatus = Convert.ToString(dataTable.Rows[0]["pennyTestStatus"]),
kftcClientId = dataTable.Rows[0]["gmeClientId"].ToString(),
redirectTo = dataTable.Rows[0]["redirectTo"].ToString(),
isExistingCustomer =dataTable.Rows[0]["isExistingCustomer"].ToString().ToBoolean(),
appUpdate = app,
IsBiometricLogin =dataTable.Rows[0]["IsBiometricLogin"].ToString().ToBoolean(),
BiometricLoginType = dataTable.Rows[0]["BiometricLoginType"].ToString(),
//IsForcedPwdchange= dataTable.Rows[0]["IsForcedPwdChange"].ToString(),
Extra = dataTable.Rows[0]["accessToken"].ToString(),
};
var map = Utilities.GetLanguageMapping(RESPONSE_MSG.LOGIN_TO_SYSTEM_SUCCESS.ToString(), lang);
ls.Msg = map.Message;
}
else
{
ls = new LoginResponse();
ls.ErrorCode = "1";
// ls.Msg = dataTable.Rows[0]["errorCode"] + Convert.ToString(dataTable.Rows[0]["msg"]);
//return ls;
//string enumString = string.Empty;
//if (dataTable.Rows[0]["errorCode"].Equals("1"))
//{
// enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_1.ToString();
//}
//else if (dataTable.Rows[0]["errorCode"].Equals("2"))
//{
// enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_2.ToString();
//}
//else if (dataTable.Rows[0]["errorCode"].Equals("3"))
//{
// enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_3.ToString();
//}
//else if (dataTable.Rows[0]["errorCode"].Equals("4"))
//{
// enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_4.ToString();
//}
//else if (dataTable.Rows[0]["errorCode"].Equals("5"))
//{
// enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_5.ToString();
//}
//else if (dataTable.Rows[0]["errorCode"].Equals("6"))
//{
// enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_6.ToString();
//}
//else if (dataTable.Rows[0]["errorCode"].Equals("7"))
//{
// enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_7.ToString();
//}
//else if (dataTable.Rows[0]["errorCode"].Equals("8"))
//{
// enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_8.ToString();
//}
//else if (dataTable.Rows[0]["errorCode"].Equals("20"))
//{
// enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_20.ToString();
//}
// var map = Utilities.GetLanguageMapping(enumString, lang);
return new LoginResponse { ErrorCode = dataTable.Rows[0]["errorCode"].Equals("0") ? "0" : "1", Msg = Convert.ToString(dataTable.Rows[0]["msg"]) };
//ls.Msg = map.Message;
}
return ls;
}
/// <summary>
/// Check for validity of access code during every request after login success and KYC
/// verified. Implemented at token authentication.
/// </summary>
/// <param name="credentials"></param>
/// <returns></returns>
public string IsAccessCodeValid(string accessCode, string uuid)
{
var sql = "EXEC mobile_proc_userLogin @flag='chk-access-code'";
sql += ", @imei = " + _dao.FilterString(uuid);
sql += ", @accessCode = " + _dao.FilterString(accessCode);
Log.DebugFormat("Repository.AuthenticationRepo.IsAccessCodeValid | Requested parameters : {0}, SQL:{1}", "", sql);
var dbRes = _dao.ParseDbResult(sql);
if (!dbRes.ResponseCode.Equals("0"))
{
return null;
}
return dbRes.Id;
}
public DbResult ReSendVerificationCode(VerificationKeys keys)
{
var sql = "EXEC mobile_proc_userRegistration @flag='re-code'";
sql += ", @imei = " + _dao.FilterString(keys.uuid);
sql += ", @username = " + _dao.FilterString(keys.userId);
sql += ", @code = " + _dao.FilterString(keys.verificationCode);
sql += ", @codeType = " + _dao.FilterString(keys.codeType);
sql += ", @scope = " + _dao.FilterString(keys.scope);
return _dao.ParseDbResult(sql);
}
public JsonRxResponse GetUser(string userId)
{
JsonRxResponse jsonRx = new JsonRxResponse
{
ErrorCode = "1",
Msg = "Failed"
};
var sql = "EXEC mobile_proc_customerMaster @flag='getUser'";
sql += ", @username = " + _dao.FilterString(userId);
Log.DebugFormat("Repository.CustomerRepo.GetUser | Requested parameters : {0}, SQL:{1}", JsonConvert.SerializeObject(userId), sql);
var dataTable = _dao.ExecuteDataTable(sql);
if (dataTable != null)
{
if (Convert.ToString(dataTable.Rows[0]["errorCode"]) == "0")
{
var moduleInBytes = Encoding.UTF8.GetBytes("kyc");
var dpStr = dataTable.Rows[0]["dpUrl"].ToString();
var fileInBytes = Encoding.UTF8.GetBytes(dataTable.Rows[0]["dpUrl"].ToString());
var userIdInBytes = Encoding.UTF8.GetBytes(dataTable.Rows[0]["userId"].ToString());
var ursDetail = new UserDetail
{
userId = dataTable.Rows[0]["userId"].ToString(),
firstName = dataTable.Rows[0]["firstName"].ToString(),
middleName = dataTable.Rows[0]["middleName"].ToString(),
lastName = dataTable.Rows[0]["lastName"].ToString(),
nickName = dataTable.Rows[0]["nickName"].ToString(),
mobileNumber = dataTable.Rows[0]["mobileNumber"].ToString(),
email = dataTable.Rows[0]["email"].ToString(),
verificationCode = string.IsNullOrEmpty(dataTable.Rows[0]["verificationCode"].ToString()) ? "" : Utilities.DecryptString(dataTable.Rows[0]["verificationCode"].ToString()),
verificationCodeExpiryDate = Convert.ToString(dataTable.Rows[0]["verificationCodeExpiryDate"]),
createdDate = Convert.ToString(dataTable.Rows[0]["createdDate"]),
userRoles = dataTable.Rows[0]["userRoles"].ToString(),
rewardPoint = dataTable.Rows[0]["rewardPoint"].ToString(),
active = Convert.ToBoolean(dataTable.Rows[0]["isActive"]),
kyc = Convert.ToBoolean(dataTable.Rows[0]["hasKyc"]),
verified = Convert.ToBoolean(dataTable.Rows[0]["isVerified"]),
forgetCode = string.IsNullOrEmpty(dataTable.Rows[0]["forgetCode"].ToString()) ? "" : Utilities.DecryptString(dataTable.Rows[0]["forgetCode"].ToString()),
forgetCodeExpiryDate = Convert.ToString(dataTable.Rows[0]["forgetCodeExpiryDate"]),
primaryBankName = dataTable.Rows[0]["primaryBankName"].ToString(),
walletNumber = dataTable.Rows[0]["walletNumber"].ToString(),
availableBalance = dataTable.Rows[0]["availableBalance"].ToString(),
cmRegistrationId = dataTable.Rows[0]["cmRegistrationId"].ToString(),
dpUrl = !(string.IsNullOrEmpty(dpStr)) ? ApplicationConfig.GetRootURL() + "handler/docs.ashx?img=" + Convert.ToBase64String(fileInBytes) + "&userId=" + Convert.ToBase64String(userIdInBytes) + "&module=" + Convert.ToBase64String(moduleInBytes) : null,
yearlyLimit = Convert.ToString(dataTable.Rows[0]["yearlyLimit"])
};
jsonRx.ErrorCode = "0";
jsonRx.Msg = "success";
jsonRx.Data = ursDetail;
return jsonRx;
}
}
return jsonRx;
}
public bool ValidateAuthenticity(string user, string guid)
{
var dic = new Dictionary<string, string>
{
{ "@userName", _dao.FilterString(@user) },
{ "@accessCode", _dao.FilterString(guid) }
};
var sql = new Query("mobile_proc_userLogin", "ckeck-guid", dic).ToString();
Log.Debug(sql);
var res = _dao.ParseDbResult(sql);
if (res.ResponseCode.Equals(ErrorCode.Zero))
{
return true;
}
else
{
return false;
}
}
public string GetDevice(string customerId)
{
var dic = new Dictionary<string, string>
{
{ "@customerId", _dao.FilterString(customerId) }
};
var sql = new Query("mobile_proc_userLogin", "get-device", dic).ToString();
Log.Debug(sql);
var res = _dao.ExecuteDataRow(sql);
return Convert.ToString(res["deviceId"]);
}
}
}