289 lines
9.5 KiB
C#
289 lines
9.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices.ComTypes;
|
|
using System.Security.AccessControl;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using IPE.SmsIrClient;
|
|
using IPE.SmsIrClient.Models.Requests;
|
|
using IPE.SmsIrClient.Models.Results;
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
|
|
namespace _0_Framework.Application.Sms;
|
|
|
|
public class SmsService : ISmsService
|
|
{
|
|
private readonly IConfiguration _configuration;
|
|
|
|
public SmsService(IConfiguration configuration)
|
|
{
|
|
_configuration = configuration;
|
|
}
|
|
|
|
public void Send(string number, string message)
|
|
{
|
|
//var token = GetToken();
|
|
//var lines = new SmsLine().GetSmsLines(token);
|
|
//if (lines == null) return;
|
|
|
|
//var line = lines.SMSLines.Last().LineNumber.ToString();
|
|
//var data = new MessageSendObject
|
|
//{
|
|
// Messages = new List<string>
|
|
// {message}.ToArray(),
|
|
// MobileNumbers = new List<string> {number}.ToArray(),
|
|
// LineNumber = line,
|
|
// SendDateTime = DateTime.Now,
|
|
// CanContinueInCaseOfError = true
|
|
//};
|
|
//var messageSendResponseObject =
|
|
// new MessageSend().Send(token, data);
|
|
|
|
//if (messageSendResponseObject.IsSuccessful) return;
|
|
|
|
//line = lines.SMSLines.First().LineNumber.ToString();
|
|
//data.LineNumber = line;
|
|
//new MessageSend().Send(token, data);
|
|
}
|
|
public bool VerifySend(string number, string message)
|
|
{
|
|
|
|
SmsIr smsIr = new SmsIr("Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
|
|
|
|
//var bulkSendResult = smsIr.BulkSendAsync(95007079000006, "your text message", new string[] { "9120000000" });
|
|
|
|
var verificationSendResult = smsIr.VerifySendAsync(number, 768382, new VerifySendParameter[] { new VerifySendParameter("VerificationCode", message) });
|
|
Thread.Sleep(2000);
|
|
if (verificationSendResult.IsCompletedSuccessfully)
|
|
{
|
|
|
|
var resStartStatus = verificationSendResult.Result;
|
|
var b = resStartStatus.Status;
|
|
var resResult = verificationSendResult.Status;
|
|
var a = verificationSendResult.IsCompleted;
|
|
var reseExceptiont = verificationSendResult.Exception;
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
|
|
var resStartStatus = verificationSendResult.Status;
|
|
var resResult = verificationSendResult.Status;
|
|
var reseExceptiont = verificationSendResult.Exception;
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
public bool LoginSend(string number, string message)
|
|
{
|
|
SmsIr smsIr = new SmsIr("Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
|
|
|
|
//var bulkSendResult = smsIr.BulkSendAsync(95007079000006, "your text message", new string[] { "9120000000" });
|
|
|
|
var verificationSendResult = smsIr.VerifySendAsync(number, 635330, new VerifySendParameter[] { new VerifySendParameter("LOGINCODE", message) });
|
|
Thread.Sleep(2000);
|
|
if (verificationSendResult.IsCompletedSuccessfully)
|
|
{
|
|
|
|
var resStartStatus = verificationSendResult.Result;
|
|
var b = resStartStatus.Status;
|
|
var resResult = verificationSendResult.Status;
|
|
var a = verificationSendResult.IsCompleted;
|
|
var reseExceptiont = verificationSendResult.Exception;
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
|
|
var resStartStatus = verificationSendResult.Status;
|
|
var resResult = verificationSendResult.Status;
|
|
var reseExceptiont = verificationSendResult.Exception;
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public bool SendAccountsInfo(string number, string fullName, string userName)
|
|
{
|
|
|
|
var checkLength = fullName.Length;
|
|
if (checkLength > 25)
|
|
fullName = fullName.Substring(0, 24);
|
|
SmsIr smsIr = new SmsIr("Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
|
|
|
|
var sendResult = smsIr.VerifySendAsync(number, 725814, new VerifySendParameter[] { new VerifySendParameter("FULLNAME", fullName), new VerifySendParameter("USERNAME", userName), new VerifySendParameter("PASSWORD", userName) });
|
|
|
|
|
|
Console.WriteLine(userName + " - " + sendResult.Result.Status);
|
|
if (sendResult.IsCompletedSuccessfully)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
public async Task<ApiResultViewModel> GetByMessageId(int messId)
|
|
{
|
|
|
|
SmsIr smsIr = new SmsIr("Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
|
|
var response = await smsIr.GetReportAsync(messId);
|
|
MessageReportResult messages = response.Data;
|
|
|
|
var appendData = new ApiResultViewModel()
|
|
{
|
|
MessageId = messages.MessageId,
|
|
LineNumber = messages.LineNumber,
|
|
Mobile = messages.Mobile,
|
|
MessageText = messages.MessageText,
|
|
SendUnixTime = UnixTimeStampToDateTime(messages.SendDateTime),
|
|
DeliveryState = DeliveryStatus(messages.DeliveryState),
|
|
DeliveryUnixTime = UnixTimeStampToDateTime(messages.DeliveryDateTime),
|
|
DeliveryColor = DeliveryColorStatus(messages.DeliveryState),
|
|
};
|
|
return appendData;
|
|
}
|
|
public async Task<List<ApiResultViewModel>> GetApiResult(string startDate, string endDate)
|
|
{
|
|
var st = new DateTime(2024, 6, 2);
|
|
var ed = new DateTime(2024, 7, 1);
|
|
if (!string.IsNullOrWhiteSpace(startDate) && startDate.Length == 10)
|
|
{
|
|
st = startDate.ToGeorgianDateTime();
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(endDate) && endDate.Length == 10)
|
|
{
|
|
ed = endDate.ToGeorgianDateTime();
|
|
}
|
|
var res = new List<ApiResultViewModel>();
|
|
Int32 unixTimestamp = (int)st.Subtract(new DateTime(1970,1,1)).TotalSeconds;
|
|
Int32 unixTimestamp2 = (int)ed.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;
|
|
int? fromDateUnixTime = null; // unix time - for instance: 1700598600
|
|
int? toDateUnixTime = null; // unix time - for instance: 1703190600
|
|
int pageNumber = 2;
|
|
int pageSize = 100; // max: 100
|
|
SmsIr smsIr = new SmsIr("Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
|
|
var response = await smsIr.GetArchivedReportAsync(pageNumber, pageSize, unixTimestamp, unixTimestamp2);
|
|
|
|
|
|
MessageReportResult[] messages = response.Data;
|
|
foreach (var message in messages)
|
|
{
|
|
var appendData = new ApiResultViewModel()
|
|
{
|
|
MessageId = message.MessageId,
|
|
LineNumber = message.LineNumber,
|
|
Mobile = message.Mobile,
|
|
MessageText = message.MessageText,
|
|
SendUnixTime = UnixTimeStampToDateTime(message.SendDateTime),
|
|
DeliveryState = DeliveryStatus(message.DeliveryState),
|
|
DeliveryUnixTime = UnixTimeStampToDateTime(message.DeliveryDateTime),
|
|
DeliveryColor = DeliveryColorStatus(message.DeliveryState),
|
|
};
|
|
res.Add(appendData);
|
|
}
|
|
|
|
|
|
return res;
|
|
}
|
|
|
|
public string DeliveryStatus(byte? dv)
|
|
{
|
|
string mess = "";
|
|
switch (dv)
|
|
{
|
|
case 1:
|
|
mess = "رسیده به گوشی";
|
|
break;
|
|
case 2:
|
|
mess = "نرسیده به گوشی";
|
|
break;
|
|
case 3:
|
|
mess = "پردازش در مخابرات";
|
|
break;
|
|
case 4:
|
|
mess = "نرسیده به مخابرات";
|
|
break;
|
|
case 5:
|
|
mess = "سیده به مخابرات";
|
|
break;
|
|
case 6:
|
|
mess = "خطا";
|
|
break;
|
|
case 7:
|
|
mess = "لیست سیاه";
|
|
break;
|
|
default:
|
|
mess="";
|
|
break;
|
|
|
|
}
|
|
|
|
return mess;
|
|
}
|
|
public string DeliveryColorStatus(byte? dv)
|
|
{
|
|
string mess = "";
|
|
switch (dv)
|
|
{
|
|
case 1:
|
|
mess = "successSend";
|
|
break;
|
|
case 2:
|
|
mess = "errSend";
|
|
break;
|
|
case 3:
|
|
mess = "pSend";
|
|
break;
|
|
case 4:
|
|
mess = "noSend";
|
|
break;
|
|
case 5:
|
|
mess = "itcSend";
|
|
break;
|
|
case 6:
|
|
mess = "redSend";
|
|
break;
|
|
case 7:
|
|
mess = "blockSend";
|
|
break;
|
|
default:
|
|
mess = "";
|
|
break;
|
|
|
|
}
|
|
|
|
return mess;
|
|
}
|
|
public string UnixTimeStampToDateTime(int? unixTimeStamp)
|
|
{
|
|
if (unixTimeStamp != null)
|
|
{
|
|
// Unix timestamp is seconds past epoch
|
|
DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
|
|
dateTime = dateTime.AddSeconds(Convert.ToDouble(unixTimeStamp)).ToLocalTime();
|
|
var time = dateTime.ToFarsiFull();
|
|
return time;
|
|
}
|
|
|
|
return "";
|
|
}
|
|
private string GetToken()
|
|
{
|
|
return "";
|
|
//var smsSecrets = _configuration.GetSection("SmsSecrets");
|
|
//var tokenService = new Token();
|
|
//return tokenService.GetToken("x-api-key", "Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
|
|
}
|
|
}
|