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; using static System.Runtime.InteropServices.JavaScript.JSType; namespace _0_Framework.Application.Sms; public class SmsService : ISmsService { private readonly IConfiguration _configuration; public SmsIr SmsIr { get; set; } public SmsService(IConfiguration configuration) { _configuration = configuration; SmsIr = new SmsIr("Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa"); } 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 // {message}.ToArray(), // MobileNumbers = new List {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 async Task SendVerifyCodeToClient(string number, string code) { SmsIr smsIr = new SmsIr("Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa"); var result = new SentSmsViewModel(); //var bulkSendResult = smsIr.BulkSendAsync(95007079000006, "your text message", new string[] { "9120000000" }); var sendResult = await smsIr.VerifySendAsync(number, 768382, new VerifySendParameter[] { new VerifySendParameter("VerificationCode", code) }); Thread.Sleep(2000); if (sendResult.Message == "موفق") { var status = sendResult.Status; var message = sendResult.Message; var messaeId = sendResult.Data.MessageId; return result.Succedded(status, message, messaeId); } else { var status = sendResult.Status; var message = sendResult.Message; var messaeId = sendResult.Data.MessageId; return result.Failed(status, message, messaeId); } } 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 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> 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(); 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"); } #region Mahan public async Task GetCreditAmount() { try { var credit = await SmsIr.GetCreditAsync(); return (double)credit.Data; } catch { return -1; } } #endregion }