public async Task <IActionResult> CampaignPayment(CreateCampaignPaymentViewModel model) { var paymentResult = await _paymentService.CreateAgencyPayment(CurrentUser.Id, model, CurrentUser.Username); var campaign = await _campaignService.GetCampaignById(model.CampaignId); if (paymentResult.Status == Core.Entities.TransactionStatus.Completed && paymentResult.Amount > 0) { BackgroundJob.Enqueue <ICampaignService>(m => m.RequestJoinCampaignByAgency(CurrentUser.Id, model.CampaignId, CurrentUser.Username)); //########### Longhk add create notification ########################################################## string _msg = string.Format("Chiến dịch \"{0}\" đã được thanh toán bởi doanh nghiệp \"{1}\", với số tiền {2}.", campaign.Title, CurrentUser.Name, paymentResult.Amount.ToPriceText()); string _data = "Campaign"; await _notificationService.CreateNotification(model.CampaignId, EntityType.System, 0, NotificationType.AgencyPayCampaignService, _msg, _data); //##################################################################################################### } if (paymentResult.ErrorCode == PaymentResultErrorCode.ChoHeThongDuyetRutTien) { try { //########### Longhk add create notification ########################################################## string _msg = string.Format("Doanh nghiệp \"{0}\" yêu cầu rút tiền chiến dịch \"{1}\", với số tiền {2}.", CurrentUser.Name, campaign.Title, paymentResult.Amount.ToPriceText()); string _data = "Transaction"; await _notificationService.CreateNotification(paymentResult.TransactionId, EntityType.System, 0, NotificationType.AgencyRequestWithdrawFromCampaign, _msg, _data); //##################################################################################################### } catch { } } ViewBag.PaymentResult = paymentResult; return(PartialView("ModalPaymentMessage")); }
public async Task <PaymentResultViewModel> CreateAgencyPayment(int agencyId, CreateCampaignPaymentViewModel model, string username) { var payment = await _campaignRepository.GetCampaignPaymentByAgency(agencyId, model.CampaignId); if (payment == null) { return(new PaymentResultViewModel(PaymentResultErrorCode.ThongTinThanhToanKhongChinhXac)); } long amount = 0; var senderId = 0; var receiverId = 0; var transactionType = TransactionType.Undefined; var refId = payment.CampaignId; var refData = string.Empty; if (payment.IsValid) { //service charge --> tru tien cho agency ; + tien cho he thong receiverId = await _walletRepository.GetSystemId(); senderId = await _walletRepository.GetWalletId(Core.Entities.EntityType.Agency, agencyId); amount = payment.TotalChargeValue; transactionType = amount > 0 ? TransactionType.CampaignServiceCharge : TransactionType.CampaignServiceCashBack; return(await Pay(senderId, receiverId, amount, transactionType, model.Note, username, refId, refData)); } return(new PaymentResultViewModel(PaymentResultErrorCode.ThongTinThanhToanKhongChinhXac)); }
public async Task <IActionResult> CampaignPayment(CreateCampaignPaymentViewModel model) { var paymentResult = await _paymentService.CreateAgencyPayment(CurrentUser.Id, model, CurrentUser.Username); if (paymentResult.Status == Core.Entities.TransactionStatus.Completed && paymentResult.Amount > 0) { BackgroundJob.Enqueue <ICampaignService>(m => m.RequestJoinCampaignByAgency(CurrentUser.Id, model.CampaignId, CurrentUser.Username)); } ViewBag.PaymentResult = paymentResult; return(PartialView("ModalPaymentMessage")); }
public async Task <PaymentResultViewModel> CreateAgencyPayment(int agencyId, CreateCampaignPaymentViewModel model, string username) { var payment = await _campaignRepository.GetCampaignPaymentByAgency(agencyId, model.CampaignId); if (payment == null) { return(new PaymentResultViewModel(PaymentResultErrorCode.ThongTinThanhToanKhongChinhXac)); } long amount = 0; long amountOriginal = 0; var senderId = 0; var receiverId = 0; var transactionType = TransactionType.Undefined; var refId = payment.CampaignId; var refData = string.Empty; if (payment.IsValid) { //service charge --> tru tien cho agency ; + tien cho he thong receiverId = await _walletRepository.GetSystemId(); senderId = await _walletRepository.GetWalletId(Core.Entities.EntityType.Agency, agencyId); amount = payment.TotalChargeValue; amountOriginal = payment.TotalOriginalChargeAmount; transactionType = amount > 0 ? TransactionType.CampaignServiceCharge : TransactionType.CampaignServiceCashBack; if (transactionType == TransactionType.CampaignServiceCharge) { //############# a Long sửa ############################################################# PaymentResultViewModel _PaymentResultViewModel = await Pay(senderId, receiverId, amount, amountOriginal, transactionType, model.Note, username, refId, refData); if (_PaymentResultViewModel.Status == TransactionStatus.Completed && _PaymentResultViewModel.Amount > 0) { foreach (var campaignAccount in payment.CampaignAccounts) { //update campaign account mark as agency had paid var arrIgnoreStatus = new List <CampaignAccountStatus>() { CampaignAccountStatus.Canceled, CampaignAccountStatus.Unfinished, CampaignAccountStatus.AccountRequest, CampaignAccountStatus.AgencyRequest, CampaignAccountStatus.WaitToPay, CampaignAccountStatus.All, CampaignAccountStatus.NeedToCheckExcecuteCampaign, CampaignAccountStatus.AgencyCanceled }; if (!arrIgnoreStatus.Contains(campaignAccount.Status) && campaignAccount.MerchantPaidToSystem == false) { await _campaignAccountRepository.UpdateMerchantPaidToSystem(campaignAccount.Id, true); } } } //##################################################################################### return(_PaymentResultViewModel); } // nếu là yêu cầu rút tiền -- Đổi sender - recivert -> số tiền dương var transactionid = await _transactionRepository.CreateTransaction(receiverId, senderId, 0 - amount, transactionType, model.Note, string.Empty, username, refId, refData); return(new PaymentResultViewModel(PaymentResultErrorCode.ChoHeThongDuyetRutTien, transactionid, 0 - amount)); // anh Longhk bổ sung } return(new PaymentResultViewModel(PaymentResultErrorCode.ThongTinThanhToanKhongChinhXac)); }