afterCreateEntityController(
  context: dotnetTypes.DsgContext,
  eventParams: dotnet.CreateEntityControllerParams,
  files: FileMap<Class>
): Promise<FileMap<Class>> {
  const { entity, resourceName, apisDir } = eventParams;
  const controllerPath = `${apisDir}/${entity.name}/${pascalCase(entity.name)}Controller.cs`;
  const controllerFile = files.get(controllerPath);

  if (controllerFile) {
    // Add a custom action to the controller
    controllerFile.code.addMethod(
      CsharpSupport.method({
        name: "ExportToCsv",
        access: "public",
        isAsync: true,
        returnType: CsharpSupport.Types.task(CsharpSupport.Types.reference("IActionResult")),
        decorators: [
          CsharpSupport.decorator({
            name: "HttpGet",
            arguments: ["export-csv"],
          }),
        ],
        body: `
          var allItems = await _service.List();
          var csv = ConvertToCsv(allItems);
          return File(Encoding.UTF8.GetBytes(csv), "text/csv", "${entity.name}Export.csv");
        `,
      })
    );

    // Add necessary imports
    controllerFile.code.addImport("System.Text");
    controllerFile.code.addImport("Microsoft.AspNetCore.Mvc");
  }

  return files;
}

Event Name

CreateEntityController

Event Parameters

entity
Entity
The entity object for which the controller is being created.
resourceName
string
The name of the resource (typically the entity name).
apisDir
string
The directory where the API controllers are being generated.
entityActions
object
An object containing the CRUD actions available for the entity.
afterCreateEntityController(
  context: dotnetTypes.DsgContext,
  eventParams: dotnet.CreateEntityControllerParams,
  files: FileMap<Class>
): Promise<FileMap<Class>> {
  const { entity, resourceName, apisDir } = eventParams;
  const controllerPath = `${apisDir}/${entity.name}/${pascalCase(entity.name)}Controller.cs`;
  const controllerFile = files.get(controllerPath);

  if (controllerFile) {
    // Add a custom action to the controller
    controllerFile.code.addMethod(
      CsharpSupport.method({
        name: "ExportToCsv",
        access: "public",
        isAsync: true,
        returnType: CsharpSupport.Types.task(CsharpSupport.Types.reference("IActionResult")),
        decorators: [
          CsharpSupport.decorator({
            name: "HttpGet",
            arguments: ["export-csv"],
          }),
        ],
        body: `
          var allItems = await _service.List();
          var csv = ConvertToCsv(allItems);
          return File(Encoding.UTF8.GetBytes(csv), "text/csv", "${entity.name}Export.csv");
        `,
      })
    );

    // Add necessary imports
    controllerFile.code.addImport("System.Text");
    controllerFile.code.addImport("Microsoft.AspNetCore.Mvc");
  }

  return files;
}