public static IServiceCollection AddErrorsMvc(
            this IServiceCollection services,
            ErrorsRoleConfiguration roles)
        {
            services.AddMvcCore()
            .AddJsonFormatters()
            .AddAuthorization(options =>
                              options.AddPolicy("admin", builder => builder.RequireRole(roles.Admin)))
            .AddApiExplorer()
            .AddPhemaRouting(routing => routing.AddErrorsController(roles)
                             .AddVersionController())
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            return(services);
        }
        public static IRoutingBuilder AddErrorsController(this IRoutingBuilder builder, ErrorsRoleConfiguration roles)
        {
            builder.AddController <ErrorsController>(controller =>
            {
                controller.AddRoute("admin/errors", c => c.AdminRead(From.Query <ErrorFilterRequest>()))
                .HttpGet()
                .Authorize(roles.Admin);

                controller.AddRoute("admin/errors/{errorId}", c => c.DeleteById(From.Route <AdminDeleteErrorByIdRequest>()))
                .HttpDelete()
                .Authorize(roles.Admin);
            });

            return(builder);
        }