forked from gongxuegit/tiku-backend.net
feat: establish dotnet engineering foundation
This commit is contained in:
@@ -136,6 +136,7 @@ public sealed class ReferralService(
|
||||
var eventType = NormalizeChoice(command.EventType, AllowedEventTypes, "enter", "invalid_referral_event_type");
|
||||
var source = NormalizeChoice(command.Source, AllowedSources, "unknown", "invalid_referral_source");
|
||||
var resolution = await ResolveCodeCoreAsync(actor.TenantId, code, cancellationToken);
|
||||
await using var transaction = await dbContext.Database.BeginTransactionAsync(cancellationToken);
|
||||
var track = new ReferralTrack
|
||||
{
|
||||
TenantId = actor.TenantId,
|
||||
@@ -148,7 +149,6 @@ public sealed class ReferralService(
|
||||
UserAgent = Truncate(NormalizeOptional(userAgent), 1024),
|
||||
Metadata = command.Metadata ?? JsonDefaults.Object()
|
||||
};
|
||||
dbContext.ReferralTracks.Add(track);
|
||||
|
||||
ReferralLead? lead = null;
|
||||
CrmWebhookQueueItem? crmQueue = null;
|
||||
@@ -164,16 +164,29 @@ public sealed class ReferralService(
|
||||
false,
|
||||
command.Metadata,
|
||||
cancellationToken);
|
||||
if (lead.FirstTrackId is null)
|
||||
var setFirstTrack = lead.FirstTrackId is null;
|
||||
if (setFirstTrack)
|
||||
{
|
||||
await dbContext.SaveChangesAsync(cancellationToken);
|
||||
}
|
||||
|
||||
dbContext.ReferralTracks.Add(track);
|
||||
track.LeadId = lead.Id;
|
||||
await dbContext.SaveChangesAsync(cancellationToken);
|
||||
if (setFirstTrack)
|
||||
{
|
||||
lead.FirstTrackId = track.Id;
|
||||
}
|
||||
|
||||
track.LeadId = lead.Id;
|
||||
crmQueue = await EnqueueCrmIfEnabledAsync(actor.TenantId, lead, "referral.track_event", cancellationToken);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbContext.ReferralTracks.Add(track);
|
||||
}
|
||||
|
||||
await dbContext.SaveChangesAsync(cancellationToken);
|
||||
await transaction.CommitAsync(cancellationToken);
|
||||
return new ReferralTrackResult(ToTrackItem(track), lead is null ? null : ToLeadItem(lead, true), ToQueuePreview(crmQueue));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user