Skip to content

Commit ed65635

Browse files
authoredApr 2, 2024··
Merge pull request #61 from DiyorMarket/Createconfigureservicesextensions
Createconfigureservicesextensions
2 parents 40fc606 + 5304664 commit ed65635

File tree

6 files changed

+120
-5
lines changed

6 files changed

+120
-5
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,70 @@
1-
namespace Inflow.Api.Extensions
1+
using DiyorMarket.Infrastructure.Persistence.Repositories;
2+
using DiyorMarket.Services;
3+
using Inflow.Domain.Intefaces.Services;
4+
using Inflow.Domain.Interfaces.Repositories;
5+
using Inflow.Domain.Interfaces.Services;
6+
using Inflow.Infrastructure;
7+
using Microsoft.EntityFrameworkCore;
8+
using Serilog;
9+
10+
namespace Inflow.Api.Extensions
211
{
3-
public class ConfigureServicesExtensions
12+
public static class ConfigureServicesExtensions
413
{
514

15+
public static IServiceCollection ConfigureRepositories(this IServiceCollection services)
16+
{
17+
services.AddScoped<ICategoryRepository, CategoryRepository>();
18+
services.AddScoped<IProductRepository, ProductRepository>();
19+
services.AddScoped<ICommonRepository, CommonRepository>();
20+
services.AddScoped<ICustomerRepository, CustomerRepository>();
21+
services.AddScoped<ISaleRepository, SaleRepository>();
22+
services.AddScoped<ISaleItemRepository, SaleItemRepository>();
23+
services.AddScoped<ISupplierRepository, SupplierRepository>();
24+
services.AddScoped<ISupplyRepository, SupplyRepository>();
25+
services.AddScoped<ISupplyItemRepository, SupplyItemRepository>();
26+
27+
services.AddScoped<ICategoryService, CategoryService>();
28+
services.AddScoped<IProductService, ProductService>();
29+
services.AddScoped<ICustomerService, CustomerService>();
30+
services.AddScoped<ISaleService, SaleService>();
31+
services.AddScoped<ISaleItemService, SaleItemService>();
32+
services.AddScoped<ISupplierService, SupplierService>();
33+
services.AddScoped<ISupplyService, SupplyService>();
34+
services.AddScoped<ISupplyItemService, SupplyItemService>();
35+
services.AddScoped<IDashboardService, DashboardService>();
36+
services.AddSingleton<IEmailSender, EmailSender>();
37+
38+
services.AddControllers()
39+
.AddNewtonsoftJson(options =>
40+
options.SerializerSettings.ReferenceLoopHandling =
41+
Newtonsoft.Json.ReferenceLoopHandling.Ignore
42+
);
43+
44+
return services;
45+
}
46+
47+
public static IServiceCollection ConfigureLogger(this IServiceCollection services)
48+
{
49+
Log.Logger = new LoggerConfiguration()
50+
.MinimumLevel.Information()
51+
.WriteTo.Console()
52+
.WriteTo.File("logs/logs.txt", rollingInterval: RollingInterval.Day)
53+
.WriteTo.File("logs/error_.txt", Serilog.Events.LogEventLevel.Error, rollingInterval: RollingInterval.Day)
54+
.CreateLogger();
55+
56+
return services;
57+
}
58+
59+
public static IServiceCollection ConfigureDatabaseContext(this IServiceCollection services)
60+
{
61+
var builder = WebApplication.CreateBuilder();
62+
63+
services.AddDbContext<InflowDbContext>(options =>
64+
options.UseSqlServer(builder.Configuration.GetConnectionString("DiyorMarketConection")));
65+
66+
return services;
67+
}
668
}
769
}
70+

‎Inflow.Api/Inflow.Api.csproj

