Exemple #1
0
        public IEnumerable <SourceUnit> Generate(ServiceInfo service)
        {
            if (service.IsValid)
            {
                ControllerSourceUnit unit = new ControllerSourceUnit();

                CqrsControllerBuilder builder = new CqrsControllerBuilder()
                                                .WithName(service.Name)
                                                .InNamespace(ToNamespace(service.Assembly.GetName().Name)) //TODO
                                                .AddDefaultUsings()
                                                .AddUsing("Microsoft.AspNetCore.Mvc")
                                                .AddUsing("AutoMapper");

                foreach (HandlerInfo h in service.Handlers)
                {
                    // we need to construct:
                    // arguments
                    // Automapper configuration
                    // TODO: Refactor and write UT
                    if (h.IsCommandHandler)
                    {
                        GenerateWriteAction(unit, h, builder);
                    }
                    else if (h.IsQueryHandler)
                    {
                        GenerateReadAction(unit, h, builder);
                    }
                }
                unit.Controller = new SourceUnit(builder.Namespace, builder.TypeName, builder.GenerateCode());
                return(unit.GetAllUnits());
            }
            else
            {
                _logger.Warn("Cannot generate controller for service {serviceName}", service.Name);
            }
            return(new SourceUnit[0]);
        }