Files
meezi/src/Meezi.Infrastructure/DependencyInjection.cs
T
soroush.asadi b6e4f83035 Migrate Kavenegar SMS to official .NET SDK
Replace the raw HttpClient implementation with the Kavenegar NuGet SDK
(v1.2.4) for OTP, single, and bulk sends plus account info, wrapping the
synchronous SDK calls and translating its exceptions. Register the
service as scoped instead of via AddHttpClient.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 00:28:28 +03:30

44 lines
1.9 KiB
C#

using Meezi.Core.Interfaces;
using Meezi.Infrastructure.Data;
using Meezi.Infrastructure.ExternalServices;
using Meezi.Infrastructure.Services;
using Meezi.Infrastructure.Services.Platform;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace Meezi.Infrastructure;
public static class DependencyInjection
{
public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
{
var connectionString = configuration.GetConnectionString("DefaultConnection")
?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
services.AddDbContext<AppDbContext>(options =>
options.UseNpgsql(connectionString));
services.AddScoped<TenantContext>();
services.AddScoped<ITenantContext>(sp => sp.GetRequiredService<TenantContext>());
services.AddScoped<BranchContext>();
services.AddScoped<IBranchContext>(sp => sp.GetRequiredService<BranchContext>());
services.AddScoped<IPlatformRuntimeConfig, PlatformRuntimeConfig>();
services.AddMemoryCache();
services.AddScoped<IPlatformCatalogService, PlatformCatalogService>();
services.AddScoped<ISupportTicketService, SupportTicketService>();
services.AddScoped<ISmsService, KavenegarSmsService>();
services.AddHttpClient<IZarinPalGateway, ZarinPalGateway>();
services.AddHttpClient<ISnappPayGateway, SnappPayGateway>();
services.AddHttpClient<ITaraPaymentGateway, TaraPaymentGateway>();
services.AddHttpClient<ISnappfoodClient, SnappfoodClient>();
services.AddHttpClient<ITap30Client, Tap30Client>();
services.AddHttpClient<IPushSender, PusheNotificationSender>();
services.AddScoped<ITarazTaxService, TarazTaxService>();
return services;
}
}