コード例 #1
0
ファイル: Program.cs プロジェクト: brookpatten/patrol.ski
        static void Main(string[] args)
        {
            var configurations = PatrolTrainingApiConfiguration.LoadFromJsonConfig(null, Path.Combine(Directory.GetCurrentDirectory(), "../../../../Amphibian.Patrol.Api"));

            var configuration = configurations.Item2;

            if (configuration.Database.MigrateSchema)
            {
                var result = MigrationRunner.RunMigrations(configuration.Database.ConnectionString, configuration.Database.MigrateInitialData, configuration.Database.MigrateTestData);

                if (!result.Successful)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(result.Error);
                    Console.ResetColor();
                }

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Success!");
                Console.ResetColor();
            }
            else
            {
                Console.WriteLine("Migrating Schema is Disabled in Configuration");
            }
        }
コード例 #2
0
        public void BaseOneTimeSetUp()
        {
            //find the config for the app
            var configurations = PatrolTrainingApiConfiguration.LoadFromJsonConfig(null, Path.Combine(Directory.GetCurrentDirectory(), "../../../../Amphibian.Patrol.Api"));

            this._configuration = configurations.Item2;

            //reformat the existing connection string to connect to the master db (not strictly necassary, but mast always exists, the app db doesn't)

            _runTime = DateTime.Now;
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: brookpatten/patrol.ski
        public static IHostBuilder CreateHostBuilder(string[] args)
        {
            var builder = Host.CreateDefaultBuilder(args)
                          .ConfigureAppConfiguration((hostingContext, config) =>
            {
                var configurations = PatrolTrainingApiConfiguration.LoadFromJsonConfig(config);
            }).ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder
                .UseKestrel()
                .UseStartup <Startup>();
            })
                          .UseSerilog((hostingContext, loggerConfiguration) =>
            {
                loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration)
                .Enrich.FromLogContext();
            });

            return(builder);
        }
コード例 #4
0
ファイル: Startup.cs プロジェクト: brookpatten/patrol.ski
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var serviceConfiguration = new PatrolTrainingApiConfiguration();

            Configuration.Bind(serviceConfiguration);

            //pull secure things from env vars if we're not in dev
            //TODO: we can probably just do this with reflection, but this is faster
            //SetFromEnvVarIfAvailable<PatrolTrainingApiConfiguration>(serviceConfiguration, (c, s) => c.Email.SendGridApiKey = s, "Email.SendGridApiKey");
            //SetFromEnvVarIfAvailable<PatrolTrainingApiConfiguration>(serviceConfiguration, (c, s) => c.Database.ConnectionString = s, "Database.ConnectionString");

            services.AddSingleton(serviceConfiguration);

            services.AddControllers()
            .AddFluentValidation()
            .AddJsonOptions(options => {
                options.JsonSerializerOptions.IgnoreNullValues = true;
                options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
            });

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "Patrol.Ski Api", Version = "v1"
                });
                c.AddSecurityDefinition("Authorization", new OpenApiSecurityScheme()
                {
                    Type         = SecuritySchemeType.Http,
                    Scheme       = "bearer",
                    BearerFormat = "JWT",
                    In           = ParameterLocation.Header,
                });
                //c.IncludeXmlComments("Amphibian.Patrol.Api.xml", true);
                c.AddSecurityRequirement(new OpenApiSecurityRequirement()
                {
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference {
                                Type = ReferenceType.SecurityScheme,
                                Id   = "Authorization"
                            }
                        }, new List <string>()
                    }
                });
            });

            services.AddAuthentication("BasicOrTokenAuthentication")
            .AddScheme <AuthenticationSchemeOptions, Infrastructure.AuthenticationHandler>("BasicOrTokenAuthentication", null);


            //db
            services.AddScoped <System.Data.Common.DbConnection, SqlConnection>(sp =>
            {
                var connection = new SqlConnection(serviceConfiguration.Database.ConnectionString);
                Dapper.SqlMapper.Settings.CommandTimeout = 0;
                return(connection);
            });
            services.AddScoped <IUnitOfWork, DbUnitOfWork>();
            //automapper config
            services.AddMappings();
            //dapper config
            SqlMapper.AddTypeHandler(new DapperDateTimeHandler());
            SqlMapper.AddTypeHandler(new DapperShiftStatusHandler());

            services.AddSingleton <AuthenticationConfiguration>(serviceConfiguration.Authentication);
            services.AddSingleton <AppConfiguration>(serviceConfiguration.App);
            services.AddSingleton <EmailConfiguration>(serviceConfiguration.Email);

            //persistence
            services.AddScoped <IUserRepository, UserRepository>();
            services.AddScoped <ITokenRepository, TokenRepository>();
            services.AddScoped <IPatrolRepository, PatrolRepository>();
            services.AddScoped <IPlanRepository, PlanRepository>();
            services.AddScoped <IAssignmentRepository, AssignmentRepository>();
            services.AddScoped <IGroupRepository, GroupRepository>();
            services.AddScoped <IShiftRepository, ShiftRepository>();
            services.AddScoped <IAnnouncementRepository, AnnouncementRepository>();
            services.AddScoped <IEventRepository, EventRepository>();
            services.AddScoped <ITimeEntryRepository, TimeEntryRepository>();
            services.AddScoped <IWorkItemRepository, WorkItemRepository>();
            services.AddScoped <IApiLogRepository, ApiLogRepository>();
            services.AddScoped <IFileUploadRepository, FileUploadRepository>();

            //validations
            services.AddScoped <IValidator <AuthenticationController.RegistrationRequest>, RegistrationValidator>();
            services.AddScoped <IValidator <PatrolUserDto>, PatrolUserValidator>();
            services.AddScoped <IValidator <Group>, GroupValidator>();
            services.AddScoped <IValidator <Shift>, ShiftValidator>();
            services.AddScoped <IValidator <Event>, EventValidator>();
            services.AddScoped <IValidator <Models.Patrol>, PatrolValidator>();

            //services
            services.AddScoped <Services.IAuthenticationService, Services.AuthenticationService>();
            services.AddScoped <Services.IPasswordService, Services.PasswordService>(sp => new Services.PasswordService(5, 32));
            services.AddScoped <IEmailService, EmailService>();
            services.AddScoped <IPlanService, PlanService>();
            services.AddScoped <IAssignmentService, AssignmentService>();
            services.AddScoped <IUserService, UserService>();
            services.AddScoped <IPatrolService, PatrolService>();
            services.AddScoped <IPatrolCreationService, PatrolCreationService>();
            services.AddScoped <IAnnouncementService, AnnouncementService>();
            services.AddScoped <IScheduleService, ScheduleService>();
            services.AddScoped <ITimeClockService, TimeClockService>();
            services.AddScoped <IWorkItemService, WorkItemService>();
            services.AddScoped <IShiftWorkItemService, WorkItemService>();
            services.AddScoped <ISysAdminService, SysAdminService>();
            services.AddScoped <IEventService, EventService>();

            services.AddScoped <ISystemClock, SystemClock>();
        }
コード例 #5
0
 public SystemController(PatrolTrainingApiConfiguration configuration)
 {
     _configuration = configuration;
 }