7dd51a1169
TaxBaik CI/CD / build-and-deploy (push) Successful in 48s
Architecture: - Create companies table with company_code as unique identifier - Add company_id foreign key to admin_users for multi-tenant support - Implement backward compatibility with DEFAULT company for existing users Core Components: - Company entity with full CRUD operations - ICompanyRepository interface following Repository pattern - CompanyRepository with Dapper implementation - CompanyService with business logic and validation - CompanyController with REST API endpoints Admin UI: - CompanyForm reusable component (Create/Edit pattern) - CompanyList.razor with pagination and company overview - CompanyCreate.razor for registering new companies - CompanyEdit.razor for managing existing companies with delete - All pages follow admin-page-hero pattern for consistency SOLID Principles: - Single Responsibility: Each component has one reason to change - Open/Closed: Extensible without modifying existing code - Interface Segregation: Clean repository and service contracts - Dependency Inversion: All layers depend on abstractions Database Migration (V014): - Creates companies table with active/inactive status - Assigns existing admin users to DEFAULT company - Provides foundation for role-based access control Future Enhancement: - Admin users can belong to specific companies - Data filtering based on company_id (multi-tenant isolation) - Company-based permission model
26 lines
956 B
C#
26 lines
956 B
C#
namespace TaxBaik.Application;
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using TaxBaik.Application.Services;
|
|
|
|
public static class DependencyInjection
|
|
{
|
|
public static IServiceCollection AddApplication(this IServiceCollection services)
|
|
{
|
|
services.AddScoped<BlogService>();
|
|
services.AddScoped<InquiryService>();
|
|
services.AddScoped<AdminDashboardService>();
|
|
services.AddScoped<IInquiryNotificationService, NoopInquiryNotificationService>();
|
|
services.AddScoped<SiteSettingService>();
|
|
services.AddScoped<CategoryService>();
|
|
services.AddScoped<AnnouncementService>();
|
|
services.AddSingleton<SeasonalMarketingService>();
|
|
services.AddScoped<ClientService>();
|
|
services.AddScoped<FaqService>();
|
|
services.AddScoped<ConsultationService>();
|
|
services.AddScoped<TaxFilingService>();
|
|
services.AddScoped<CompanyService>();
|
|
return services;
|
|
}
|
|
}
|