From ca9d4f00bc65e45b8163e353408affab4f5586ea Mon Sep 17 00:00:00 2001 From: shakun Date: Fri, 20 Oct 2023 00:40:12 +0545 Subject: [PATCH] Add new methods DownloadStatement Update Profile --- Business/Business.csproj | 1 + Business/Mobile/MobileServices.cs | 74 +++------ Business/MobileV2/IMobileV2Business.cs | 9 +- Business/MobileV2/MobileV2Business.cs | 28 +++- Business/SendMoney/SendMoneyBusiness.cs | 19 ++- Business/Utility/AesOperation.cs | 64 ++++++++ Common/APIJsonResponse.cs | 2 + Common/Model/JsonRxResponse.cs | 9 ++ Common/Model/TPSendMoney/TpSendMoney.cs | 3 + Common/Model/TranHistoryResponse.cs | 5 + Common/Model/TransactionResponse.cs | 2 +- Common/Model/WalletStatementResponse.cs | 23 ++- JsonRx/Api/CustomerController.cs | 1 + JsonRx/ApiV3/MobileV3Controller.cs | 33 +++- .../TokenAuthenticationAttribute.cs | 17 ++- JsonRx/Helper/Util.cs | 7 +- JsonRx/Web.config | 4 + Repository/Mobile/MobileServicesRepo.cs | 117 +++++++++++--- Repository/MobileV2/IMobileV2Repo.cs | 2 + Repository/MobileV2/MobileV2Repo.cs | 144 ++++++++++++++++-- 20 files changed, 446 insertions(+), 118 deletions(-) create mode 100644 Business/Utility/AesOperation.cs diff --git a/Business/Business.csproj b/Business/Business.csproj index 5609c49..2fdd819 100644 --- a/Business/Business.csproj +++ b/Business/Business.csproj @@ -125,6 +125,7 @@ + diff --git a/Business/Mobile/MobileServices.cs b/Business/Mobile/MobileServices.cs index 7cb2233..b1214b6 100644 --- a/Business/Mobile/MobileServices.cs +++ b/Business/Mobile/MobileServices.cs @@ -1014,26 +1014,29 @@ namespace Business.Mobile // kyc.mobile = jsonRxMobile.Extra; //} - - if (string.IsNullOrEmpty(kyc.otherOccupation) && string.IsNullOrEmpty(kyc.occupation)) - { - enumString = RESPONSE_MSG.VALIDATE_FORM_2.ToString(); - var map = Utilities.GetLanguageMapping(enumString, lang); - jsonRx.SetResponse("1", map.Message); - - return jsonRx; - } - else if (string.IsNullOrEmpty(kyc.occupation)) + if(kyc.type.Equals("0")) { - if (string.IsNullOrEmpty(kyc.otherOccupation)) + if (string.IsNullOrEmpty(kyc.otherOccupation) && string.IsNullOrEmpty(kyc.occupation)) { - enumString = RESPONSE_MSG.VALIDATE_FORM_9.ToString(); + enumString = RESPONSE_MSG.VALIDATE_FORM_2.ToString(); var map = Utilities.GetLanguageMapping(enumString, lang); jsonRx.SetResponse("1", map.Message); return jsonRx; } + else if (string.IsNullOrEmpty(kyc.occupation)) + { + if (string.IsNullOrEmpty(kyc.otherOccupation)) + { + enumString = RESPONSE_MSG.VALIDATE_FORM_9.ToString(); + var map = Utilities.GetLanguageMapping(enumString, lang); + jsonRx.SetResponse("1", map.Message); + + return jsonRx; + } + } } + //if (string.IsNullOrEmpty(kyc.idNumber)) //{ @@ -2030,7 +2033,6 @@ namespace Business.Mobile try { - List bodyMappings = new List(); bodyMappings.Add(new Notify.Mapping() { SValue = "CustomerName", SText = res.Extra2 }); bodyMappings.Add(new Notify.Mapping() { SValue = "EMAIL_ID", SText = pwdReset.Username }); @@ -2125,56 +2127,16 @@ namespace Business.Mobile if (liWalletStmtResponse == null) { - jsonRx.ErrorCode = "0"; + jsonRx.ErrorCode = "1"; jsonRx.Msg = "No wallet statement found."; jsonRx.Data = new System.Collections.ArrayList(); Log.Debug("GetWalletStatement | Returning null while fetching the list of wallet statements."); return jsonRx; } - double OpenBalnce = 0.0; - foreach (var item in liWalletStmtResponse) - { - if (item.Particular.ToString().ToUpper() == "BALANCE BROUGHT FORWARD") - { - OpenBalnce = GetStatic.ParseDouble(item.ClosingAmount.ToString()); - } - else - { - item.ClosingAmount = (OpenBalnce + GetStatic.ParseDouble(item.WalletIn) - GetStatic.ParseDouble(item.WalletOut)).ToString(); - OpenBalnce = GetStatic.ParseDouble(item.ClosingAmount); - } - - //item.ClosingAmount = GetStatic.ShowCommaAmt(item.ClosingAmount); - item.WalletIn = GetStatic.ShowCommaAmt(item.WalletIn); - item.WalletOut = GetStatic.ShowCommaAmt(item.WalletOut); - } - if (liWalletStmtResponse[0].Particular.ToString().ToUpper() == "BALANCE BROUGHT FORWARD") - { - liWalletStmtResponse.RemoveAt(0); - } - liWalletStmtResponse.Add(new WalletStatementResponse() - { - Particular = "BALANCE BROUGHT FORWARD", - ClosingAmount = OpenBalnce.ToString() - }); - jsonRx.SetResponse("0", liWalletStmtResponse.Count.ToString() + " wallet txn"); + jsonRx.ErrorCode ="0"; + jsonRx.Data = liWalletStmtResponse; - List list = new List(); - - for (int i = liWalletStmtResponse.Count - 1; i >= 0; i--) - { - list.Add(new WalletStatementResponse() - { - Particular = liWalletStmtResponse[i].Particular, - TransactionDate = liWalletStmtResponse[i].TransactionDate, - WalletIn = liWalletStmtResponse[i].WalletIn, - WalletOut = liWalletStmtResponse[i].WalletOut, - ClosingAmount = GetStatic.ShowCommaAmt(liWalletStmtResponse[i].ClosingAmount) - }); - } - jsonRx.Data = list; - Log.Debug("GetWalletStatement | DB RESPONSE : " + JsonConvert.SerializeObject(jsonRx)); return jsonRx; } diff --git a/Business/MobileV2/IMobileV2Business.cs b/Business/MobileV2/IMobileV2Business.cs index b4320a3..784c449 100644 --- a/Business/MobileV2/IMobileV2Business.cs +++ b/Business/MobileV2/IMobileV2Business.cs @@ -14,8 +14,7 @@ namespace Business.MobileV2 JsonRxResponse GetReceiverInformationV2(DateFilterParams search, string customerId, string countryId); JsonRxResponse RefreshDashboardInformationV2(UserModel model); CustomerDetailV2 GetCustomerProfile(string userId); - - JsonRxResponse SaveCustomerProfile(CustomerDetailV2 profileV2); + JsonRxResponse CustomerProfile(CustomerProfileV2 profileV2); @@ -23,5 +22,11 @@ namespace Business.MobileV2 JsonRxResponse SaveKycSettings(KycOption kycRequest); + JsonRxResponse DownLoadStatement(DateFilterParams search, string userId); + + JsonRxResponse UpdateCustomerProfile(CustomerDetailV2 profileV2); + //JsonRxResponse UpdateProfile(CustomerDetailV2 req); } + + } diff --git a/Business/MobileV2/MobileV2Business.cs b/Business/MobileV2/MobileV2Business.cs index 2aee6f2..d867b6d 100644 --- a/Business/MobileV2/MobileV2Business.cs +++ b/Business/MobileV2/MobileV2Business.cs @@ -136,13 +136,6 @@ namespace Business.Mobile return v2; } - public JsonRxResponse SaveCustomerProfile(CustomerDetailV2 profileV2) - { - JsonRxResponse jsonRx = new JsonRxResponse() { ErrorCode ="0", Msg = "Success" }; - return jsonRx; - - - } public JsonRxResponse CustomerProfile(CustomerProfileV2 profileV2) { @@ -318,5 +311,26 @@ namespace Business.Mobile Log.Debug("Done with Saving "); return $"{membershipId}/{fileName}"; } + + public JsonRxResponse DownLoadStatement(DateFilterParams search, string userId) + { + JsonRxResponse jsonRx = new JsonRxResponse() { ErrorCode = "0", Msg = "Success" }; + jsonRx.Data = "http://77.68.15.91:1082/download/sample.pdf"; + return jsonRx; + + + } + + + public JsonRxResponse UpdateCustomerProfile(CustomerDetailV2 profileV2) + { + + JsonRxResponse jsonRx = _requestServicesv2.UpdateCustomerProfile(profileV2); + + return jsonRx; + + + } + } } diff --git a/Business/SendMoney/SendMoneyBusiness.cs b/Business/SendMoney/SendMoneyBusiness.cs index aaa034c..44d4d70 100644 --- a/Business/SendMoney/SendMoneyBusiness.cs +++ b/Business/SendMoney/SendMoneyBusiness.cs @@ -1,5 +1,6 @@ using Business.KFTCBusiness; using Business.TPApi; +using Business.Utility; using Common; using Common.Helper; using Common.Language; @@ -22,6 +23,7 @@ using System.IO; using System.Runtime.Remoting.Messaging; using System.Text; using System.Threading.Tasks; +using System.Web; using Notify = Common.Model.Notification; namespace Business.SendMoney @@ -492,7 +494,9 @@ namespace Business.SendMoney TpPCurr = model.TpPCurr, TransferAmt = model.TransferAmt, UserName = model.User, - DiscountedFee = model.DiscountedFee + DiscountedFee = model.DiscountedFee, + SiteId = ConfigurationManager.AppSettings["sitereference"].ToString() + }; @@ -509,7 +513,8 @@ namespace Business.SendMoney Data = result.Data, Extra = result.Extra, Extra2 = result.Extra2, - Extra3 = result.Extra3 + Extra3 = result.Extra3, + Extra4 = result.Extra4 }; if (response.ErrorCode.Equals("0")) @@ -517,14 +522,16 @@ namespace Business.SendMoney //var randomPassword = PasswordGenerator.GenerateRandomPassword(new PasswordGenerator.PasswordOptions() //{ RequireDigit = true, RequiredLength = 10, RequiredUniqueChars = 2, RequireLowercase = true, RequireNonAlphanumeric = true, RequireUppercase = true }); + string eID = HttpUtility.UrlEncode( AesOperation.EncryptString(ConfigurationManager.AppSettings["encryptKey"].ToString(), result.Id)); + string eCn = HttpUtility.UrlEncode(AesOperation.EncryptString(ConfigurationManager.AppSettings["encryptKey"].ToString(), result.Extra)); Gateway gateway = new Gateway() { Code = result.Extra2, IsRedirect = result.Extra3.Equals("Y") ? true : false, //Token = randomPassword, - RedirectURL = $"https:////uat.imelondon.co.uk:1081/payment/STPaymentCustomerRedirect.aspx?id={result.Id}&ref={Guid.NewGuid()}&token=", - CheckSuccessURL = "https://uat.imelondon.co.uk:1081/payment/STPaymentSuccess.aspx", - CheckFailURL = "https://uat.imelondon.co.uk:1081/payment/STPaymentFail.aspx" + RedirectURL = result.Extra3.Equals("Y") ? $"https:////uat.imelondon.co.uk:1081/payment/STPaymentCustomerRedirect.aspx?id={eID}&ref={response.Extra4}&cn={response.Extra}&token=" : "", + CheckSuccessURL = result.Extra3.Equals("Y") ? "https://uat.imelondon.co.uk:1081/payment/STPaymentSuccess.aspx" : "", + CheckFailURL = result.Extra3.Equals("Y") ? "https://uat.imelondon.co.uk:1081/payment/STPaymentFail.aspx" : "" }; response.Data = gateway; @@ -533,9 +540,7 @@ namespace Business.SendMoney try { UserDetails userDetails = _requestServices.GetUserDetails(email); - List bodyMappings = new List(); - bodyMappings.Add(new Notify.Mapping() { SValue = "CustomerName", SText = userDetails.FullName }); SendNotificationRequest request = new SendNotificationRequest() diff --git a/Business/Utility/AesOperation.cs b/Business/Utility/AesOperation.cs new file mode 100644 index 0000000..f004277 --- /dev/null +++ b/Business/Utility/AesOperation.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace Business.Utility +{ + public static class AesOperation + { + public static string EncryptString(string key, string plainText) + { + byte[] iv = new byte[16]; + byte[] array; + + using (Aes aes = Aes.Create()) + { + aes.Key = Encoding.UTF8.GetBytes(key); + aes.IV = iv; + + ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV); + + using (MemoryStream memoryStream = new MemoryStream()) + { + using (CryptoStream cryptoStream = new CryptoStream((Stream)memoryStream, encryptor, CryptoStreamMode.Write)) + { + using (StreamWriter streamWriter = new StreamWriter((Stream)cryptoStream)) + { + streamWriter.Write(plainText); + } + + array = memoryStream.ToArray(); + } + } + } + return Convert.ToBase64String(array); + } + public static string DecryptString(string key, string cipherText) + { + byte[] iv = new byte[16]; + byte[] buffer = Convert.FromBase64String(cipherText); + + using (Aes aes = Aes.Create()) + { + aes.Key = Encoding.UTF8.GetBytes(key); + aes.IV = iv; + ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); + + using (MemoryStream memoryStream = new MemoryStream(buffer)) + { + using (CryptoStream cryptoStream = new CryptoStream((Stream)memoryStream, decryptor, CryptoStreamMode.Read)) + { + using (StreamReader streamReader = new StreamReader((Stream)cryptoStream)) + { + return streamReader.ReadToEnd(); + } + } + } + } + } + } +} diff --git a/Common/APIJsonResponse.cs b/Common/APIJsonResponse.cs index 50b3534..d213131 100644 --- a/Common/APIJsonResponse.cs +++ b/Common/APIJsonResponse.cs @@ -10,6 +10,8 @@ public string Extra1 { get; set; } public string Extra2 { get; set; } public string Extra3 { get; set; } + + public string Extra4 { get; set; } public string FootNoteMessage { get; set; } public void SetResponse(string responseCode, string msg, string id = null, string extra = null, string extra1 = null, string extra3 = null, string footNoteMessage = "") diff --git a/Common/Model/JsonRxResponse.cs b/Common/Model/JsonRxResponse.cs index 238ccfd..42e57ff 100644 --- a/Common/Model/JsonRxResponse.cs +++ b/Common/Model/JsonRxResponse.cs @@ -8,6 +8,7 @@ private string _extra = ""; private string _extra2 = ""; private string _extra3 = ""; + private string _extra4 = ""; private object _data = null; private string _footNoteMessage = ""; @@ -45,6 +46,14 @@ set { _extra3 = value; } get { return _extra3; } } + + public string Extra4 + { + set { _extra4 = value; } + get { return _extra4; } + } + + public object Data { set { _data = value; } diff --git a/Common/Model/TPSendMoney/TpSendMoney.cs b/Common/Model/TPSendMoney/TpSendMoney.cs index e774212..e347551 100644 --- a/Common/Model/TPSendMoney/TpSendMoney.cs +++ b/Common/Model/TPSendMoney/TpSendMoney.cs @@ -30,6 +30,9 @@ public string ScDiscount { get; set; } public string SchemeId { get; set; } public string DiscountedFee { get; set; } + + public string SiteId { get; set; } + public string Token { get; set; } } public class ReceiverInfo diff --git a/Common/Model/TranHistoryResponse.cs b/Common/Model/TranHistoryResponse.cs index abdc1e0..a0930fa 100644 --- a/Common/Model/TranHistoryResponse.cs +++ b/Common/Model/TranHistoryResponse.cs @@ -28,5 +28,10 @@ public string PayoutAgent { get; set; } public string DisplayActions { get; set; } + + public string ColorIcon { get; set; } + public string ColorCode { get; set; } + + public string TextCode { get; set; } } } \ No newline at end of file diff --git a/Common/Model/TransactionResponse.cs b/Common/Model/TransactionResponse.cs index 386f29d..2f26486 100644 --- a/Common/Model/TransactionResponse.cs +++ b/Common/Model/TransactionResponse.cs @@ -46,7 +46,7 @@ public string rewardPoints { get; set; } public string SenderFullName { get; set; } - + public string ColorIcon { get; set; } public PaymentDetails PaymentDetails { get; set; } } diff --git a/Common/Model/WalletStatementResponse.cs b/Common/Model/WalletStatementResponse.cs index e8e70ce..77fc9e9 100644 --- a/Common/Model/WalletStatementResponse.cs +++ b/Common/Model/WalletStatementResponse.cs @@ -2,11 +2,24 @@ { public class WalletStatementResponse { - public int RowId { get; set; } + // public int RowId { get; set; } public string TransactionDate { get; set; } - public string Particular { get; set; } - public string WalletIn { get; set; } - public string WalletOut { get; set; } - public string ClosingAmount { get; set; } + public string Particular { get; set; } + public string TranId { get; set; } + public string ControlNo { get; set; } + public string PayoutAmt { get; set; } + public string PCurr { get; set; } + public string CollAmt { get; set; } + public string CollCurr { get; set; } + public string PayStatus { get; set; } + public string PayoutMode { get; set; } + + public string ReceiverName { get; set; } + public string PayoutCountry { get; set; } + + + public string ColorCode { get; set; } + + public string TextCode { get; set; } } } \ No newline at end of file diff --git a/JsonRx/Api/CustomerController.cs b/JsonRx/Api/CustomerController.cs index 82f6786..4c50966 100644 --- a/JsonRx/Api/CustomerController.cs +++ b/JsonRx/Api/CustomerController.cs @@ -120,6 +120,7 @@ namespace JsonRx.Api Validate(newUserRegister); if (ModelState.IsValid) { + // newUserRegister.phoneOs = Util.GetDeviceType(Request); newUserRegister.FullName= newUserRegister.FullName.ToTitleCase(TitleCase.All); var custRegisterResponse = _requestServices.NewUserRegister(newUserRegister); diff --git a/JsonRx/ApiV3/MobileV3Controller.cs b/JsonRx/ApiV3/MobileV3Controller.cs index 4361ec9..47c5bdb 100644 --- a/JsonRx/ApiV3/MobileV3Controller.cs +++ b/JsonRx/ApiV3/MobileV3Controller.cs @@ -114,14 +114,14 @@ namespace JsonRx.ApiV3 [Route("mobile/GetKycSettings")] public IHttpActionResult GetKycSettings(KycRequest kycRequest) { - + LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid(); LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = kycRequest.UserId; LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "GetKycSettings"; Log.Debug("GetKycSettings | REQUEST : " + JsonConvert.SerializeObject(kycRequest)); - + JsonRxResponse custResponse = new JsonRxResponse(); if (string.IsNullOrEmpty(kycRequest.UserId)) @@ -221,8 +221,35 @@ namespace JsonRx.ApiV3 return Ok(custResponse); } - + custResponse = _requestServicesV2.UpdateCustomerProfile(request); return Ok(custResponse); + + } + + + /// + /// + /// + /// + /// + [HttpPost] + [TokenAuthentication] + [Route("mobile/DownLoadStatement/{userId}")] + public IHttpActionResult DownLoadStatement(DateFilterParams search, string userId) + { + LogicalThreadContext.Properties[LoggerProperty.PROCESSID] = Guid.NewGuid(); + LogicalThreadContext.Properties[LoggerProperty.CREATEDBY] = userId; + LogicalThreadContext.Properties[LoggerProperty.METHODNAME] = "DownLoadStatement"; + Log.Debug("DownLoadStatement | 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 = _requestServicesV2.DownLoadStatement(search, userId); + return Ok(walletStatement); } } diff --git a/JsonRx/AuthFilter/TokenAuthenticationAttribute.cs b/JsonRx/AuthFilter/TokenAuthenticationAttribute.cs index f577f28..26ba12f 100644 --- a/JsonRx/AuthFilter/TokenAuthenticationAttribute.cs +++ b/JsonRx/AuthFilter/TokenAuthenticationAttribute.cs @@ -44,7 +44,7 @@ namespace JsonRx.AuthFilter //} var lang = "en-us"; - + try { IEnumerable langs = null; @@ -60,7 +60,7 @@ namespace JsonRx.AuthFilter HttpResponseMessage httpResponse; string token; //determine whether a jwt exists or not - if (!TryRetrieveToken(actionContext.Request, out token)) + if (!TryRetrieveToken(actionContext.Request, out token, actionName)) { //allow requests with no token - whether a action method needs an authentication can be set with the claimsauthorization attribute // return base.SendAsync(request, cancellationToken); @@ -94,7 +94,7 @@ namespace JsonRx.AuthFilter //extract and assign the user of the jwt //Thread.CurrentPrincipal = handler.ValidateToken(token, validationParameters, out securityToken); // - + var cp = handler.ValidateToken(token, validationParameters, out securityToken); var guid = ""; @@ -122,7 +122,7 @@ namespace JsonRx.AuthFilter } } - + if (string.IsNullOrEmpty(guid)) { httpResponse = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized, new JsonRxResponse @@ -166,7 +166,7 @@ namespace JsonRx.AuthFilter } catch (Exception ex) { - Log.Error("TokenAuthenticationAttribute Exception: " + actionName+ "|" + token, ex); + Log.Error("TokenAuthenticationAttribute Exception: " + actionName + "|" + token, ex); httpResponse = actionContext.Request.CreateResponse(HttpStatusCode.InternalServerError, new JsonRxResponse { ErrorCode = "1", @@ -183,8 +183,9 @@ namespace JsonRx.AuthFilter /// /// /// - private static bool TryRetrieveToken(HttpRequestMessage request, out string token) + private static bool TryRetrieveToken(HttpRequestMessage request, out string token, string action = "") { + token = null; IEnumerable authzHeaders; IEnumerable Token; @@ -195,14 +196,14 @@ namespace JsonRx.AuthFilter } if (!request.Headers.TryGetValues("GME-TOKEN", out Token) || Token.Count() > 1) { - Log.Debug("TryRetrieveToken GME-TOKEN"); + Log.Debug("TryRetrieveToken GME-TOKEN| " + action); return false; } var bearerToken = Token.ElementAt(0); // token = bearerToken.StartsWith("GME-TOKEN ") ? bearerToken.Substring(10) : bearerToken; if (bearerToken != ConfigurationManager.AppSettings["GME_TOKEN"].ToString()) { - Log.DebugFormat("TryRetrieveToken GME-TOKEN {0}<> bearerToken{1}", ConfigurationManager.AppSettings["GME_TOKEN"].ToString(), bearerToken); + Log.DebugFormat("TryRetrieveToken GME-TOKEN {0}<> bearerToken{1} {2}", ConfigurationManager.AppSettings["GME_TOKEN"].ToString(), bearerToken, action); return false; } bearerToken = authzHeaders.ElementAt(0); diff --git a/JsonRx/Helper/Util.cs b/JsonRx/Helper/Util.cs index fcca992..62098f4 100644 --- a/JsonRx/Helper/Util.cs +++ b/JsonRx/Helper/Util.cs @@ -7,6 +7,8 @@ using System.IdentityModel.Tokens.Jwt; using System.IO; using System.Linq; using System.Net.Http; +using System.Security.Cryptography; +using System.Text; using System.Web; namespace JsonRx.Helper @@ -240,7 +242,7 @@ namespace JsonRx.Helper public static string GetFullName(string fname, string mname, string lname) { string fullName = string.Empty; - + fullName = string.Format("{0} {1}", (!string.IsNullOrEmpty(mname)) ? fname + " " + mname : fname, lname); return fullName; } @@ -283,7 +285,10 @@ namespace JsonRx.Helper } return ci.TextInfo.ToTitleCase(str); } + + } + public enum TitleCase { diff --git a/JsonRx/Web.config b/JsonRx/Web.config index 31c7544..8f4dfa1 100644 --- a/JsonRx/Web.config +++ b/JsonRx/Web.config @@ -96,6 +96,10 @@ + + + +