b6e4f83035
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>
44 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|