| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- using Microsoft.AspNetCore.Builder;
- using Microsoft.AspNetCore.Hosting;
- using Microsoft.AspNetCore.HttpsPolicy;
- using Microsoft.AspNetCore.Identity;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.Hosting;
- using MVCTemplate.Business.Infrastructure;
- using MVCTemplate.Business.Infrastructure.Extensions;
- using MVCTemplate.Business.Infrastructure.Settings;
- using MVCTemplate.Business.Interfaces;
- using MVCTemplate.Business.Services;
- using MVCTemplate.Data.DbContexts;
- using MVCTemplate.Infrastructure;
- using MVCTemplate.Infrastructure.Middleware;
- using MVCTemplate.Quartz;
- using Quartz;
- using Quartz.Impl;
- using Quartz.Spi;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
-
- namespace MVCTemplate
- {
- public class Startup
- {
- public Startup(IConfiguration configuration)
- {
- Configuration = configuration;
- }
-
- public IConfiguration Configuration { get; }
-
- // This method gets called by the runtime. Use this method to add services to the container.
- public void ConfigureServices(IServiceCollection services)
- {
- StartupConfiguration.ConfigureStartupConfig<EmailSettings>(services, Configuration);
- services.AddControllersWithViews();
- services.AddRazorPages();
- StartupExtensions.ConfigureServices(services);
- services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = false)
- .AddDefaultUI()
- .AddRoles<IdentityRole>()
- .AddEntityFrameworkStores<AppDbContext>();
-
- services.AddScoped<IMessageService, MessageService>();
- services.AddScoped<IModelFactory, ModelFactory>();
-
- services.AddAuthentication()
- .AddGoogle(options =>
- {
- options.ClientId = Configuration.GetSection("EmailSettings").GetSection("ClientId").Value;
- options.ClientSecret = Configuration.GetSection("EmailSettings").GetSection("ClientSecret").Value;
- });
-
-
- // Add Quartz services
- services.AddSingleton<IJobFactory, JobFactory>();
- services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();
-
- // Add our jobs
- services.AddScoped<MessageDeletionJob>();
- services.AddSingleton(new JobMetadata(
- jobType: typeof(MessageDeletionJob),
- cronExpression: "0 0 12 * * ?"));
-
-
-
- services.AddHostedService<JobsService>();
-
- }
-
- // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
- public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
- {
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
- else
- {
- app.UseExceptionHandler("/Home/Error");
- // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
- app.UseHsts();
- }
- app.UseHttpsRedirection();
- app.UseStaticFiles();
-
- app.UseRouting();
- app.UseAuthentication();
- app.UseAuthorization();
-
- app.UseMiddleware(typeof(ExceptionHandlingMiddleware));
-
- app.UseEndpoints(endpoints =>
- {
- endpoints.MapControllerRoute(
- name: "default",
- pattern: "{controller=Home}/{action=Index}/{id?}");
- endpoints.MapRazorPages();
- });
- }
- }
- }
|