Affiliates: fixed mapping

This commit is contained in:
pavelbannov 2023-08-17 17:27:50 +03:00
parent f9ff3fc378
commit 58d328431a
6 changed files with 34 additions and 13 deletions

View File

@ -192,6 +192,7 @@ public class DbTenantService : ITenantService
{
using var tenantDbContext = _dbContextFactory.CreateDbContext();
using var tx = await tenantDbContext.Database.BeginTransactionAsync();
DbTenant dbTenant = null;
if (!string.IsNullOrEmpty(tenant.MappedDomain))
{
@ -210,6 +211,7 @@ public class DbTenantService : ITenantService
if (tenant.Id == Tenant.DefaultTenant)
{
tenant.Version = await tenantDbContext.TenantVersion
.AsNoTracking()
.Where(r => r.DefaultVersion == 1 || r.Id == 0)
.OrderByDescending(r => r.Id)
.Select(r => r.Id)
@ -217,17 +219,21 @@ public class DbTenantService : ITenantService
tenant.LastModified = DateTime.UtcNow;
var dbTenant = _mapper.Map<Tenant, DbTenant>(tenant);
dbTenant = _mapper.Map<Tenant, DbTenant>(tenant);
dbTenant.Id = 0;
dbTenant = tenantDbContext.Tenants.Add(dbTenant).Entity;
var entity = tenantDbContext.Tenants.Add(dbTenant);
dbTenant = entity.Entity;
await tenantDbContext.SaveChangesAsync();
tenant.Id = dbTenant.Id;
entity.State = EntityState.Detached;
}
else
{
var dbTenant = await tenantDbContext.Tenants
dbTenant = await tenantDbContext.Tenants
.AsNoTracking()
.Where(r => r.Id == tenant.Id)
.FirstOrDefaultAsync();
@ -259,6 +265,7 @@ public class DbTenantService : ITenantService
if (string.IsNullOrEmpty(tenant.PartnerId) && string.IsNullOrEmpty(tenant.AffiliateId) && string.IsNullOrEmpty(tenant.Campaign))
{
var p = tenantDbContext.TenantPartner
.AsNoTracking()
.Where(r => r.TenantId == tenant.Id)
.FirstOrDefault();
@ -274,7 +281,8 @@ public class DbTenantService : ITenantService
TenantId = tenant.Id,
PartnerId = tenant.PartnerId,
AffiliateId = tenant.AffiliateId,
Campaign = tenant.Campaign
Campaign = tenant.Campaign,
Tenant = dbTenant
};
tenantDbContext.TenantPartner.Add(tenantPartner);

View File

@ -86,6 +86,7 @@ public static class DbTenantExtension
{
public static ModelBuilderWrapper AddDbTenant(this ModelBuilderWrapper modelBuilder)
{
modelBuilder.Entity<DbTenant>().Navigation(e => e.Partner).AutoInclude();
modelBuilder
.AddDbTenantPartner()

View File

@ -49,6 +49,8 @@ public static class DbTenantPartnerExtension
public static void MySqlAddDbTenantPartner(this ModelBuilder modelBuilder)
{
modelBuilder.Entity<DbTenantPartner>().Navigation(e => e.Tenant).AutoInclude(false);
modelBuilder.Entity<DbTenantPartner>(entity =>
{
entity.HasKey(e => new { e.TenantId })

View File

@ -60,6 +60,17 @@ public class Tenant : IMapFrom<DbTenant>
{
Id = id;
}
public void Mapping(Profile profile)
{
profile.CreateMap<DbTenant, Tenant>()
.ForMember(r => r.TrustedDomainsType, opt => opt.MapFrom(src => src.TrustedDomainsEnabled))
.ForMember(r => r.AffiliateId, opt => opt.MapFrom(src => src.Partner.AffiliateId))
.ForMember(r => r.PartnerId, opt => opt.MapFrom(src => src.Partner.PartnerId))
.ForMember(r => r.Campaign, opt => opt.MapFrom(src => src.Partner.Campaign));
profile.CreateMap<TenantUserSecurity, Tenant>()
.IncludeMembers(src => src.DbTenant);
}
public string AffiliateId { get; set; }
public string Alias { get; set; }
@ -147,15 +158,6 @@ public class Tenant : IMapFrom<DbTenant>
return result;
}
public void Mapping(Profile profile)
{
profile.CreateMap<DbTenant, Tenant>()
.ForMember(r => r.TrustedDomainsType, opt => opt.MapFrom(src => src.TrustedDomainsEnabled));
profile.CreateMap<TenantUserSecurity, Tenant>()
.IncludeMembers(src => src.DbTenant);
}
public void SetStatus(TenantStatus status)
{
Status = status;

View File

@ -221,6 +221,11 @@ public class PortalController : ControllerBase
info.AffiliateId = model.AffiliateId;
}
if (!string.IsNullOrEmpty(model.PartnerId))
{
info.PartnerId = model.PartnerId;
}
if (!string.IsNullOrEmpty(model.Campaign))
{
info.Campaign = model.Campaign;

View File

@ -35,6 +35,9 @@ public class TenantModel : IModel
[StringLength(255)]
public string AffiliateId { get; set; }
[StringLength(255)]
public string PartnerId { get; set; }
public string Campaign { get; set; }
[StringLength(255)]