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

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