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.
106 lines
4.6 KiB
106 lines
4.6 KiB
using Business.Authentication;
|
|
using Business.BalanceTransfer;
|
|
using Business.Mobile;
|
|
using Common;
|
|
using Common.Model.BalanceTransfer;
|
|
using JsonRx.AuthFilter;
|
|
using log4net;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Web.Http;
|
|
using System.Web.Http.ModelBinding;
|
|
|
|
namespace JsonRx.Api
|
|
{
|
|
[RoutePrefix("api/v1")]
|
|
public class BalanceTransferController : ApiController
|
|
{
|
|
private readonly IBalanceTransferBusiness _requestServices;
|
|
private static readonly ILog Log = LogManager.GetLogger(typeof(BalanceTransferController));
|
|
public BalanceTransferController() { }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="requestServices"></param>
|
|
/// <param name="authenticationBusiness"></param>
|
|
public BalanceTransferController(IBalanceTransferBusiness requestServices)
|
|
{
|
|
_requestServices = requestServices;
|
|
}
|
|
|
|
/// <summary>
|
|
/// This method is called to initiate balance transfer by the requester(Customer). It returns AES encrypted value ans SHA-1 checksum.
|
|
/// </summary>
|
|
/// <param name="userId"></param>
|
|
/// <param name="amount"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[TokenAuthentication]
|
|
[Route("mobile/initBalanceTransfer")]
|
|
public IHttpActionResult InitBalanceTransfer(InitBalanceTransfer initBalanceTransfer)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = initBalanceTransfer.userId;
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "InitBalanceTransfer";
|
|
Log.Debug("User trying to initiate balance transfer." + JsonConvert.SerializeObject(initBalanceTransfer));
|
|
if (ModelState.IsValid)
|
|
{
|
|
var initBalanceTransferResponse = _requestServices.InitBalanceTransfer(initBalanceTransfer);
|
|
return Ok(initBalanceTransferResponse);
|
|
}
|
|
return ModelValidationError(ModelState);
|
|
}
|
|
|
|
[HttpPost]
|
|
[TokenAuthentication]
|
|
[Route("mobile/confirmBalanceTransferRequest")]
|
|
public IHttpActionResult ConfirmBalanceTransferRequest(ConfirmBalanceTransfer confirmBalanceTransfer)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = confirmBalanceTransfer.userId;
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "ConfirmBalanceTransferRequest";
|
|
Log.Debug("User trying to confirm balance transfer." + JsonConvert.SerializeObject(confirmBalanceTransfer));
|
|
if (ModelState.IsValid)
|
|
{
|
|
var confirmBalanceTransferResponse = _requestServices.ConfirmBalanceTransfer(confirmBalanceTransfer);
|
|
return Ok(confirmBalanceTransferResponse);
|
|
}
|
|
return ModelValidationError(ModelState);
|
|
}
|
|
|
|
[HttpPost]
|
|
[TokenAuthentication]
|
|
[Route("mobile/performBalanceTransferRequest")]
|
|
public IHttpActionResult PerformBalanceTransferRequest(PerformBalanceTransfer performBalanceTransfer)
|
|
{
|
|
LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid();
|
|
LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = performBalanceTransfer.userId;
|
|
LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "PerformBalanceTransferRequest";
|
|
Log.Debug("User trying to peroform balance transfer." + JsonConvert.SerializeObject(performBalanceTransfer));
|
|
if (ModelState.IsValid)
|
|
{
|
|
var performBalanceTransferResponse = _requestServices.PerformBalanceTransfer(performBalanceTransfer);
|
|
return Ok(performBalanceTransferResponse);
|
|
}
|
|
return ModelValidationError(ModelState);
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|