public async Task <AppCore.Result> CheckCredit(Model.Account account, Model.MessageReceiver recMessage) { var sendCount = QueueHelper.Instance.SendCountDictionary[recMessage.SourceAccount]; if (sendCount % account.CreditAlertCount == 0) { var creditValue = await _GetCreditValue(account, recMessage); if (!creditValue.Success) { return(creditValue); } if (creditValue.Data <= account.AlertCreditAmount) { var sendAlertResult = await _SendAlertAsync(account, recMessage, creditValue.Data); if (!sendAlertResult.Success) { return(sendAlertResult); } } } QueueHelper.Instance.SendCountDictionary[recMessage.SourceAccount] = ++sendCount; return(AppCore.Result.Successful()); }
public async Task <AppCore.Result <long> > SendAsync(Model.MessageReceiver recMsg, Model.Account account) { var result = (await _sms.enqueueAsync( userName: account.UserName , password: account.Password , domain: account.Domain , useProxy: false , proxyAddress: string.Empty , proxyUsername: string.Empty , proxyPassword: string.Empty , count: 1 , senderNumber: account.Number , recipientNumber: recMsg.ReceiverNumber , text: recMsg.Content ))[0]; string finalResult; if (result < ErrorCodes.MAX_VALUE) { finalResult = "Error code: " + result + ", " + ErrorCodes.getDescriptionForCode((int)result); return(AppCore.Result <long> .Failure(code : (int)result, message : finalResult, data : result)); } else { finalResult = result.ToString(); } return(AppCore.Result <long> .Set(success : true, code : (int)result, data : result, message : finalResult)); }
private async Task <AppCore.Result> _SendAlertAsync(Model.Account account, Model.MessageReceiver recMessage, decimal remainingCredit) { var sendResult = await _messageService.SendAsync(new Message() { Content = $"اعتبار اکانت سامانه اس ام اس در حال اتمام است لطفا در اسرع وقت نسبت به شارژ آن اقدام نمایید" + $"{remainingCredit} : باقی مانده شارژ حساب اس ام اسی" , Priority = Priority.VeryHigh , SourceAccount = recMessage.SourceAccount , ReceiverNumbers = account.AdminNumbers.Select(s => s.Number).ToList() }); return(AppCore.Result.Successful()); }
private async Task <AppCore.Result> _SendAsync(Model.MessageReceiver recMsg) { var account = await _accountDataSource.GetAsync(recMsg.SourceAccountID); if (!account.Success) { return(AppCore.Result.Failure(message: account.Message, code: account.Code)); } AppCore.Result <long> sendResult; sendResult = await _outgoingService.SendAsync(recMsg, account.Data); if (sendResult.Success) { var checkCredit = await _credentialService.CheckCredit(account.Data, recMsg); //if(!checkCredit.Success) //log goes here } return(sendResult); }
private Task <AppCore.Result <decimal> > _GetCreditValue(Model.Account account, Model.MessageReceiver recMessage) => _outgoingService.GetCredit(account);