<#@ template language="C#" #> <#@ output extension=".cs" #> <#@ assembly name="System.Core" #> <#@ assembly name="$(SolutionDir)EstusShots.Shared/bin/Debug/netcoreapp3.1/EstusShots.Shared.dll" #> <#@ import namespace="Shared.Interfaces" #> <#@ import namespace="System.Linq" #> <# var assembly = typeof(IApiParameter).Assembly; var types = assembly.GetTypes() .Where(t => t.Namespace?.StartsWith("EstusShots.Shared") == true) .ToArray(); var controllers = types .Where(t => t.Namespace == "EstusShots.Shared.Interfaces.Controllers") .ToArray(); #> //------------------------------------------------------------------------------ // // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using EstusShots.Server.Services; using EstusShots.Shared.Models; using EstusShots.Shared.Models.Parameters; using EstusShots.Shared.Interfaces.Controllers; namespace EstusShots.Server.Controllers { <# // The Controllers foreach (var iFace in controllers) { var controllerName = iFace.Name.Substring(1); var routeName = iFace.Name.Substring(1).Replace("Controller", ""); #> [ApiController] [Route("/api/[controller]/[action]")] public class <#=controllerName#> : BaseController, <#=iFace.Name #> { private readonly <#=routeName#>Service _service; public <#=controllerName#>(ILogger<<#=controllerName#>> logger, <#=routeName#>Service service) : base(logger) { _service = service; } <# // The Interface Members foreach (var member in iFace.GetMembers()) { var responseName = $"{member.Name}Response"; var parameterName = $"{member.Name}Parameter"; #> [HttpPost] public async Task>> <#=member.Name#>(<#=parameterName#> parameter) => await ServiceCall(() => _service.<#=member.Name#>(parameter)); <# } #> } <# } #> }