using Business.Addressy; using Business.Authentication; using Business.Mobile; using Common; using Common.Model; using Common.Model.Addressy; using Common.Model.Customer; using JsonRx.AuthFilter; using JsonRx.Helper; using log4net; using Newtonsoft.Json; using System; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Http.ModelBinding; namespace JsonRx.Api { /// /// [RoutePrefix("api/v3")] public class CustomerV2Controller : ApiController { private readonly IMobileServices _requestServices; private readonly IAuthenticationBusiness _authenticationBusiness; private static readonly ILog Log = LogManager.GetLogger(typeof(CustomerV2Controller)); /// /// public CustomerV2Controller() { } /// /// /// /// public CustomerV2Controller(IMobileServices requestServices, IAuthenticationBusiness authenticationBusiness) { _requestServices = requestServices; _authenticationBusiness = authenticationBusiness; } /// /// Customer Profile /// /// [HttpGet] [TokenAuthentication] [Route("mobile/{customer}/receiverinfo")] public IHttpActionResult GetReceiverInformation(string customer) { LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid(); LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = customer; LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GetReceiverInformation"; var customerId = customer; Log.Debug("GetCountriesServices | REQUEST : Customer: " + customer); var kycResponse = _requestServices.GetReceiverInformation(customerId); return Ok(kycResponse); } /// /// Customer Profile /// /// [HttpPost] [TokenAuthentication] [Route("mobile/{customer}/receiverinfo/add")] public IHttpActionResult AddReceiver(string customer, ReceiverInfoModel receiver) { LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid(); LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = customer; LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "AddReceiver"; var customerId = customer; receiver.deviceType = Util.GetDeviceType(Request); Log.DebugFormat("AddReceiver | REQUEST {0} | deviceType {1} ", JsonConvert.SerializeObject(receiver), receiver.deviceType); JsonRxResponse res = new JsonRxResponse(); //if (string.IsNullOrEmpty(receiver.agent.id)) //{ // res.SetResponse("1", "Bank Is Required !"); // return Ok(res); //} //if (string.IsNullOrEmpty(receiver.firstName)) //{ // res.SetResponse("1", "FirstName Is Required !"); // return Ok(res); //} //if (string.IsNullOrEmpty(receiver.lastName)) //{ // res.SetResponse("1", "LastName Is Required !"); // return Ok(res); //} //if (string.IsNullOrEmpty(receiver.mobile)) //{ // res.SetResponse("1", "Mobile No. Is Required !"); // return Ok(res); //} //if (string.IsNullOrEmpty(receiver.address)) //{ // res.SetResponse("1", "Address Is Required !"); // return Ok(res); //} //if (string.IsNullOrEmpty(receiver.relationship)) //{ // res.SetResponse("1", "Relationship Is Required !"); // return Ok(res); //} //if (string.IsNullOrEmpty(receiver.nativeCountry)) //{ // res.SetResponse("1", "NativeCountry Is Required !"); // return Ok(res); //} var dbres = _requestServices.AddReceiver(customerId, receiver); Log.Debug("AddReceiver| RESPONSE " + JsonConvert.SerializeObject(dbres)); return Ok(dbres); } /// /// Customer Profile /// /// [HttpPost] [TokenAuthentication] [Route("mobile/{customer}/receiverinfo/modify/{receiverId}")] public IHttpActionResult ModifyReceiver(string customer, string receiverId, ReceiverInfoModel receiver) { LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid(); LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = customer; LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "ModifyReceiver"; var customerId = customer; receiver.deviceType = Util.GetDeviceType(Request); Log.Debug("ModifyReceiver | REQUEST : " + JsonConvert.SerializeObject(receiver)); var dbres = _requestServices.ModifyReceiver(customerId, receiverId, receiver); return Ok(dbres); } /// /// Customer Profile /// /// [HttpPost] [TokenAuthentication] [Route("mobile/{customer}/receiverinfo/remove/{receiverId}")] public IHttpActionResult RemoveReceiver(string customer, string receiverId) { LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid(); LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = customer; LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "RemoveReceiver"; Log.Debug("Trying to remove receiver"); var customerId = customer; var dbres = _requestServices.RemoveReceiver(customerId, receiverId); return Ok(dbres); } [HttpGet] [ApplicationLevelAuthentication] [Route("mobile/customerInfoAgree/{customer}")] public IHttpActionResult RegisterCustomer(string customer) { var httpRequest = HttpContext.Current.Request; LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid(); LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = customer; LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "customerInfoAgree"; var userName = customer; Log.DebugFormat("customerInfoAgree | REQUEST {0} | Agree: {1} ", customer, httpRequest["agreeYn"]); var custRegisterResponse = _requestServices.CustomerInfoAgree(userName, httpRequest["agreeYn"]); return Ok(custRegisterResponse); } //[HttpGet] //[ApplicationLevelAuthentication] ////[Route("")] //[Route("mobile/customerInfoAgree/{customer=customer}/{agreeYn=agreeYn}")] //public IHttpActionResult RegisterCustomerIOS(string customer, string agreeYn) //{ // var httpRequest = HttpContext.Current.Request; // LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid(); // LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = customer; // LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "RegisterCustomer"; // var userName = customer; // Log.DebugFormat("RegisterCustomerIOS.Agree | REQUEST {0} | Agree {1}: ", customer, agreeYn); // var custRegisterResponse = _requestServices.CustomerInfoAgree(userName, agreeYn); // return Ok(custRegisterResponse); //} [HttpPost] //[TokenAuthentication] [Route("mobile/AddressLookup")] public IHttpActionResult AddressLookup(QueryAddressDto dto) { LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid(); LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = dto.UserId; LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "AddressLookup"; Log.Debug("AddressLookup | REQUEST : " + JsonConvert.SerializeObject(dto)); LocateBusiness locateBusiness = new LocateBusiness(); var dbres = locateBusiness.QueryAddress(dto.PostalCode); return Ok(dbres); } } }