mirror of
https://github.com/bitwarden/server.git
synced 2025-07-02 00:22:50 -05:00
[AC-1943] Add ProviderInvoiceItem table (#4163)
* Add ProviderInvoiceItem table * Run dotnet format
This commit is contained in:
@ -0,0 +1,21 @@
|
||||
using Bit.Infrastructure.EntityFramework.Billing.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
namespace Bit.Infrastructure.EntityFramework.Billing.Configurations;
|
||||
|
||||
public class ProviderInvoiceItemEntityTypeConfiguration : IEntityTypeConfiguration<ProviderInvoiceItem>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<ProviderInvoiceItem> builder)
|
||||
{
|
||||
builder
|
||||
.Property(t => t.Id)
|
||||
.ValueGeneratedNever();
|
||||
|
||||
builder
|
||||
.HasIndex(providerInvoiceItem => new { providerInvoiceItem.Id, providerInvoiceItem.InvoiceId })
|
||||
.IsUnique();
|
||||
|
||||
builder.ToTable(nameof(ProviderInvoiceItem));
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
using AutoMapper;
|
||||
using Bit.Infrastructure.EntityFramework.AdminConsole.Models.Provider;
|
||||
|
||||
namespace Bit.Infrastructure.EntityFramework.Billing.Models;
|
||||
|
||||
// ReSharper disable once ClassWithVirtualMembersNeverInherited.Global
|
||||
public class ProviderInvoiceItem : Core.Billing.Entities.ProviderInvoiceItem
|
||||
{
|
||||
public virtual Provider Provider { get; set; }
|
||||
}
|
||||
|
||||
public class ProviderInvoiceItemMapperProfile : Profile
|
||||
{
|
||||
public ProviderInvoiceItemMapperProfile()
|
||||
{
|
||||
CreateMap<Core.Billing.Entities.ProviderInvoiceItem, ProviderInvoiceItem>().ReverseMap();
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ using Bit.Infrastructure.EntityFramework.AdminConsole.Models.Provider;
|
||||
|
||||
namespace Bit.Infrastructure.EntityFramework.Billing.Models;
|
||||
|
||||
// ReSharper disable once ClassWithVirtualMembersNeverInherited.Global
|
||||
public class ProviderPlan : Core.Billing.Entities.ProviderPlan
|
||||
{
|
||||
public virtual Provider Provider { get; set; }
|
||||
|
@ -0,0 +1,46 @@
|
||||
using AutoMapper;
|
||||
using Bit.Core.Billing.Entities;
|
||||
using Bit.Core.Billing.Repositories;
|
||||
using Bit.Infrastructure.EntityFramework.Repositories;
|
||||
using LinqToDB;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using EFProviderInvoiceItem = Bit.Infrastructure.EntityFramework.Billing.Models.ProviderInvoiceItem;
|
||||
|
||||
namespace Bit.Infrastructure.EntityFramework.Billing.Repositories;
|
||||
|
||||
public class ProviderInvoiceItemRepository(
|
||||
IMapper mapper,
|
||||
IServiceScopeFactory serviceScopeFactory)
|
||||
: Repository<ProviderInvoiceItem, EFProviderInvoiceItem, Guid>(
|
||||
serviceScopeFactory,
|
||||
mapper,
|
||||
context => context.ProviderInvoiceItems), IProviderInvoiceItemRepository
|
||||
{
|
||||
public async Task<ProviderInvoiceItem> GetByInvoiceId(string invoiceId)
|
||||
{
|
||||
using var serviceScope = ServiceScopeFactory.CreateScope();
|
||||
|
||||
var databaseContext = GetDatabaseContext(serviceScope);
|
||||
|
||||
var query =
|
||||
from providerInvoiceItem in databaseContext.ProviderInvoiceItems
|
||||
where providerInvoiceItem.InvoiceId == invoiceId
|
||||
select providerInvoiceItem;
|
||||
|
||||
return await query.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public async Task<ICollection<ProviderInvoiceItem>> GetByProviderId(Guid providerId)
|
||||
{
|
||||
using var serviceScope = ServiceScopeFactory.CreateScope();
|
||||
|
||||
var databaseContext = GetDatabaseContext(serviceScope);
|
||||
|
||||
var query =
|
||||
from providerInvoiceItem in databaseContext.ProviderInvoiceItems
|
||||
where providerInvoiceItem.ProviderId == providerId
|
||||
select providerInvoiceItem;
|
||||
|
||||
return await query.ToArrayAsync();
|
||||
}
|
||||
}
|
@ -88,6 +88,7 @@ public static class EntityFrameworkServiceCollectionExtensions
|
||||
services.AddSingleton<IOrganizationDomainRepository, OrganizationDomainRepository>();
|
||||
services.AddSingleton<IWebAuthnCredentialRepository, WebAuthnCredentialRepository>();
|
||||
services.AddSingleton<IProviderPlanRepository, ProviderPlanRepository>();
|
||||
services.AddSingleton<IProviderInvoiceItemRepository, ProviderInvoiceItemRepository>();
|
||||
|
||||
if (selfHosted)
|
||||
{
|
||||
|
@ -67,6 +67,7 @@ public class DatabaseContext : DbContext
|
||||
public DbSet<OrganizationDomain> OrganizationDomains { get; set; }
|
||||
public DbSet<WebAuthnCredential> WebAuthnCredentials { get; set; }
|
||||
public DbSet<ProviderPlan> ProviderPlans { get; set; }
|
||||
public DbSet<ProviderInvoiceItem> ProviderInvoiceItems { get; set; }
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder builder)
|
||||
{
|
||||
|
Reference in New Issue
Block a user