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.
456 lines
18 KiB
456 lines
18 KiB
using Business.Authentication;
|
|
using Business.KftcPasswordRule;
|
|
using Business.Mobile;
|
|
using Common;
|
|
using Common.Helper;
|
|
using Common.Language;
|
|
using Common.Model;
|
|
using Common.Model.Config;
|
|
using Common.Model.RequestOTP;
|
|
using JsonRx.AuthFilter;
|
|
using JsonRx.Helper;
|
|
using log4net;
|
|
using Newtonsoft.Json;
|
|
using PushNotification;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.Remoting.Messaging;
|
|
using System.Threading.Tasks;
|
|
using System.Web.Http;
|
|
using System.Web.Http.ModelBinding;
|
|
using System.Web.Routing;
|
|
|
|
namespace JsonRx.Api
|
|
{
|
|
/// <summary>
|
|
/// </summary>
|
|
[RoutePrefix("api/v1")]
|
|
//[EnableCors("*", "*", "*")]
|
|
public class MobileController : ApiController
|
|
{
|
|
private readonly IMobileServices _requestServices;
|
|
private readonly IAuthenticationBusiness _authenticationBusiness;
|
|
private static readonly ILog Log = LogManager.GetLogger(typeof(MobileController));
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
public MobileController() { }
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="requestServices"></param>
|
|
/// <param name="authenticationBusiness"></param>
|
|
public MobileController(IMobileServices requestServices, IAuthenticationBusiness authenticationBusiness)
|
|
{
|
|
_requestServices = requestServices;
|
|
_authenticationBusiness = authenticationBusiness;
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
//[TokenAuthentication]
|
|
[Route("mobile/ping")]
|
|
public IHttpActionResult Ping()
|
|
{
|
|
|
|
|
|
// var case1 = ms.ValidateMobile("8112345678901");
|
|
LogicalThreadContext.Properties["processId"] = "1";
|
|
Log.Debug("Test");
|
|
|
|
var jso = new JsonRxResponse() { ErrorCode = "0", Msg = "thisCalled" };
|
|
return Ok(jso);
|
|
}
|
|
|
|
[HttpPost]
|
|
[TokenAuthentication]
|
|
[Route("mobile/GetNotifyInfo")]
|
|
public IHttpActionResult GetNotifyInfo(NotifiCationInfo info)
|
|
{
|
|
if (string.IsNullOrEmpty(info.customerId))
|
|
{
|
|
return Ok("Error");
|
|
|
|
}
|
|
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GetNotifyInfo";
|
|
|
|
Log.Debug("VerifyIdNumber | REQUEST : " + JsonConvert.SerializeObject(info));
|
|
|
|
var res = _requestServices.GetNotifyInfo(info);
|
|
return Ok(res);
|
|
}
|
|
|
|
[HttpPost]
|
|
[TokenAuthentication]
|
|
[Route("mobile/GetNotifyDetailInfo")]
|
|
public IHttpActionResult GetNotifyDetailInfo(NotifiCationDetailInfo info)
|
|
{
|
|
if (string.IsNullOrEmpty(info.rowId))
|
|
return Ok("Error");
|
|
|
|
var res = _requestServices.GetNotifyDetailInfo(info);
|
|
return Ok(res);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Display an countries services details including currency and service available
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[ApplicationLevelAuthentication]
|
|
[Route("mobile/countriesServices")]
|
|
public IHttpActionResult GetCountriesServices()
|
|
{
|
|
var lang = "en";
|
|
try
|
|
{
|
|
IEnumerable<string> langs = null;
|
|
Request.Headers.TryGetValues("lang", out langs);
|
|
lang = langs.ElementAt(0);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
|
|
CallContext.SetData("language", lang);
|
|
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GetCountriesServices";
|
|
|
|
Log.Debug("GetCountriesServices | REQUEST : NO REQUEST DATA.");
|
|
var exRateResponse = _requestServices.GetCountriesServices();
|
|
return Ok(exRateResponse);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="param"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[TokenAuthentication]
|
|
[Route("mobile/sendmoney/getcddi/{userId}")]
|
|
public IHttpActionResult GetCDDI(string userId)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = userId;
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GetCDDI";
|
|
LogicalThreadContext.Properties[LoggerProperty.IPADDRESS] = Request.GetClientIpAddress();
|
|
|
|
Log.Debug("GetCDDI | REQUEST : " + userId);
|
|
var payStatusResponse = _requestServices.GetCDDI(userId);
|
|
return Ok(payStatusResponse);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="type"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[ApplicationLevelAuthentication]
|
|
[Route("mobile/requestOTP")]
|
|
public IHttpActionResult RequestOTP(RequestOTPModel requestOTPModel)
|
|
{
|
|
var ProcessId = Guid.NewGuid().ToString();
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = ProcessId;
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "RequestOTP";
|
|
LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = requestOTPModel.userId;
|
|
LogicalThreadContext.Properties[LoggerProperty.IPADDRESS] = Request.GetClientIpAddress();
|
|
|
|
|
|
requestOTPModel.DeviceType = Util.GetDeviceType(Request);
|
|
requestOTPModel.ProcessId = ProcessId;
|
|
Log.Debug("RequestOTP | REQUEST : " + JsonConvert.SerializeObject(requestOTPModel));
|
|
|
|
|
|
JsonRxResponse staticDataResponse = new JsonRxResponse();
|
|
//if (string.IsNullOrEmpty(requestOTPModel.userId))
|
|
//{
|
|
// staticDataResponse.SetResponse("100", "Email is required!");
|
|
// return Ok(staticDataResponse);
|
|
//}
|
|
|
|
staticDataResponse = _requestServices.RequestOTP(requestOTPModel);
|
|
return Ok(staticDataResponse);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="type"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[ApplicationLevelAuthentication]
|
|
[Route("mobile/verifyIdNumber")]
|
|
public IHttpActionResult VerifyIdNumber(IDValidateModel iDValidate)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "VerifyIdNumber";
|
|
Log.Debug("VerifyIdNumber | REQUEST : " + JsonConvert.SerializeObject(iDValidate));
|
|
LogicalThreadContext.Properties[LoggerProperty.IPADDRESS] = Request.GetClientIpAddress();
|
|
var staticDataResponse = _requestServices.VerifyIdNumber(iDValidate);
|
|
return Ok(staticDataResponse);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="type"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[ApplicationLevelAuthentication]
|
|
[Route("mobile/submitOTP")]
|
|
public IHttpActionResult SubmitOTP(RequestOTPModel requestOTPModel)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "SubmitOTP";
|
|
LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = requestOTPModel.userId;
|
|
Log.Debug("SubmitOTP | REQUEST : " + JsonConvert.SerializeObject(requestOTPModel));
|
|
var staticDataResponse = _requestServices.SubmitOTP(requestOTPModel);
|
|
return Ok(staticDataResponse);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[ApplicationLevelAuthentication]
|
|
[Route("mobile/calculateDefExRate")]
|
|
public IHttpActionResult CalculateDefExRate(ExRateCalculateRequest model)
|
|
{
|
|
model.sCurrency = "GBP";
|
|
var pId = Guid.NewGuid();
|
|
model.processId = pId.ToString();
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = pId;
|
|
LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = model.userId ?? model.pCurrency;
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "CalculateDefExRate";
|
|
LogicalThreadContext.Properties[LoggerProperty.IPADDRESS] = Request.GetClientIpAddress();
|
|
|
|
model.DeviceType = Util.GetDeviceType(Request);
|
|
|
|
Log.Debug("CalculateDefExRate | REQUEST : " + JsonConvert.SerializeObject(model));
|
|
if (ModelState.IsValid)
|
|
{
|
|
var exRateResponse = _requestServices.CalculateExRate(model);
|
|
return Ok(exRateResponse);
|
|
}
|
|
|
|
|
|
return ModelValidationError(ModelState);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="type"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[ApplicationLevelAuthentication]
|
|
[Route("mobile/loadForm/{type}")]
|
|
public IHttpActionResult LoadFormStaticData(string type)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "LoadFormStaticData";
|
|
Log.Debug("LoadFormStaticData | REQUEST : " + type);
|
|
var staticDataResponse = _requestServices.LoadFormStaticData(type);
|
|
return Ok(staticDataResponse);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="type"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[ApplicationLevelAuthentication]
|
|
[Route("mobile/LoadKycStaticData/{type}")]
|
|
public IHttpActionResult LoadKycStaticData(string type)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "LoadKycStaticData";
|
|
Log.Debug("LoadKycStaticData | REQUEST : " + type);
|
|
var kycStaticDataResponse = _requestServices.LoadKycStaticData(type);
|
|
return Ok(kycStaticDataResponse);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="tranId"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[TokenAuthentication]
|
|
[Route("mobile/receipt/{tranId=}/{notice=}")]
|
|
public IHttpActionResult GenerateReceipt(string tranId, string notice)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GenerateReceipt";
|
|
Log.Debug("GenerateReceipt | REQUEST : " + tranId + " Notice : " + notice);
|
|
var receiptResponse = _requestServices.GenerateReceipt(tranId, notice);
|
|
return Ok(receiptResponse);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="customerId"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[TokenAuthentication]
|
|
[Route("mobile/GetNotificationList")]
|
|
public IHttpActionResult GetNotificationList(string customerId)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GetNotificationList";
|
|
Log.Debug("GetNotificationList | REQUEST : " + customerId);
|
|
var notificationResponse = _requestServices.GetNotificationList(customerId);
|
|
return Ok(notificationResponse);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="rowId"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[TokenAuthentication]
|
|
[Route("mobile/UpdateNotification")]
|
|
public IHttpActionResult UpdateNotification(string rowId)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "UpdateNotification";
|
|
Log.Debug("UpdateNotification | REQUEST : " + rowId);
|
|
var notificationResponse = _requestServices.UpdateNotification(rowId);
|
|
return Ok(notificationResponse);
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
[TokenAuthentication]
|
|
[Route("mobile/tranhistory/{userId}")]
|
|
public IHttpActionResult GetTransactionHistory(DateFilterParams search, string userId)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = userId;
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GetTransactionHistory";
|
|
Log.Debug("GetTransactionHistory | REQUEST : " + userId);
|
|
var tranHistoryResponse = _requestServices.GetTransactionHistory(search, userId);
|
|
return Ok(tranHistoryResponse);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="search"></param>
|
|
/// <param name="userId"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[TokenAuthentication]
|
|
[Route("mobile/walletstatement/{userId}")]
|
|
public IHttpActionResult GetWalletStatement(DateFilterParams search, string userId)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = userId;
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "walletstatement";
|
|
Log.Debug("GetWalletStatement | REQUEST : " + userId + "|" + JsonConvert.SerializeObject(search));
|
|
JsonRxResponse walletStatement = new JsonRxResponse();
|
|
if (string.IsNullOrEmpty(userId))
|
|
{
|
|
walletStatement.ErrorCode = "1";
|
|
walletStatement.Msg = "UserId is Missing";
|
|
return Ok(walletStatement);
|
|
}
|
|
walletStatement = _requestServices.GetWalletStatement(search, userId);
|
|
return Ok(walletStatement);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="search"></param>
|
|
/// <param name="userId"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[Route("mobile/key")]
|
|
public string GetKey()
|
|
{
|
|
//LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
//LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GetKey";
|
|
//Log.Debug("user trying to generate key");
|
|
//return "sroj";
|
|
|
|
string rv = "false";
|
|
|
|
var regData = new ValidationModel { Dob = "", Email = "", Password = "0f984f876cd0381b8f3245aed644534e3ba056c46c7a13f1508f6176f5cb6958c11dccfb186ae641ddf4b97490c3f5de" };
|
|
List<PasswordRule> rules = new List<PasswordRule>();
|
|
rules.Add(new AtLeastOneLowerCaseRule());
|
|
rules.Add(new AtLeastOneNumberRule());
|
|
rules.Add(new AtLeastOneUpperCaseRule());
|
|
rules.Add(new AtLeastSpecialCharRule());
|
|
rules.Add(new DboValidationRule());
|
|
rules.Add(new PasswordAsEmailRule());
|
|
rules.Add(new PatternMatchRule());
|
|
foreach (PasswordRule rule in rules)
|
|
{
|
|
var isvalid = rule.Validate(regData);
|
|
if (!isvalid.IsValid.Equals(true))
|
|
{
|
|
rv = "true";
|
|
}
|
|
}
|
|
return rv;
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="modelState"></param>
|
|
/// <returns></returns>
|
|
protected IHttpActionResult ModelValidationError(ModelStateDictionary modelState)
|
|
{
|
|
var modelErrors = modelState.Select(x => x.Value.Errors)
|
|
.Where(y => y.Count > 0)
|
|
.First()[0].ErrorMessage;
|
|
JsonRxResponse jsonRx = new JsonRxResponse()
|
|
{
|
|
ErrorCode = "1",
|
|
Msg = string.IsNullOrEmpty(modelErrors) ? "It seems like incorrect Json input(s)." : modelErrors,
|
|
Data = ""
|
|
};
|
|
return Ok(jsonRx);
|
|
}
|
|
|
|
/* 2019.09 @Dana */
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="search"></param>
|
|
/// <param name="userId"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[TokenAuthentication]
|
|
[Route("mobile/DomestricTranhistory/{userId}")]
|
|
public IHttpActionResult GetDomesticTransactionHistory(DateFilterParams search, string userId)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = userId;
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GetDomesticTransactionHistory";
|
|
Log.Debug("GetDomesticTransactionHistory | REQUEST : " + userId);
|
|
|
|
var tranHistoryResponse = _requestServices.GetDomesticTransactionHistory(search, userId);
|
|
return Ok(tranHistoryResponse);
|
|
}
|
|
|
|
/// <summary>
|
|
/// </summary>
|
|
/// <param name="tranId"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[TokenAuthentication]
|
|
[Route("mobile/DomesticReceipt/{tranId}")]
|
|
public IHttpActionResult GenerateDomesticReceipt(string tranId)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GenerateDomesticReceipt";
|
|
Log.Debug("GenerateDomesticReceipt | REQUEST : " + tranId);
|
|
var receiptResponse = _requestServices.GenerateDomesticReceipt(tranId);
|
|
return Ok(receiptResponse);
|
|
}
|
|
}
|
|
|
|
}
|