using ColaFlow.Modules.Identity.Application.Commands.RegisterTenant; using ColaFlow.Modules.Identity.Application.Queries.GetTenantBySlug; using MediatR; using Microsoft.AspNetCore.Mvc; namespace ColaFlow.API.Controllers; [ApiController] [Route("api/[controller]")] public class TenantsController(IMediator mediator) : ControllerBase { /// /// Register a new tenant (company signup) /// [HttpPost("register")] public async Task Register([FromBody] RegisterTenantCommand command) { var result = await mediator.Send(command); return Ok(result); } /// /// Get tenant by slug (for login page tenant resolution) /// [HttpGet("{slug}")] public async Task GetBySlug(string slug) { var query = new GetTenantBySlugQuery(slug); var result = await mediator.Send(query); if (result == null) return NotFound(new { message = "Tenant not found" }); return Ok(result); } /// /// Check if tenant slug is available /// [HttpGet("check-slug/{slug}")] public async Task CheckSlug(string slug) { var query = new GetTenantBySlugQuery(slug); var result = await mediator.Send(query); return Ok(new { available = result == null }); } }