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 });
}
}