69 lines
3.1 KiB
TypeScript
69 lines
3.1 KiB
TypeScript
import { Body, Controller, Delete, Get, Param, Patch, Post, Query, UseInterceptors } from "@nestjs/common";
|
|
import { ApiHeader, ApiOperation, ApiResponse } from "@nestjs/swagger";
|
|
|
|
import { CreateDomainDto } from "./DTO/create-domain.dto";
|
|
import { UpdateDomainDto } from "./DTO/update-domain.dto";
|
|
import { DomainsService } from "./services/domains.service";
|
|
import { AuthGuards } from "../../common/decorators/auth-guard.decorator";
|
|
import { BusinessDec } from "../../common/decorators/business.decorator";
|
|
import { PaginationDto } from "../../common/DTO/pagination.dto";
|
|
import { ParamDto } from "../../common/DTO/param.dto";
|
|
import { BusinessInterceptor } from "../../core/interceptors/business.interceptor";
|
|
|
|
@Controller("domains")
|
|
@ApiHeader({ name: "x-business-id", description: "Business ID" })
|
|
@UseInterceptors(BusinessInterceptor)
|
|
@AuthGuards()
|
|
export class DomainsController {
|
|
constructor(private readonly domainsService: DomainsService) {}
|
|
|
|
@Post()
|
|
@ApiOperation({ summary: "Create a new domain and get setup instructions" })
|
|
@ApiResponse({ status: 201, description: "Domain created with setup instructions" })
|
|
createDomain(@Body() createDomainDto: CreateDomainDto, @BusinessDec("id") businessId: string) {
|
|
return this.domainsService.createDomain(createDomainDto, businessId);
|
|
}
|
|
|
|
@Get()
|
|
@ApiOperation({ summary: "Get domain for business" })
|
|
@ApiResponse({ status: 200, description: "Domains retrieved successfully" })
|
|
getBusinessDomain(@BusinessDec("id") businessId: string, @Query() _query: PaginationDto) {
|
|
return this.domainsService.getBusinessDomain(businessId);
|
|
}
|
|
|
|
@Patch(":id")
|
|
@ApiOperation({ summary: "Update domain" })
|
|
@ApiResponse({ status: 200, description: "Domain updated successfully" })
|
|
updateDomain(@Param() paramDto: ParamDto, @Body() updateDomainDto: UpdateDomainDto) {
|
|
return this.domainsService.updateDomain(paramDto.id, updateDomainDto);
|
|
}
|
|
|
|
@Delete(":id")
|
|
@ApiOperation({ summary: "Delete domain" })
|
|
@ApiResponse({ status: 200, description: "Domain deleted successfully" })
|
|
deleteDomain(@Param() paramDto: ParamDto) {
|
|
return this.domainsService.deleteDomain(paramDto.id);
|
|
}
|
|
|
|
@Get("setup")
|
|
@ApiOperation({ summary: "Get domain setup instructions" })
|
|
@ApiResponse({ status: 200, description: "Domain setup instructions retrieved" })
|
|
getDomainSetupInstructions(@BusinessDec("id") businessId: string) {
|
|
return this.domainsService.getDomainSetupInstructions(businessId);
|
|
}
|
|
|
|
@Get("dns-records")
|
|
@ApiOperation({ summary: "Get DNS records for domain" })
|
|
@ApiResponse({ status: 200, description: "DNS records retrieved successfully" })
|
|
getDomainDnsRecords(@BusinessDec("id") businessId: string) {
|
|
return this.domainsService.getDomainDnsRecords(businessId);
|
|
}
|
|
|
|
@Get("verify-dns")
|
|
@ApiOperation({ summary: "Check DNS records, verify domain configuration and return verification status" })
|
|
@ApiResponse({ status: 200, description: "DNS records verified and status returned" })
|
|
verifyDnsRecords(@BusinessDec("id") businessId: string) {
|
|
return this.domainsService.checkDomainVerificationStatus(businessId);
|
|
}
|
|
}
|