diff --git a/CompanyManagment.App.Contracts/Hubs/SendSmsHub.cs b/CompanyManagment.App.Contracts/Hubs/SendSmsHub.cs new file mode 100644 index 00000000..0327bf2d --- /dev/null +++ b/CompanyManagment.App.Contracts/Hubs/SendSmsHub.cs @@ -0,0 +1,20 @@ +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Microsoft.AspNetCore.SignalR; + +namespace CompanyManagment.App.Contracts.Hubs; + + +public class SendSmsHub : Hub +{ + + public async Task send(long id) + { + await Groups.AddToGroupAsync(Context.ConnectionId, GetGroupName(id)); + } + + public static string GetGroupName(long id) + { + return $"group-sms-{id}"; + } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/SmsResult/ISmsSettingApplication.cs b/CompanyManagment.App.Contracts/SmsResult/ISmsSettingApplication.cs index d3bc23ea..c1341a54 100644 --- a/CompanyManagment.App.Contracts/SmsResult/ISmsSettingApplication.cs +++ b/CompanyManagment.App.Contracts/SmsResult/ISmsSettingApplication.cs @@ -1,6 +1,8 @@ -using System.Threading.Tasks; +using System.Collections.Generic; +using System.Threading.Tasks; using _0_Framework.Application; using _0_Framework.Application.Enums; +using CompanyManagment.App.Contracts.InstitutionContract; namespace CompanyManagment.App.Contracts.SmsResult; @@ -46,4 +48,24 @@ public interface ISmsSettingApplication /// Task RemoveSetting(long id); + /// + /// دریافت لیست بدهکاران + /// + /// + /// + Task> GetSmsListData(TypeOfSmsSetting typeOfSmsSetting); + + /// + /// دریافت لیست کسانی که باید بلاک شوند + /// + /// + /// + Task> GetBlockSmsListData(TypeOfSmsSetting typeOfSmsSetting); + + /// + /// ارسال پیامک یاد آور آنی + /// + /// + /// + Task InstantSendReminderSms(List command); } \ No newline at end of file diff --git a/CompanyManagment.Application/SmsSettingApplication.cs b/CompanyManagment.Application/SmsSettingApplication.cs index 886b53c3..97414be5 100644 --- a/CompanyManagment.Application/SmsSettingApplication.cs +++ b/CompanyManagment.Application/SmsSettingApplication.cs @@ -1,8 +1,12 @@ using System; +using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using _0_Framework.Application; using _0_Framework.Application.Enums; +using Company.Domain.InstitutionContractAgg; using Company.Domain.SmsResultAgg; +using CompanyManagment.App.Contracts.InstitutionContract; using CompanyManagment.App.Contracts.SmsResult; namespace CompanyManagment.Application; @@ -10,10 +14,12 @@ namespace CompanyManagment.Application; public class SmsSettingApplication : ISmsSettingApplication { private readonly ISmsSettingsRepository _smsSettingsRepository; + private readonly IInstitutionContractRepository _institutionContractRepository; - public SmsSettingApplication(ISmsSettingsRepository smsSettingsRepository) + public SmsSettingApplication(ISmsSettingsRepository smsSettingsRepository, IInstitutionContractRepository institutionContractRepository) { _smsSettingsRepository = smsSettingsRepository; + _institutionContractRepository = institutionContractRepository; } @@ -103,4 +109,39 @@ public class SmsSettingApplication : ISmsSettingApplication { await _smsSettingsRepository.RemoveItem(id); } + + + + + + public async Task> GetSmsListData(TypeOfSmsSetting typeOfSmsSetting) + { + return await _institutionContractRepository.GetSmsListData(DateTime.Now, typeOfSmsSetting); + } + + public async Task> GetBlockSmsListData(TypeOfSmsSetting typeOfSmsSetting) + { + return await _institutionContractRepository.GetBlockListData(DateTime.Now); + } + + + public async Task InstantSendReminderSms(List command) + { + var op = new OperationResult(); + string typeOfSms = "یادآور بدهی ماهانه"; + string sendMessStart = "شروع یادآور آنی"; + string sendMessEnd = "پایان یادآور آنی"; + + if (command.Any()) + { + await _institutionContractRepository.SendReminderSmsToContractingParties(command, typeOfSms, sendMessStart, sendMessEnd); + return op.Succcedded(); + } + else + { + return op.Failed("موردی انتخاب نشده است"); + } + + + } } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs index c2a01eb7..c22b6588 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs @@ -28,6 +28,7 @@ using Company.Domain.WorkshopAgg; using CompanyManagment.App.Contracts.Employer; using CompanyManagment.App.Contracts.FinancialStatment; using CompanyManagment.App.Contracts.FinancilTransaction; +using CompanyManagment.App.Contracts.Hubs; using CompanyManagment.App.Contracts.InstitutionContract; using CompanyManagment.App.Contracts.InstitutionContractContactinfo; using CompanyManagment.App.Contracts.Law; @@ -35,6 +36,7 @@ using CompanyManagment.App.Contracts.TemporaryClientRegistration; using CompanyManagment.App.Contracts.Workshop; using CompanyManagment.App.Contracts.WorkshopPlan; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.SignalR; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; @@ -60,6 +62,7 @@ public class InstitutionContractRepository : RepositoryBase _hubContext; private readonly InstitutionContratVerificationParty _firstParty = new() { @@ -73,7 +76,7 @@ public class InstitutionContractRepository : RepositoryBase hubContext) : base(context) { _context = context; _employerRepository = employerRepository; @@ -83,6 +86,7 @@ public class InstitutionContractRepository : RepositoryBase("InstitutionContractExtensionTemp"); _institutionAmendmentTemp = @@ -3625,11 +3629,15 @@ public class InstitutionContractRepository : RepositoryBase + diff --git a/ServiceHost/Areas/Admin/Pages/Company/SmsResult/_SmsSettingPartials/ReminderSmsListData.cshtml b/ServiceHost/Areas/Admin/Pages/Company/SmsResult/_SmsSettingPartials/ReminderSmsListData.cshtml index 8cdcf3da..8f1d9257 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/SmsResult/_SmsSettingPartials/ReminderSmsListData.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/SmsResult/_SmsSettingPartials/ReminderSmsListData.cshtml @@ -67,7 +67,7 @@ + style="border-radius:5px;" href="#showmodal=@Url.Page("./SmsSettings", "InstantSendSms", new {typeOfSmsSetting = TypeOfSmsSetting.InstitutionContractDebtReminder})"> diff --git a/ServiceHost/Areas/Admin/Pages/Company/SmsResult/_SmsSettingPartials/_InstantReminderSms.cshtml b/ServiceHost/Areas/Admin/Pages/Company/SmsResult/_SmsSettingPartials/_InstantReminderSms.cshtml new file mode 100644 index 00000000..4dc20f08 --- /dev/null +++ b/ServiceHost/Areas/Admin/Pages/Company/SmsResult/_SmsSettingPartials/_InstantReminderSms.cshtml @@ -0,0 +1,101 @@ +@model List +@{ + int countIndex = 1; + + +} + + + +@foreach (var item in Model) +{ + + +
+ +
@countIndex
+
@item.PartyName
+
@item.PhoneNumber
+
@item.Amount
+
+ +
+ + @{ + countIndex++; + } +
+ + + + +
+
+ + + +} \ No newline at end of file diff --git a/ServiceHost/Program.cs b/ServiceHost/Program.cs index 7e3431e0..0286ff35 100644 --- a/ServiceHost/Program.cs +++ b/ServiceHost/Program.cs @@ -24,6 +24,7 @@ using ServiceHost.Test; using System.Text.Json.Serialization; using System.Text.Json; using _0_Framework.InfraStructure.Mongo; +using CompanyManagment.App.Contracts.Hubs; using CompanyManagment.EFCore.Services; using Microsoft.AspNetCore.CookiePolicy; using Microsoft.AspNetCore.Mvc.Infrastructure; @@ -384,6 +385,7 @@ app.MapHub("/trackingHub"); app.MapHub("/trackingSmsHub"); app.MapHub("/trackingHolidayHub"); app.MapHub("/trackingCheckoutHub"); +app.MapHub("/trackingSendSmsHub"); app.MapRazorPages(); app.MapControllers(); diff --git a/ServiceHost/Properties/launchSettings.json b/ServiceHost/Properties/launchSettings.json index 5a68a777..fd650415 100644 --- a/ServiceHost/Properties/launchSettings.json +++ b/ServiceHost/Properties/launchSettings.json @@ -19,7 +19,7 @@ "sqlDebugging": true, "dotnetRunMessages": "true", "nativeDebugging": true, - "applicationUrl": "https://localhost:5004;http://localhost:5003;https://192.168.0.118:8080;http://192.168.0.118:8081", + "applicationUrl": "https://localhost:5004;http://localhost:5003", "jsWebView2Debugging": false, "hotReloadEnabled": true }, diff --git a/ServiceHost/appsettings.Development.json b/ServiceHost/appsettings.Development.json index 5efba4b6..55967203 100644 --- a/ServiceHost/appsettings.Development.json +++ b/ServiceHost/appsettings.Development.json @@ -12,7 +12,7 @@ //"MesbahDb": "Data Source=DESKTOP-NUE119G\\MSNEW;Initial Catalog=Mesbah_db;Integrated Security=True" //server - "MesbahDbServer": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]18[3019]#@ATt;TrustServerCertificate=true;", + //"MesbahDbServer": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]18[3019]#@ATt;TrustServerCertificate=true;", //local "MesbahDb": "Data Source=.;Initial Catalog=mesbah_db;Integrated Security=True;TrustServerCertificate=true;",