Skip to main content

technical



DomainFlowController — Domain Set Up Skill Reference

File: Sodastream/Web/Web/Controllers/DomainFlowController.csDI: 26 services — Auth: [HasPermission]

Domain Creation Methods

MethodRoutePermissionDescription
InitDomain(Id)GETAddNewDomainLoads _InitDomain.cshtml modal. Populates SetupType, SendingMechanism dropdowns (GSuite/Outlook/Postal/Hmail), Instance dropdown (loaded per type), DomainType dropdown. Defaults: Type=Hmail, GoogleLoginId=3, InUse=true.
InitDomain(domain)POSTAddNewDomainSaves domain to DB. Validates Name not empty. If SetupType=3, sets Type=null. Forces InUse=true. Calls AddOrUpdate.
EditClientDomain(cd)POSTAddEditCampaignCreates Domain + CampaignDomain from client-owned flow. Validates: CampaignId, DomainPurchasedType, DomainName, RedirectUrl (must contain http), SetupType, OtherSendingMechanism if type=Other. Auto-assigns GoogleLoginId from first login of matching type. Sends SendDomainSubdomainNotification.
EditCampaignDomainMultipleGET/POSTAddEditCampaignBulk domain purchase. Validates each domain. Calls BuyDomain via GoDaddy API. Saves Domain + CampaignDomain. Sends PurchaseNewEmailDomain or PurchaseNonPurchasableNewEmailDomain notification per domain.
SelectExistingDomainGET/POSTAddEditCampaignCopies existing domain from client's other campaigns to current campaign. Clones CampaignDomain with all fields. Calls AddWhitelistDomains.

Init Processing

MethodDescription
InitHangFireDomain(DomainId) (in DomainsController)Enqueues Hangfire job _InitDomain. Inserts DomainRecords skeleton via InsertDomainRecordsSkeleton (only DomainName, DomainType, SendingMechanism, LastChecked).

Hangfire Engine (_InitDomain)

StepActionCondition
1DNS Propagation Check (NS lookup)Skipped if DomainType=Subdomain
2Check GoDaddyAlways
3aGoDaddy infra (CNAME, DMARC, Redirect, BrandSSL) + Type setupDomain on GoDaddy
3bSetupType-based path (CloudFlare/DNS-Records/SMTP/Route53)Domain NOT on GoDaddy
4Mark Initialised=true, Save logAlways

Per-Type Setup Methods

TypeMethodKey APIs
GSuiteGSuiteSetup() + AddToGoogleDomain()GoDaddy + Google Admin SDK (InsertDomain, GetVerificationCode, Verify)
OutlookOutlookSetup()GoDaddy + Graph API (AddDomain, GetServiceConfig, Verify, GetDkimRecords, EnableDkim)
PostalPostalSetup()GoDaddy + Postal (AddDomain)
HmailHMailSetup()GoDaddy + HMail (AddNewDomain)

Set Complete

MethodDescription
StupidMethod(id) (in DomainsController)Finds campaign, sends DomainCompleted notification, calls AddDomainsToDomainRecords (full DNS: MX, SPF, DKIM, DMARC, CNAMEs), marks Completed=true + DomainStatus=OK. GSuite: also calls CheckDKIMRecord.

Notification Methods

MethodEnumTrigger
SendDomainSubdomainNotification153/180EditClientDomain POST
PurchaseNewEmailDomain28Bulk purchase (purchasable)
PurchaseNewNonPurchasableEmailDomain112Bulk purchase (non-purchasable)
SendDomainDnsRecords163DNSRecord SetupType init
SendDomainNameServers164SubdomainNsRecord SetupType init
DomainCompleted61Set Complete (StupidMethod)