78 lines
2.1 KiB
C#
78 lines
2.1 KiB
C#
using MemberCenter.Application.Abstractions;
|
|
using MemberCenter.Application.Models.Admin;
|
|
using MemberCenter.Domain.Entities;
|
|
using MemberCenter.Infrastructure.Persistence;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace MemberCenter.Infrastructure.Services;
|
|
|
|
public sealed class TenantService : ITenantService
|
|
{
|
|
private readonly MemberCenterDbContext _dbContext;
|
|
|
|
public TenantService(MemberCenterDbContext dbContext)
|
|
{
|
|
_dbContext = dbContext;
|
|
}
|
|
|
|
public async Task<IReadOnlyList<TenantDto>> ListAsync()
|
|
{
|
|
var tenants = await _dbContext.Tenants.ToListAsync();
|
|
return tenants.Select(MapTenant).ToList();
|
|
}
|
|
|
|
public async Task<TenantDto?> GetAsync(Guid id)
|
|
{
|
|
var tenant = await _dbContext.Tenants.FindAsync(id);
|
|
return tenant is null ? null : MapTenant(tenant);
|
|
}
|
|
|
|
public async Task<TenantDto> CreateAsync(string name, List<string> domains, string status)
|
|
{
|
|
var tenant = new Tenant
|
|
{
|
|
Id = Guid.NewGuid(),
|
|
Name = name,
|
|
Domains = domains,
|
|
Status = status
|
|
};
|
|
|
|
_dbContext.Tenants.Add(tenant);
|
|
await _dbContext.SaveChangesAsync();
|
|
return MapTenant(tenant);
|
|
}
|
|
|
|
public async Task<TenantDto?> UpdateAsync(Guid id, string name, List<string> domains, string status)
|
|
{
|
|
var tenant = await _dbContext.Tenants.FindAsync(id);
|
|
if (tenant is null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
tenant.Name = name;
|
|
tenant.Domains = domains;
|
|
tenant.Status = status;
|
|
await _dbContext.SaveChangesAsync();
|
|
return MapTenant(tenant);
|
|
}
|
|
|
|
public async Task<bool> DeleteAsync(Guid id)
|
|
{
|
|
var tenant = await _dbContext.Tenants.FindAsync(id);
|
|
if (tenant is null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
_dbContext.Tenants.Remove(tenant);
|
|
await _dbContext.SaveChangesAsync();
|
|
return true;
|
|
}
|
|
|
|
private static TenantDto MapTenant(Tenant tenant)
|
|
{
|
|
return new TenantDto(tenant.Id, tenant.Name, tenant.Domains, tenant.Status);
|
|
}
|
|
}
|