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

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);
}
}
}