using Common; using Common.Helper; using Common.KFTC; using Common.Model; using Common.Model.Resend; using Newtonsoft.Json; using Repository.Mobile; using Repository.Resend; using System; using System.Collections.Generic; using System.IO; using System.Runtime.Remoting.Messaging; namespace Business.Resend { public class ResendBusiness : IResendBusiness { private readonly IResendRepository _resendRepository; private readonly IMobileServicesRepo _mobileRepository; public ResendBusiness() { } public ResendBusiness(IResendRepository resendRepository, IMobileServicesRepo mobileServicesRepo) { _resendRepository = resendRepository; _mobileRepository = mobileServicesRepo; } public JsonRxResponse GetResendLists(DateFilterParams search, string customerId) { var tranList = _resendRepository.GetTransactionLists(search, customerId); List lsAccount = _mobileRepository.GetPaymentAccountsByCustomer(customerId); lsAccount.ForEach(x => x.KftcAccountId = Crypto.Encrypt(x.KftcAccountId, Utilities.ReadWebConfig("ktft_client_info_salt", ""))); tranList.ForEach(x => x.TranId = Crypto.Encrypt(x.TranId, Utilities.ReadWebConfig("ktft_client_info_salt", ""))); var str = new ResendTranList { Transactions = tranList, Accounts = lsAccount }; return new JsonRxResponse { ErrorCode = "0", Msg = "Success", Data = str }; } public JsonRxResponse GetTransactionSummary(string id) { ResendReceiverDetail receiverDetail; ExRateCalculateRequest rxDetail; MobileRemitRequest remitRequest; id = Crypto.Decrypt(id, Utilities.ReadWebConfig("ktft_client_info_salt", "")); JsonRxResponse mreq = _resendRepository.GetRemitDetail(id, out rxDetail, out remitRequest, out receiverDetail); if (mreq != null) { if (mreq.ErrorCode.Equals("0")) { var str = new ResendSummary(); var path = GetStatic.ReadWebConfig("ServiceType_Resource", ""); var text = File.ReadAllText(path); List sd = JsonConvert.DeserializeObject>(text); var lang = Convert.ToString(CallContext.GetData(Constants.Language)); if (string.IsNullOrEmpty(lang)) { lang = "en"; } var idx = sd.FindIndex(x => x.countryCode == lang); var data = new ServiceTypeDetails(); if (idx < 0) { data = sd[sd.FindIndex(x => x.countryCode == "en")]; } else { data = sd[idx]; } foreach (var item in receiverDetail.deliveryMethod) { switch (receiverDetail.deliveryMethod) { case "cash payment": rxDetail.serviceTypeDescription = data.cashPayment; break; case "bank deposit": rxDetail.serviceTypeDescription = data.bankDeposit; break; case "mobile wallet": rxDetail.serviceTypeDescription = data.mobileWallet; break; case "home delivery": rxDetail.serviceTypeDescription = data.homeDelivery; break; case "card payment": rxDetail.serviceTypeDescription = data.cardPayment; break; } } str.ExRate = rxDetail; str.RemitDetail = remitRequest; str.Receiver = receiverDetail; return new JsonRxResponse { ErrorCode = "0", Msg = "Success", Data = str }; } } return new JsonRxResponse { ErrorCode = "1", Msg = mreq.Msg, Data = null }; } } internal class ResendTranList { public List Transactions { get; set; } public List Accounts { get; set; } } internal class ResendSummary { public ExRateCalculateRequest ExRate { get; set; } public MobileRemitRequest RemitDetail { get; set; } public ResendReceiverDetail Receiver { get; set; } } }