+6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<PackageReference Include="AutoMapper" Version="13.0.1" />
1212
<PackageReference Include="Bogus" Version="35.5.0" />
1313
<PackageReference Include="ClosedXML" Version="0.102.2" />
14+
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.2" />
1415
<PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="8.0.2" />
1516
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.2" />
1617
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.2" />
@@ -20,13 +21,18 @@
2021
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2122
</PackageReference>
2223
<PackageReference Include="PdfSharpCore" Version="1.3.63" />
24+
<PackageReference Include="Serilog" Version="3.1.1" />
25+
<PackageReference Include="Serilog.AspNetCore" Version="8.0.1" />
26+
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
27+
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
2328
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
2429
<PackageReference Include="Syncfusion.Pdf.Net.Core" Version="25.1.38" />
2530
</ItemGroup>
2631

2732
<ItemGroup>
2833
<ProjectReference Include="..\Inflow.Domain\Inflow.Domain.csproj" />
2934
<ProjectReference Include="..\Inflow.Infrastructure\Inflow.Infrastructure.csproj" />
35+
<ProjectReference Include="..\Inflow.Service\Inflow.Service.csproj" />
3036
</ItemGroup>
3137

3238
</Project>

‎Inflow.Api/Program.cs

+46-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,56 @@
1+
using Inflow.Api.Extensions;
2+
using Inflow.Api.Middlewares;
3+
using Microsoft.AspNetCore.StaticFiles;
4+
using Microsoft.IdentityModel.Tokens;
5+
using Newtonsoft.Json.Serialization;
6+
using Serilog;
7+
using System.Text;
8+
19
var builder = WebApplication.CreateBuilder(args);
210

3-
// Add services to the container.
11+
builder.Host.UseSerilog();
12+
13+
builder.Services.AddControllers()
14+
.AddNewtonsoftJson(options =>
15+
{
16+
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
17+
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
18+
})
19+
.AddXmlSerializerFormatters();
420

5-
builder.Services.AddControllers();
6-
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
721
builder.Services.AddEndpointsApiExplorer();
822
builder.Services.AddSwaggerGen();
23+
builder.Services.AddSingleton<FileExtensionContentTypeProvider>();
24+
builder.Services.ConfigureLogger();
25+
builder.Services.ConfigureRepositories();
26+
builder.Services.ConfigureDatabaseContext();
27+
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
28+
builder.Services.AddAuthentication("Bearer")
29+
.AddJwtBearer(options =>
30+
{
31+
options.TokenValidationParameters = new()
32+
{
33+
ValidateIssuer = true,
34+
ValidateAudience = true,
35+
ValidateIssuerSigningKey = true,
36+
ValidIssuer = "anvar-api",
37+
ValidAudience = "anvar-mobile",
38+
IssuerSigningKey = new SymmetricSecurityKey(
39+
Encoding.UTF8.GetBytes("anvarSekretKalitSozMalades")),
40+
ValidateLifetime = true,
41+
};
42+
});
943

1044
var app = builder.Build();
1145

46+
using (var scope = app.Services.CreateScope())
47+
{
48+
var services = scope.ServiceProvider;
49+
builder.Services.SeedDatabase(services);
50+
}
51+
52+
app.UseMiddleware<ErrorHandlerMiddleware>();
53+
1254
// Configure the HTTP request pipeline.
1355
if (app.Environment.IsDevelopment())
1456
{
@@ -18,6 +60,7 @@
1860

1961
app.UseHttpsRedirection();
2062

63+
app.UseAuthentication();
2164
app.UseAuthorization();
2265

2366
app.MapControllers();

‎Inflow.Domain/Inflow.Domain.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<PrivateAssets>all</PrivateAssets>
1616
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1717
</PackageReference>
18+
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
1819
</ItemGroup>
1920

2021
</Project>

‎Inflow.Infrastructure/Inflow.Infrastructure.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<ItemGroup>
1010
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.2" />
1111
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.2" />
12+
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
1213
</ItemGroup>
1314

1415
<ItemGroup>

‎Inflow.Service/Inflow.Service.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<ItemGroup>
1010
<PackageReference Include="AutoMapper" Version="13.0.1" />
1111
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.2" />
12+
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
1213
</ItemGroup>
1314

1415
<ItemGroup>

0 commit comments

Comments
 (0)
Please sign in to comment.