-
Notifications
You must be signed in to change notification settings - Fork 558
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
27d9c4d
commit 7a762f2
Showing
481 changed files
with
40,403 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
224 changes: 224 additions & 0 deletions
224
src/IdentityServer/OpenIddict/ClassifiedAds.Application/.editorconfig
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,224 @@ | ||
# To learn more about .editorconfig see https://aka.ms/editorconfigdocs | ||
############################### | ||
# Core EditorConfig Options # | ||
############################### | ||
# All files | ||
[*] | ||
indent_style = space | ||
|
||
# XML project files | ||
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}] | ||
indent_size = 2 | ||
|
||
# XML config files | ||
[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}] | ||
indent_size = 2 | ||
|
||
# Code files | ||
[*.{cs,csx,vb,vbx}] | ||
indent_size = 4 | ||
# insert_final_newline = true | ||
charset = utf-8-bom | ||
############################### | ||
# .NET Coding Conventions # | ||
############################### | ||
[*.{cs,vb}] | ||
# Organize usings | ||
dotnet_sort_system_directives_first = false | ||
# this. preferences | ||
dotnet_style_qualification_for_field = false:silent | ||
dotnet_style_qualification_for_property = false:silent | ||
dotnet_style_qualification_for_method = false:silent | ||
dotnet_style_qualification_for_event = false:silent | ||
# Language keywords vs BCL types preferences | ||
dotnet_style_predefined_type_for_locals_parameters_members = true:silent | ||
dotnet_style_predefined_type_for_member_access = true:silent | ||
# Parentheses preferences | ||
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent | ||
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent | ||
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent | ||
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent | ||
# Modifier preferences | ||
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent | ||
dotnet_style_readonly_field = true:suggestion | ||
# Expression-level preferences | ||
dotnet_style_object_initializer = true:suggestion | ||
dotnet_style_collection_initializer = true:suggestion | ||
dotnet_style_explicit_tuple_names = true:suggestion | ||
dotnet_style_null_propagation = true:suggestion | ||
dotnet_style_coalesce_expression = true:suggestion | ||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent | ||
dotnet_style_prefer_inferred_tuple_names = true:suggestion | ||
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion | ||
dotnet_style_prefer_auto_properties = true:silent | ||
dotnet_style_prefer_conditional_expression_over_assignment = true:silent | ||
dotnet_style_prefer_conditional_expression_over_return = true:silent | ||
############################### | ||
# Naming Conventions # | ||
############################### | ||
# Style Definitions | ||
dotnet_naming_style.pascal_case_style.capitalization = pascal_case | ||
# Use PascalCase for constant fields | ||
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion | ||
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields | ||
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style | ||
dotnet_naming_symbols.constant_fields.applicable_kinds = field | ||
dotnet_naming_symbols.constant_fields.applicable_accessibilities = * | ||
dotnet_naming_symbols.constant_fields.required_modifiers = const | ||
############################### | ||
# C# Coding Conventions # | ||
############################### | ||
[*.cs] | ||
# var preferences | ||
csharp_style_var_for_built_in_types = true:silent | ||
csharp_style_var_when_type_is_apparent = true:silent | ||
csharp_style_var_elsewhere = true:silent | ||
# Expression-bodied members | ||
csharp_style_expression_bodied_methods = false:silent | ||
csharp_style_expression_bodied_constructors = false:silent | ||
csharp_style_expression_bodied_operators = false:silent | ||
csharp_style_expression_bodied_properties = true:silent | ||
csharp_style_expression_bodied_indexers = true:silent | ||
csharp_style_expression_bodied_accessors = true:silent | ||
# Pattern matching preferences | ||
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion | ||
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion | ||
# Null-checking preferences | ||
csharp_style_throw_expression = true:suggestion | ||
csharp_style_conditional_delegate_call = true:suggestion | ||
# Modifier preferences | ||
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion | ||
# Expression-level preferences | ||
csharp_prefer_braces = true:silent | ||
csharp_style_deconstructed_variable_declaration = true:suggestion | ||
csharp_prefer_simple_default_expression = true:suggestion | ||
csharp_style_pattern_local_over_anonymous_function = true:suggestion | ||
csharp_style_inlined_variable_declaration = true:suggestion | ||
############################### | ||
# C# Formatting Rules # | ||
############################### | ||
# New line preferences | ||
csharp_new_line_before_open_brace = all | ||
csharp_new_line_before_else = true | ||
csharp_new_line_before_catch = true | ||
csharp_new_line_before_finally = true | ||
csharp_new_line_before_members_in_object_initializers = true | ||
csharp_new_line_before_members_in_anonymous_types = true | ||
csharp_new_line_between_query_expression_clauses = true | ||
# Indentation preferences | ||
csharp_indent_case_contents = true | ||
csharp_indent_switch_labels = true | ||
csharp_indent_labels = flush_left | ||
# Space preferences | ||
csharp_space_after_cast = false | ||
csharp_space_after_keywords_in_control_flow_statements = true | ||
csharp_space_between_method_call_parameter_list_parentheses = false | ||
csharp_space_between_method_declaration_parameter_list_parentheses = false | ||
csharp_space_between_parentheses = false | ||
csharp_space_before_colon_in_inheritance_clause = true | ||
csharp_space_after_colon_in_inheritance_clause = true | ||
csharp_space_around_binary_operators = before_and_after | ||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false | ||
csharp_space_between_method_call_name_and_opening_parenthesis = false | ||
csharp_space_between_method_call_empty_parameter_list_parentheses = false | ||
# Wrapping preferences | ||
csharp_preserve_single_line_statements = true | ||
csharp_preserve_single_line_blocks = true | ||
############################### | ||
# VB Coding Conventions # | ||
############################### | ||
[*.vb] | ||
# Modifier preferences | ||
visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion | ||
|
||
############################### | ||
# StyleCop # | ||
############################### | ||
[*.cs] | ||
|
||
# SA1027: Use tabs correctly | ||
dotnet_diagnostic.SA1027.severity = none | ||
|
||
# SA1101: Prefix local calls with this | ||
dotnet_diagnostic.SA1101.severity = none | ||
|
||
# SA1108: Block statements should not contain embedded comments | ||
dotnet_diagnostic.SA1108.severity = none | ||
|
||
# SA1111: Closing parenthesis should be on line of last parameter | ||
dotnet_diagnostic.SA1111.severity = none | ||
|
||
# SA1113: Comma should be on the same line as previous parameter | ||
dotnet_diagnostic.SA1113.severity = none | ||
|
||
# SA1115: Parameter should follow comma | ||
dotnet_diagnostic.SA1115.severity = none | ||
|
||
# SA1116: Split parameters should start on line after declaration | ||
dotnet_diagnostic.SA1116.severity = none | ||
|
||
# SA1117: Parameters should be on same line or separate lines | ||
dotnet_diagnostic.SA1117.severity = none | ||
|
||
# SA1123: Do not place regions within elements | ||
dotnet_diagnostic.SA1123.severity = none | ||
|
||
# SA1124: Do not use regions | ||
dotnet_diagnostic.SA1124.severity = none | ||
|
||
# SA1200: Using directives should be placed correctly | ||
dotnet_diagnostic.SA1200.severity = none | ||
|
||
# SA1201: Elements should appear in the correct order | ||
dotnet_diagnostic.SA1201.severity = none | ||
|
||
# SA1202: Elements should be ordered by access | ||
dotnet_diagnostic.SA1202.severity = none | ||
|
||
# SA1203: Constants should appear before fields | ||
dotnet_diagnostic.SA1203.severity = none | ||
|
||
# SA1204: Static elements should appear before instance elements | ||
dotnet_diagnostic.SA1204.severity = none | ||
|
||
# SA1208: System using directives should be placed before other using directives | ||
dotnet_diagnostic.SA1208.severity = none | ||
|
||
# SA1309: Field names should not begin with underscore | ||
dotnet_diagnostic.SA1309.severity = none | ||
|
||
# SA1310: Field names should not contain underscore | ||
dotnet_diagnostic.SA1310.severity = none | ||
|
||
# SA1402: File may only contain a single type | ||
dotnet_diagnostic.SA1402.severity = none | ||
|
||
# SA1413: Use trailing comma in multi-line initializers | ||
dotnet_diagnostic.SA1413.severity = none | ||
|
||
# SA1516: Elements should be separated by blank line | ||
dotnet_diagnostic.SA1516.severity = none | ||
|
||
# SA1600: Elements should be documented | ||
dotnet_diagnostic.SA1600.severity = none | ||
|
||
# SA1601: Partial elements should be documented | ||
dotnet_diagnostic.SA1601.severity = none | ||
|
||
# SA1602: Enumeration items should be documented | ||
dotnet_diagnostic.SA1602.severity = none | ||
|
||
# SA1610: Property documentation should have value text | ||
dotnet_diagnostic.SA1610.severity = none | ||
|
||
# SA1623: Property summary documentation should match accessors | ||
dotnet_diagnostic.SA1623.severity = none | ||
|
||
# SA1629: Documentation text should end with a period | ||
dotnet_diagnostic.SA1629.severity = none | ||
|
||
# SA1633: File should have header | ||
dotnet_diagnostic.SA1633.severity = none | ||
|
||
# SA1649: File name should match first type name | ||
dotnet_diagnostic.SA1649.severity = suggestion |
97 changes: 97 additions & 0 deletions
97
src/IdentityServer/OpenIddict/ClassifiedAds.Application/ApplicationServicesExtensions.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
using ClassifiedAds.Application; | ||
using ClassifiedAds.Application.EmailMessages.Services; | ||
using ClassifiedAds.Application.EventLogs; | ||
using ClassifiedAds.Application.Products.Services; | ||
using ClassifiedAds.Application.SmsMessages.Services; | ||
using ClassifiedAds.Application.Users.Services; | ||
using ClassifiedAds.Domain.Entities; | ||
using ClassifiedAds.Domain.Events; | ||
using System; | ||
using System.Linq; | ||
using System.Reflection; | ||
|
||
namespace Microsoft.Extensions.DependencyInjection | ||
{ | ||
public static class ApplicationServicesExtensions | ||
{ | ||
public static IServiceCollection AddApplicationServices(this IServiceCollection services, Action<Type, Type, ServiceLifetime> configureInterceptor = null) | ||
{ | ||
DomainEvents.RegisterHandlers(Assembly.GetExecutingAssembly(), services); | ||
|
||
services | ||
.AddScoped<IDomainEvents, DomainEvents>() | ||
.AddScoped(typeof(ICrudService<>), typeof(CrudService<>)) | ||
.AddScoped<IUserService, UserService>() | ||
.AddScoped<IProductService, ProductService>() | ||
.AddScoped<EmailMessageService>() | ||
.AddScoped<SmsMessageService>() | ||
.AddScoped<PublishEventService>(); | ||
|
||
if (configureInterceptor != null) | ||
{ | ||
var aggregateRootTypes = typeof(IAggregateRoot).Assembly.GetTypes().Where(x => x.BaseType == typeof(Entity<Guid>) && x.GetInterfaces().Contains(typeof(IAggregateRoot))).ToList(); | ||
foreach (var type in aggregateRootTypes) | ||
{ | ||
configureInterceptor(typeof(ICrudService<>).MakeGenericType(type), typeof(CrudService<>).MakeGenericType(type), ServiceLifetime.Scoped); | ||
} | ||
|
||
configureInterceptor(typeof(IUserService), typeof(UserService), ServiceLifetime.Scoped); | ||
configureInterceptor(typeof(IProductService), typeof(ProductService), ServiceLifetime.Scoped); | ||
} | ||
|
||
return services; | ||
} | ||
|
||
public static IServiceCollection AddMessageHandlers(this IServiceCollection services) | ||
{ | ||
services.AddScoped<Dispatcher>(); | ||
|
||
var assemblyTypes = Assembly.GetExecutingAssembly().GetTypes(); | ||
|
||
foreach (var type in assemblyTypes) | ||
{ | ||
var handlerInterfaces = type.GetInterfaces() | ||
.Where(Utils.IsHandlerInterface) | ||
.ToList(); | ||
|
||
if (!handlerInterfaces.Any()) | ||
{ | ||
continue; | ||
} | ||
|
||
var handlerFactory = new HandlerFactory(type); | ||
foreach (var interfaceType in handlerInterfaces) | ||
{ | ||
services.AddTransient(interfaceType, provider => handlerFactory.Create(provider, interfaceType)); | ||
} | ||
} | ||
|
||
var aggregateRootTypes = typeof(IAggregateRoot).Assembly.GetTypes().Where(x => x.BaseType == typeof(Entity<Guid>) && x.GetInterfaces().Contains(typeof(IAggregateRoot))).ToList(); | ||
|
||
var genericHandlerTypes = new[] | ||
{ | ||
typeof(GetEntititesQueryHandler<>), | ||
typeof(GetEntityByIdQueryHandler<>), | ||
typeof(AddOrUpdateEntityCommandHandler<>), | ||
typeof(DeleteEntityCommandHandler<>), | ||
}; | ||
|
||
foreach (var aggregateRootType in aggregateRootTypes) | ||
{ | ||
foreach (var genericHandlerType in genericHandlerTypes) | ||
{ | ||
var handlerType = genericHandlerType.MakeGenericType(aggregateRootType); | ||
var handlerInterfaces = handlerType.GetInterfaces(); | ||
|
||
var handlerFactory = new HandlerFactory(handlerType); | ||
foreach (var interfaceType in handlerInterfaces) | ||
{ | ||
services.AddTransient(interfaceType, provider => handlerFactory.Create(provider, interfaceType)); | ||
} | ||
} | ||
} | ||
|
||
return services; | ||
} | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
...ntityServer/OpenIddict/ClassifiedAds.Application/AuditLogEntries/DTOs/AuditLogEntryDTO.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
using System; | ||
|
||
namespace ClassifiedAds.Application.AuditLogEntries.DTOs | ||
{ | ||
public class AuditLogEntryDTO | ||
{ | ||
public Guid Id { get; set; } | ||
|
||
public Guid UserId { get; set; } | ||
|
||
public string UserName { get; set; } | ||
|
||
public string Action { get; set; } | ||
|
||
public string ObjectId { get; set; } | ||
|
||
public string Log { get; set; } | ||
|
||
public DateTimeOffset CreatedDateTime { get; set; } | ||
} | ||
} |
45 changes: 45 additions & 0 deletions
45
...rver/OpenIddict/ClassifiedAds.Application/AuditLogEntries/Queries/GetAuditEntriesQuery.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
using ClassifiedAds.Application.AuditLogEntries.DTOs; | ||
using ClassifiedAds.Domain.Repositories; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Threading; | ||
using System.Threading.Tasks; | ||
|
||
namespace ClassifiedAds.Application.AuditLogEntries.Queries | ||
{ | ||
public class GetAuditEntriesQuery : AuditLogEntryQueryOptions, IQuery<List<AuditLogEntryDTO>> | ||
{ | ||
} | ||
|
||
internal class GetAuditEntriesQueryHandler : IQueryHandler<GetAuditEntriesQuery, List<AuditLogEntryDTO>> | ||
{ | ||
private readonly IAuditLogEntryRepository _auditLogEntryRepository; | ||
private readonly IUserRepository _userRepository; | ||
|
||
public GetAuditEntriesQueryHandler(IAuditLogEntryRepository auditLogEntryRepository, IUserRepository userRepository) | ||
{ | ||
_auditLogEntryRepository = auditLogEntryRepository; | ||
_userRepository = userRepository; | ||
} | ||
|
||
public async Task<List<AuditLogEntryDTO>> HandleAsync(GetAuditEntriesQuery query, CancellationToken cancellationToken = default) | ||
{ | ||
var auditLogs = _auditLogEntryRepository.Get(query); | ||
var users = _userRepository.GetAll(); | ||
|
||
var rs = auditLogs.Join(users, x => x.UserId, y => y.Id, | ||
(x, y) => new AuditLogEntryDTO | ||
{ | ||
Id = x.Id, | ||
UserId = x.UserId, | ||
Action = x.Action, | ||
ObjectId = x.ObjectId, | ||
Log = x.Log, | ||
CreatedDateTime = x.CreatedDateTime, | ||
UserName = y.UserName, | ||
}); | ||
|
||
return await _userRepository.ToListAsync(rs.OrderByDescending(x => x.CreatedDateTime)); | ||
} | ||
} | ||
} |
Oops, something went wrong.