source: src/FinkiChattery/FinkiChattery.Api/Startup.cs@ 95d80e4

dev
Last change on this file since 95d80e4 was 95d80e4, checked in by Стојков Марко <mst@…>, 3 years ago

Added unit of work pattern

  • Property mode set to 100644
File size: 2.8 KB
Line 
1using FinkiChattery.Api.Middleware;
2using FinkiChattery.Api.Server;
3using FinkiChattery.Api.Services;
4using FinkiChattery.Commands.Questioning;
5using FinkiChattery.Persistence.Context;
6using FluentValidation.AspNetCore;
7using Hangfire;
8using Microsoft.AspNetCore.Builder;
9using Microsoft.AspNetCore.Hosting;
10using Microsoft.AspNetCore.Mvc;
11using Microsoft.EntityFrameworkCore;
12using Microsoft.Extensions.Configuration;
13using Microsoft.Extensions.DependencyInjection;
14using Microsoft.Extensions.Hosting;
15
16namespace FinkiChattery.Api
17{
18 public class Startup
19 {
20 public Startup(IConfiguration configuration)
21 {
22 Configuration = configuration;
23 AppSettings = new AppSettings(configuration);
24 }
25
26 public IConfiguration Configuration { get; }
27 public AppSettings AppSettings { get; }
28
29 public void ConfigureServices(IServiceCollection services)
30 {
31 services.AddSingletonServices();
32 services.AddIdentityService(Configuration);
33 services.AddMediator();
34 services.AddEmailService();
35 services.AddOriginUrlSettings();
36 services.AddCurrentUser();
37 services.AddUnitOfWork();
38 services.AddAwsClient(Configuration);
39 services.AddHangfireService(Configuration);
40
41 services.AddDbContext<ApplicationDbContext>(options =>
42 options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
43
44 services.AddControllers()
45 .ConfigureApiBehaviorOptions(options => options.InvalidModelStateResponseFactory = context => new BadRequestObjectResult(context.ModelState))
46 .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<AskQuestionValidator>());
47 services.AddApiVersioning();
48
49 services.AddCors(options =>
50 {
51 options.AddPolicy(
52 name: AppSettings.CorsSettings.CorsPolicyName,
53 builder => builder.WithOrigins(AppSettings.CorsSettings.AllowedCorsOrigins).AllowAnyHeader().AllowAnyMethod());
54 });
55 }
56
57 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
58 {
59 if (env.IsDevelopment())
60 {
61 app.UseDeveloperExceptionPage();
62 }
63
64 app.UseHttpsRedirection();
65
66 app.UseMiddleware<ExceptionHandler>();
67
68 app.UseRouting();
69 app.UseCors(AppSettings.CorsSettings.CorsPolicyName);
70
71 app.UseAuthentication();
72
73 app.UseAuthorization();
74
75 app.UseEndpoints(endpoints =>
76 {
77 endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
78 endpoints.MapHangfireDashboard();
79 });
80 }
81 }
82}
Note: See TracBrowser for help on using the repository browser.