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"); } }
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; }
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); }
// 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>(); }
public SystemController(PatrolTrainingApiConfiguration configuration) { _configuration = configuration; }