Namespace rename #2
							
								
								
									
										226
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										226
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,226 @@
 | 
				
			|||||||
 | 
					# Remove the line below if you want to inherit .editorconfig settings from higher directories
 | 
				
			||||||
 | 
					root = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# C# files
 | 
				
			||||||
 | 
					[*.cs]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Core EditorConfig Options ####
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Indentation and spacing
 | 
				
			||||||
 | 
					indent_size = 4
 | 
				
			||||||
 | 
					indent_style = tab
 | 
				
			||||||
 | 
					tab_width = 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# New line preferences
 | 
				
			||||||
 | 
					end_of_line = crlf
 | 
				
			||||||
 | 
					insert_final_newline = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### .NET Coding Conventions ####
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Organize usings
 | 
				
			||||||
 | 
					dotnet_separate_import_directive_groups = false
 | 
				
			||||||
 | 
					dotnet_sort_system_directives_first = true
 | 
				
			||||||
 | 
					file_header_template = unset
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# this. and Me. preferences
 | 
				
			||||||
 | 
					dotnet_style_qualification_for_event = false
 | 
				
			||||||
 | 
					dotnet_style_qualification_for_field = false
 | 
				
			||||||
 | 
					dotnet_style_qualification_for_method = false
 | 
				
			||||||
 | 
					dotnet_style_qualification_for_property = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Language keywords vs BCL types preferences
 | 
				
			||||||
 | 
					dotnet_style_predefined_type_for_locals_parameters_members = true
 | 
				
			||||||
 | 
					dotnet_style_predefined_type_for_member_access = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Parentheses preferences
 | 
				
			||||||
 | 
					dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
 | 
				
			||||||
 | 
					dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
 | 
				
			||||||
 | 
					dotnet_style_parentheses_in_other_operators = never_if_unnecessary
 | 
				
			||||||
 | 
					dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Modifier preferences
 | 
				
			||||||
 | 
					dotnet_style_require_accessibility_modifiers = for_non_interface_members
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Expression-level preferences
 | 
				
			||||||
 | 
					dotnet_style_coalesce_expression = true
 | 
				
			||||||
 | 
					dotnet_style_collection_initializer = true
 | 
				
			||||||
 | 
					dotnet_style_explicit_tuple_names = true
 | 
				
			||||||
 | 
					dotnet_style_namespace_match_folder = true
 | 
				
			||||||
 | 
					dotnet_style_null_propagation = true
 | 
				
			||||||
 | 
					dotnet_style_object_initializer = true
 | 
				
			||||||
 | 
					dotnet_style_operator_placement_when_wrapping = beginning_of_line
 | 
				
			||||||
 | 
					dotnet_style_prefer_auto_properties = true
 | 
				
			||||||
 | 
					dotnet_style_prefer_compound_assignment = true
 | 
				
			||||||
 | 
					dotnet_style_prefer_conditional_expression_over_assignment = true
 | 
				
			||||||
 | 
					dotnet_style_prefer_conditional_expression_over_return = true
 | 
				
			||||||
 | 
					dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed
 | 
				
			||||||
 | 
					dotnet_style_prefer_inferred_anonymous_type_member_names = true
 | 
				
			||||||
 | 
					dotnet_style_prefer_inferred_tuple_names = true
 | 
				
			||||||
 | 
					dotnet_style_prefer_is_null_check_over_reference_equality_method = true
 | 
				
			||||||
 | 
					dotnet_style_prefer_simplified_boolean_expressions = true
 | 
				
			||||||
 | 
					dotnet_style_prefer_simplified_interpolation = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Field preferences
 | 
				
			||||||
 | 
					dotnet_style_readonly_field = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Parameter preferences
 | 
				
			||||||
 | 
					dotnet_code_quality_unused_parameters = all
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Suppression preferences
 | 
				
			||||||
 | 
					dotnet_remove_unnecessary_suppression_exclusions = none
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# New line preferences
 | 
				
			||||||
 | 
					dotnet_style_allow_multiple_blank_lines_experimental = false
 | 
				
			||||||
 | 
					dotnet_style_allow_statement_immediately_after_block_experimental = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### C# Coding Conventions ####
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# var preferences
 | 
				
			||||||
 | 
					csharp_style_var_elsewhere = true
 | 
				
			||||||
 | 
					csharp_style_var_for_built_in_types = true
 | 
				
			||||||
 | 
					csharp_style_var_when_type_is_apparent = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Expression-bodied members
 | 
				
			||||||
 | 
					csharp_style_expression_bodied_accessors = true
 | 
				
			||||||
 | 
					csharp_style_expression_bodied_constructors = false
 | 
				
			||||||
 | 
					csharp_style_expression_bodied_indexers = true
 | 
				
			||||||
 | 
					csharp_style_expression_bodied_lambdas = true
 | 
				
			||||||
 | 
					csharp_style_expression_bodied_local_functions = false
 | 
				
			||||||
 | 
					csharp_style_expression_bodied_methods = false
 | 
				
			||||||
 | 
					csharp_style_expression_bodied_operators = false
 | 
				
			||||||
 | 
					csharp_style_expression_bodied_properties = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pattern matching preferences
 | 
				
			||||||
 | 
					csharp_style_pattern_matching_over_as_with_null_check = true
 | 
				
			||||||
 | 
					csharp_style_pattern_matching_over_is_with_cast_check = true
 | 
				
			||||||
 | 
					csharp_style_prefer_extended_property_pattern = true
 | 
				
			||||||
 | 
					csharp_style_prefer_not_pattern = true
 | 
				
			||||||
 | 
					csharp_style_prefer_pattern_matching = true
 | 
				
			||||||
 | 
					csharp_style_prefer_switch_expression = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Null-checking preferences
 | 
				
			||||||
 | 
					csharp_style_conditional_delegate_call = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Modifier preferences
 | 
				
			||||||
 | 
					csharp_prefer_static_local_function = true
 | 
				
			||||||
 | 
					csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async
 | 
				
			||||||
 | 
					csharp_style_prefer_readonly_struct = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Code-block preferences
 | 
				
			||||||
 | 
					csharp_prefer_braces = when_multiline
 | 
				
			||||||
 | 
					csharp_prefer_simple_using_statement = true
 | 
				
			||||||
 | 
					csharp_style_namespace_declarations = file_scoped
 | 
				
			||||||
 | 
					csharp_style_prefer_method_group_conversion = true
 | 
				
			||||||
 | 
					csharp_style_prefer_top_level_statements = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Expression-level preferences
 | 
				
			||||||
 | 
					csharp_prefer_simple_default_expression = true
 | 
				
			||||||
 | 
					csharp_style_deconstructed_variable_declaration = true
 | 
				
			||||||
 | 
					csharp_style_implicit_object_creation_when_type_is_apparent = true
 | 
				
			||||||
 | 
					csharp_style_inlined_variable_declaration = true
 | 
				
			||||||
 | 
					csharp_style_prefer_index_operator = true
 | 
				
			||||||
 | 
					csharp_style_prefer_local_over_anonymous_function = true
 | 
				
			||||||
 | 
					csharp_style_prefer_null_check_over_type_check = true
 | 
				
			||||||
 | 
					csharp_style_prefer_range_operator = true
 | 
				
			||||||
 | 
					csharp_style_prefer_tuple_swap = true
 | 
				
			||||||
 | 
					csharp_style_prefer_utf8_string_literals = true
 | 
				
			||||||
 | 
					csharp_style_throw_expression = true
 | 
				
			||||||
 | 
					csharp_style_unused_value_assignment_preference = discard_variable
 | 
				
			||||||
 | 
					csharp_style_unused_value_expression_statement_preference = discard_variable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 'using' directive preferences
 | 
				
			||||||
 | 
					csharp_using_directive_placement = outside_namespace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# New line preferences
 | 
				
			||||||
 | 
					csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
 | 
				
			||||||
 | 
					csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false
 | 
				
			||||||
 | 
					csharp_style_allow_embedded_statements_on_same_line_experimental = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### C# Formatting Rules ####
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# New line preferences
 | 
				
			||||||
 | 
					csharp_new_line_before_catch = true
 | 
				
			||||||
 | 
					csharp_new_line_before_else = true
 | 
				
			||||||
 | 
					csharp_new_line_before_finally = true
 | 
				
			||||||
 | 
					csharp_new_line_before_members_in_anonymous_types = true
 | 
				
			||||||
 | 
					csharp_new_line_before_members_in_object_initializers = true
 | 
				
			||||||
 | 
					csharp_new_line_before_open_brace = all
 | 
				
			||||||
 | 
					csharp_new_line_between_query_expression_clauses = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Indentation preferences
 | 
				
			||||||
 | 
					csharp_indent_block_contents = true
 | 
				
			||||||
 | 
					csharp_indent_braces = false
 | 
				
			||||||
 | 
					csharp_indent_case_contents = true
 | 
				
			||||||
 | 
					csharp_indent_case_contents_when_block = true
 | 
				
			||||||
 | 
					csharp_indent_labels = one_less_than_current
 | 
				
			||||||
 | 
					csharp_indent_switch_labels = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Space preferences
 | 
				
			||||||
 | 
					csharp_space_after_cast = false
 | 
				
			||||||
 | 
					csharp_space_after_colon_in_inheritance_clause = true
 | 
				
			||||||
 | 
					csharp_space_after_comma = true
 | 
				
			||||||
 | 
					csharp_space_after_dot = false
 | 
				
			||||||
 | 
					csharp_space_after_keywords_in_control_flow_statements = true
 | 
				
			||||||
 | 
					csharp_space_after_semicolon_in_for_statement = true
 | 
				
			||||||
 | 
					csharp_space_around_binary_operators = before_and_after
 | 
				
			||||||
 | 
					csharp_space_around_declaration_statements = false
 | 
				
			||||||
 | 
					csharp_space_before_colon_in_inheritance_clause = true
 | 
				
			||||||
 | 
					csharp_space_before_comma = false
 | 
				
			||||||
 | 
					csharp_space_before_dot = false
 | 
				
			||||||
 | 
					csharp_space_before_open_square_brackets = false
 | 
				
			||||||
 | 
					csharp_space_before_semicolon_in_for_statement = false
 | 
				
			||||||
 | 
					csharp_space_between_empty_square_brackets = false
 | 
				
			||||||
 | 
					csharp_space_between_method_call_empty_parameter_list_parentheses = false
 | 
				
			||||||
 | 
					csharp_space_between_method_call_name_and_opening_parenthesis = false
 | 
				
			||||||
 | 
					csharp_space_between_method_call_parameter_list_parentheses = false
 | 
				
			||||||
 | 
					csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
 | 
				
			||||||
 | 
					csharp_space_between_method_declaration_name_and_open_parenthesis = false
 | 
				
			||||||
 | 
					csharp_space_between_method_declaration_parameter_list_parentheses = false
 | 
				
			||||||
 | 
					csharp_space_between_parentheses = false
 | 
				
			||||||
 | 
					csharp_space_between_square_brackets = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Wrapping preferences
 | 
				
			||||||
 | 
					csharp_preserve_single_line_blocks = true
 | 
				
			||||||
 | 
					csharp_preserve_single_line_statements = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Naming styles ####
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Naming rules
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
 | 
				
			||||||
 | 
					dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
 | 
				
			||||||
 | 
					dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
 | 
				
			||||||
 | 
					dotnet_naming_rule.types_should_be_pascal_case.symbols = types
 | 
				
			||||||
 | 
					dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
 | 
				
			||||||
 | 
					dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
 | 
				
			||||||
 | 
					dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Symbol specifications
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dotnet_naming_symbols.interface.applicable_kinds = interface
 | 
				
			||||||
 | 
					dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
 | 
				
			||||||
 | 
					dotnet_naming_symbols.interface.required_modifiers = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
 | 
				
			||||||
 | 
					dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
 | 
				
			||||||
 | 
					dotnet_naming_symbols.types.required_modifiers = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
 | 
				
			||||||
 | 
					dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
 | 
				
			||||||
 | 
					dotnet_naming_symbols.non_field_members.required_modifiers = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Naming styles
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dotnet_naming_style.pascal_case.required_prefix = 
 | 
				
			||||||
 | 
					dotnet_naming_style.pascal_case.required_suffix = 
 | 
				
			||||||
 | 
					dotnet_naming_style.pascal_case.word_separator = 
 | 
				
			||||||
 | 
					dotnet_naming_style.pascal_case.capitalization = pascal_case
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dotnet_naming_style.begins_with_i.required_prefix = I
 | 
				
			||||||
 | 
					dotnet_naming_style.begins_with_i.required_suffix = 
 | 
				
			||||||
 | 
					dotnet_naming_style.begins_with_i.word_separator = 
 | 
				
			||||||
 | 
					dotnet_naming_style.begins_with_i.capitalization = pascal_case
 | 
				
			||||||
@ -1,42 +0,0 @@
 | 
				
			|||||||
using Connected.Data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace Common.Documents
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	/// <summary>
 | 
					 | 
				
			||||||
	/// Represents the base entity for all documents.
 | 
					 | 
				
			||||||
	/// </summary>
 | 
					 | 
				
			||||||
	/// <remarks>
 | 
					 | 
				
			||||||
	/// Document is primary entity of the business processes. It provides
 | 
					 | 
				
			||||||
	/// schema which is used in a business process lifecycle. Documents, apart from 
 | 
					 | 
				
			||||||
	/// some basic validation, do not provide any specifiec business logic. Business
 | 
					 | 
				
			||||||
	/// processes are entirely responsible for the business logic.
 | 
					 | 
				
			||||||
	/// </remarks>
 | 
					 | 
				
			||||||
	public interface IDocument<TPrimaryKey> : IPrimaryKey<TPrimaryKey>
 | 
					 | 
				
			||||||
		where TPrimaryKey : notnull
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		/// <summary>
 | 
					 | 
				
			||||||
		/// The date when document was created.
 | 
					 | 
				
			||||||
		/// </summary>
 | 
					 | 
				
			||||||
		DateTimeOffset Created { get; init; }
 | 
					 | 
				
			||||||
		/// <summary>
 | 
					 | 
				
			||||||
		/// The date when document was last updated.
 | 
					 | 
				
			||||||
		/// </summary>
 | 
					 | 
				
			||||||
		DateTimeOffset? Modified { get; init; }
 | 
					 | 
				
			||||||
		/// <summary>
 | 
					 | 
				
			||||||
		/// The unique identifier of the document. This is
 | 
					 | 
				
			||||||
		/// usually set by a customer specific numbering system. 
 | 
					 | 
				
			||||||
		/// </summary>
 | 
					 | 
				
			||||||
		string? Code { get; init; }
 | 
					 | 
				
			||||||
		/// <summary>
 | 
					 | 
				
			||||||
		/// The user which created the document. Can be null if document was created by the system.
 | 
					 | 
				
			||||||
		/// </summary>
 | 
					 | 
				
			||||||
		int? Author { get; init; }
 | 
					 | 
				
			||||||
		/// <summary>
 | 
					 | 
				
			||||||
		/// The user last modified the document. Once user modifies the document it becomes the Owner. 
 | 
					 | 
				
			||||||
		/// </summary>
 | 
					 | 
				
			||||||
		/// <remarks>
 | 
					 | 
				
			||||||
		/// This behavior could be overriden in documents implementation.
 | 
					 | 
				
			||||||
		/// </remarks>
 | 
					 | 
				
			||||||
		int? Owner { get; init; }
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
<Project Sdk="Microsoft.NET.Sdk">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <PropertyGroup>
 | 
					 | 
				
			||||||
    <TargetFramework>net7.0</TargetFramework>
 | 
					 | 
				
			||||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
					 | 
				
			||||||
    <Nullable>enable</Nullable>
 | 
					 | 
				
			||||||
    <RootNamespace>Common.Notes</RootNamespace>
 | 
					 | 
				
			||||||
  </PropertyGroup>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <ItemGroup>
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\Common.Model\Common.Model.csproj" />
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</Project>
 | 
					 | 
				
			||||||
@ -1,16 +0,0 @@
 | 
				
			|||||||
<Project Sdk="Microsoft.NET.Sdk">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <PropertyGroup>
 | 
					 | 
				
			||||||
    <TargetFramework>net7.0</TargetFramework>
 | 
					 | 
				
			||||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
					 | 
				
			||||||
    <Nullable>enable</Nullable>
 | 
					 | 
				
			||||||
  </PropertyGroup>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <ItemGroup>
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\..\Framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\..\Framework\Connected.Entities\Connected.Entities.csproj" />
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\..\Framework\Connected.Services\Connected.Services.csproj" />
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\Common.Notes.Model\Common.Notes.Model.csproj" />
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\Common\Common.csproj" />
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					 | 
				
			||||||
</Project>
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
<Project Sdk="Microsoft.NET.Sdk">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <PropertyGroup>
 | 
					 | 
				
			||||||
    <TargetFramework>net7.0</TargetFramework>
 | 
					 | 
				
			||||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
					 | 
				
			||||||
    <Nullable>enable</Nullable>
 | 
					 | 
				
			||||||
    <RootNamespace>Common.Numbering</RootNamespace>
 | 
					 | 
				
			||||||
  </PropertyGroup>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <ItemGroup>
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\..\Framework\Connected.Middleware\Connected.Middleware.csproj" />
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\Common.Numbering.Model\Common.Numbering.Model.csproj" />
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</Project>
 | 
					 | 
				
			||||||
@ -1,16 +0,0 @@
 | 
				
			|||||||
<Project Sdk="Microsoft.NET.Sdk">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <PropertyGroup>
 | 
					 | 
				
			||||||
    <TargetFramework>net7.0</TargetFramework>
 | 
					 | 
				
			||||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
					 | 
				
			||||||
    <Nullable>enable</Nullable>
 | 
					 | 
				
			||||||
  </PropertyGroup>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <ItemGroup>
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\..\Framework\Connected.Services\Connected.Services.csproj" />
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\Common.Numbering.Middleware\Common.Numbering.Middleware.csproj" />
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\Common.Numbering.Model\Common.Numbering.Model.csproj" />
 | 
					 | 
				
			||||||
    <ProjectReference Include="..\Common\Common.csproj" />
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</Project>
 | 
					 | 
				
			||||||
@ -1,39 +0,0 @@
 | 
				
			|||||||
using Common.Documents;
 | 
					 | 
				
			||||||
using Common.Globalization;
 | 
					 | 
				
			||||||
using Common.Security.Identity;
 | 
					 | 
				
			||||||
using Connected;
 | 
					 | 
				
			||||||
using Connected.Annotations;
 | 
					 | 
				
			||||||
using Connected.Globalization;
 | 
					 | 
				
			||||||
using Connected.Net.Endpoints;
 | 
					 | 
				
			||||||
using Connected.Net.Server;
 | 
					 | 
				
			||||||
using Connected.Security.Identity;
 | 
					 | 
				
			||||||
using Connected.ServiceModel;
 | 
					 | 
				
			||||||
using Microsoft.Extensions.DependencyInjection;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[assembly: MicroService(MicroServiceType.Service)]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace Common
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	internal class CommonStartup : Startup
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		protected override void OnConfigureServices(IServiceCollection services)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			services.AddScoped(typeof(IGlobalizationService), typeof(GlobalizationService));
 | 
					 | 
				
			||||||
			services.AddScoped(typeof(IIdentityService), typeof(IdentityService));
 | 
					 | 
				
			||||||
			services.AddTransient(typeof(IDocumentLocker<,>), typeof(DocumentLocker<,>));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		protected override async Task OnInitialize(Dictionary<string, string> args)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			if (Services is null || Services.GetService<IContextProvider>() is not IContextProvider provider)
 | 
					 | 
				
			||||||
				return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			using var ctx = provider.Create();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if (ctx.GetService<IEndpointService>() is not IEndpointService endpoints || ctx.GetService<IEndpointServer>() is not IEndpointServer server)
 | 
					 | 
				
			||||||
				return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			await server.Initialize(await endpoints.Query(), ctx.CancellationToken);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace Common;
 | 
					namespace Connected.Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public static class CommonRoutes
 | 
					public static class CommonRoutes
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -5,7 +5,7 @@
 | 
				
			|||||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
					    <ImplicitUsings>enable</ImplicitUsings>
 | 
				
			||||||
    <Nullable>enable</Nullable>
 | 
					    <Nullable>enable</Nullable>
 | 
				
			||||||
    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
 | 
					    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
 | 
				
			||||||
    <RootNamespace>Common</RootNamespace>
 | 
					    <RootNamespace>Connected.Common</RootNamespace>
 | 
				
			||||||
  </PropertyGroup>
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
using Connected.Annotations;
 | 
					using System.ComponentModel.DataAnnotations;
 | 
				
			||||||
 | 
					using Connected.Annotations;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using System.ComponentModel.DataAnnotations;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Documents;
 | 
					namespace Connected.Common.Documents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class DocumentArgs : Dto
 | 
					public class DocumentArgs : Dto
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
							
								
								
									
										41
									
								
								Connected.Common.Model/Documents/IDocument.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								Connected.Common.Model/Documents/IDocument.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					using Connected.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Connected.Common.Documents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// <summary>
 | 
				
			||||||
 | 
					/// Represents the base entity for all documents.
 | 
				
			||||||
 | 
					/// </summary>
 | 
				
			||||||
 | 
					/// <remarks>
 | 
				
			||||||
 | 
					/// Document is primary entity of the business processes. It provides
 | 
				
			||||||
 | 
					/// schema which is used in a business process lifecycle. Documents, apart from 
 | 
				
			||||||
 | 
					/// some basic validation, do not provide any specifiec business logic. Business
 | 
				
			||||||
 | 
					/// processes are entirely responsible for the business logic.
 | 
				
			||||||
 | 
					/// </remarks>
 | 
				
			||||||
 | 
					public interface IDocument<TPrimaryKey> : IPrimaryKey<TPrimaryKey>
 | 
				
			||||||
 | 
						where TPrimaryKey : notnull
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/// <summary>
 | 
				
			||||||
 | 
						/// The date when document was created.
 | 
				
			||||||
 | 
						/// </summary>
 | 
				
			||||||
 | 
						DateTimeOffset Created { get; init; }
 | 
				
			||||||
 | 
						/// <summary>
 | 
				
			||||||
 | 
						/// The date when document was last updated.
 | 
				
			||||||
 | 
						/// </summary>
 | 
				
			||||||
 | 
						DateTimeOffset? Modified { get; init; }
 | 
				
			||||||
 | 
						/// <summary>
 | 
				
			||||||
 | 
						/// The unique identifier of the document. This is
 | 
				
			||||||
 | 
						/// usually set by a customer specific numbering system. 
 | 
				
			||||||
 | 
						/// </summary>
 | 
				
			||||||
 | 
						string? Code { get; init; }
 | 
				
			||||||
 | 
						/// <summary>
 | 
				
			||||||
 | 
						/// The user which created the document. Can be null if document was created by the system.
 | 
				
			||||||
 | 
						/// </summary>
 | 
				
			||||||
 | 
						int? Author { get; init; }
 | 
				
			||||||
 | 
						/// <summary>
 | 
				
			||||||
 | 
						/// The user last modified the document. Once user modifies the document it becomes the Owner. 
 | 
				
			||||||
 | 
						/// </summary>
 | 
				
			||||||
 | 
						/// <remarks>
 | 
				
			||||||
 | 
						/// This behavior could be overriden in documents implementation.
 | 
				
			||||||
 | 
						/// </remarks>
 | 
				
			||||||
 | 
						int? Owner { get; init; }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Notifications;
 | 
					using Connected.Notifications;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Documents;
 | 
					namespace Connected.Common.Documents;
 | 
				
			||||||
public interface IDocumentService<TDocumentPrimaryKey, TDetailPrimaryKey> : IServiceNotifications<TDocumentPrimaryKey>
 | 
					public interface IDocumentService<TDocumentPrimaryKey, TDetailPrimaryKey> : IServiceNotifications<TDocumentPrimaryKey>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	event ServiceEventHandler<PrimaryKeyEventArgs<TDetailPrimaryKey>>? ItemInserted;
 | 
						event ServiceEventHandler<PrimaryKeyEventArgs<TDetailPrimaryKey>>? ItemInserted;
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace Common;
 | 
					namespace Connected.Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public static class Units
 | 
					public static class Units
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -4,11 +4,12 @@
 | 
				
			|||||||
    <TargetFramework>net7.0</TargetFramework>
 | 
					    <TargetFramework>net7.0</TargetFramework>
 | 
				
			||||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
					    <ImplicitUsings>enable</ImplicitUsings>
 | 
				
			||||||
    <Nullable>enable</Nullable>
 | 
					    <Nullable>enable</Nullable>
 | 
				
			||||||
    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
 | 
					    <RootNamespace>Connected.Common.Notes</RootNamespace>
 | 
				
			||||||
  </PropertyGroup>
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
 | 
					    <ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\Connected.Common.Model\Connected.Common.Model.csproj" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Data;
 | 
					using Connected.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Notes;
 | 
					namespace Connected.Common.Notes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public interface INote : IEntityContainer<long>
 | 
					public interface INote : IEntityContainer<long>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Data;
 | 
					using Connected.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Notes;
 | 
					namespace Connected.Common.Notes;
 | 
				
			||||||
public interface INoteSearch : IEntityContainer<long>
 | 
					public interface INoteSearch : IEntityContainer<long>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int Author { get; init; }
 | 
						int Author { get; init; }
 | 
				
			||||||
@ -3,7 +3,7 @@ using Connected.Annotations;
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.ServiceModel.Search;
 | 
					using Connected.ServiceModel.Search;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Notes;
 | 
					namespace Connected.Common.Notes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Service]
 | 
					[Service]
 | 
				
			||||||
[ServiceUrl(NoteUrls.Notes)]
 | 
					[ServiceUrl(NoteUrls.Notes)]
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Data;
 | 
					using Connected.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Notes;
 | 
					namespace Connected.Common.Notes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public interface INoteText : IPrimaryKey<long>
 | 
					public interface INoteText : IPrimaryKey<long>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using System.ComponentModel.DataAnnotations;
 | 
					using System.ComponentModel.DataAnnotations;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Notes;
 | 
					namespace Connected.Common.Notes;
 | 
				
			||||||
public class NoteArgs : Dto
 | 
					public class NoteArgs : Dto
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	[Required, MaxLength(128)]
 | 
						[Required, MaxLength(128)]
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace Common.Notes;
 | 
					namespace Connected.Common.Notes;
 | 
				
			||||||
public static class NoteUrls
 | 
					public static class NoteUrls
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public const string Notes = $"{CommonRoutes.Common}/notes";
 | 
						public const string Notes = $"{CommonRoutes.Common}/notes";
 | 
				
			||||||
							
								
								
									
										16
									
								
								Connected.Common.Notes/Connected.Common.Notes.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								Connected.Common.Notes/Connected.Common.Notes.csproj
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					<Project Sdk="Microsoft.NET.Sdk">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <PropertyGroup>
 | 
				
			||||||
 | 
					    <TargetFramework>net7.0</TargetFramework>
 | 
				
			||||||
 | 
					    <ImplicitUsings>enable</ImplicitUsings>
 | 
				
			||||||
 | 
					    <Nullable>enable</Nullable>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\..\connected.framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\..\connected.framework\Connected.Entities\Connected.Entities.csproj" />
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\..\connected.framework\Connected.Services\Connected.Services.csproj" />
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\Connected.Common.Notes.Model\Connected.Common.Notes.Model.csproj" />
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\Connected.Common\Connected.Common.csproj" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
using Connected.Entities.Annotations;
 | 
					using Connected.Entities.Annotations;
 | 
				
			||||||
using Connected.Entities.Containers;
 | 
					using Connected.Entities.Containers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Notes;
 | 
					namespace Connected.Common.Notes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Table(Schema = Constants.CommonSchema)]
 | 
					[Table(Schema = Constants.CommonSchema)]
 | 
				
			||||||
public sealed record Note : ContainerEntity<long>, INote
 | 
					public sealed record Note : ContainerEntity<long>, INote
 | 
				
			||||||
@ -8,7 +8,7 @@ using Connected.ServiceModel;
 | 
				
			|||||||
using Connected.ServiceModel.Search;
 | 
					using Connected.ServiceModel.Search;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Notes;
 | 
					namespace Connected.Common.Notes;
 | 
				
			||||||
internal static class NoteOps
 | 
					internal static class NoteOps
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	/// <summary>
 | 
						/// <summary>
 | 
				
			||||||
@ -196,8 +196,8 @@ internal static class NoteOps
 | 
				
			|||||||
		protected override async Task<ImmutableList<INoteSearch>?> OnInvoke()
 | 
							protected override async Task<ImmutableList<INoteSearch>?> OnInvoke()
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			return await (from dc in Storage.Open<NoteSearch>()
 | 
								return await (from dc in Storage.Open<NoteSearch>()
 | 
				
			||||||
							  where dc.Text.Contains(Arguments.Text)
 | 
											  where dc.Text.Contains(Arguments.Text)
 | 
				
			||||||
							  select dc).AsEntities<INoteSearch>();
 | 
											  select dc).AsEntities<INoteSearch>();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -213,9 +213,9 @@ internal static class NoteOps
 | 
				
			|||||||
		protected override async Task<ImmutableList<INoteText>?> OnInvoke()
 | 
							protected override async Task<ImmutableList<INoteText>?> OnInvoke()
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			return await (from dc in Storage.Open<NoteText>()
 | 
								return await (from dc in Storage.Open<NoteText>()
 | 
				
			||||||
							  where string.Equals(dc.Entity, Arguments.Entity, StringComparison.Ordinal)
 | 
											  where string.Equals(dc.Entity, Arguments.Entity, StringComparison.Ordinal)
 | 
				
			||||||
							  && Arguments.IdList.Any(f => f == dc.Id)
 | 
											  && Arguments.IdList.Any(f => f == dc.Id)
 | 
				
			||||||
							  select dc).AsEntities<INoteText>();
 | 
											  select dc).AsEntities<INoteText>();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -231,10 +231,10 @@ internal static class NoteOps
 | 
				
			|||||||
		protected override async Task<INoteText?> OnInvoke()
 | 
							protected override async Task<INoteText?> OnInvoke()
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			return await (from dc in Provider.Open<NoteText>()
 | 
								return await (from dc in Provider.Open<NoteText>()
 | 
				
			||||||
							  where string.Equals(dc.Entity, Arguments.Entity)
 | 
											  where string.Equals(dc.Entity, Arguments.Entity)
 | 
				
			||||||
							  && string.Equals(dc.EntityId, Arguments.EntityId)
 | 
											  && string.Equals(dc.EntityId, Arguments.EntityId)
 | 
				
			||||||
							  && dc.Id == Arguments.Id
 | 
											  && dc.Id == Arguments.Id
 | 
				
			||||||
							  select dc).AsEntity();
 | 
											  select dc).AsEntity();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
using Connected.Entities.Annotations;
 | 
					using Connected.Entities.Annotations;
 | 
				
			||||||
using Connected.Entities.Containers;
 | 
					using Connected.Entities.Containers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Notes;
 | 
					namespace Connected.Common.Notes;
 | 
				
			||||||
[Persistence(Persistence = ColumnPersistence.InMemory)]
 | 
					[Persistence(Persistence = ColumnPersistence.InMemory)]
 | 
				
			||||||
public record NoteSearch : ContainerEntity<long>, INoteSearch
 | 
					public record NoteSearch : ContainerEntity<long>, INoteSearch
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -3,7 +3,7 @@ using Connected.ServiceModel;
 | 
				
			|||||||
using Connected.ServiceModel.Search;
 | 
					using Connected.ServiceModel.Search;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Notes;
 | 
					namespace Connected.Common.Notes;
 | 
				
			||||||
internal sealed class NoteService : Service, INoteService
 | 
					internal sealed class NoteService : Service, INoteService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public NoteService(IContext context) : base(context)
 | 
						public NoteService(IContext context) : base(context)
 | 
				
			||||||
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
 | 
				
			|||||||
using Connected.ServiceModel.Annotations;
 | 
					using Connected.ServiceModel.Annotations;
 | 
				
			||||||
using Connected.ServiceModel.Data;
 | 
					using Connected.ServiceModel.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Notes;
 | 
					namespace Connected.Common.Notes;
 | 
				
			||||||
public sealed record NoteText : TableEntity<long, string>, INoteText
 | 
					public sealed record NoteText : TableEntity<long, string>, INoteText
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public const string EntityKey = $"{Constants.CommonSchema}.{nameof(NoteText)}";
 | 
						public const string EntityKey = $"{Constants.CommonSchema}.{nameof(NoteText)}";
 | 
				
			||||||
@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					<Project Sdk="Microsoft.NET.Sdk">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <PropertyGroup>
 | 
				
			||||||
 | 
					    <TargetFramework>net7.0</TargetFramework>
 | 
				
			||||||
 | 
					    <ImplicitUsings>enable</ImplicitUsings>
 | 
				
			||||||
 | 
					    <Nullable>enable</Nullable>
 | 
				
			||||||
 | 
					    <RootNamespace>Connected.Common.Numbering</RootNamespace>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\..\connected.framework\Connected.Middleware\Connected.Middleware.csproj" />
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\Connected.Common.Numbering.Model\Connected.Common.Numbering.Model.csproj" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
@ -1,6 +1,4 @@
 | 
				
			|||||||
using Connected;
 | 
					namespace Connected.Common.Numbering;
 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace Common.Numbering;
 | 
					 | 
				
			||||||
/// <summary>
 | 
					/// <summary>
 | 
				
			||||||
/// Provides middleware for providing a numbering algorithm.
 | 
					/// Provides middleware for providing a numbering algorithm.
 | 
				
			||||||
/// </summary>
 | 
					/// </summary>
 | 
				
			||||||
@ -4,7 +4,7 @@
 | 
				
			|||||||
    <TargetFramework>net7.0</TargetFramework>
 | 
					    <TargetFramework>net7.0</TargetFramework>
 | 
				
			||||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
					    <ImplicitUsings>enable</ImplicitUsings>
 | 
				
			||||||
    <Nullable>enable</Nullable>
 | 
					    <Nullable>enable</Nullable>
 | 
				
			||||||
    <RootNamespace>Common.Numbering</RootNamespace>
 | 
					    <RootNamespace>Connected.Common.Numbering</RootNamespace>
 | 
				
			||||||
  </PropertyGroup>
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Data;
 | 
					using Connected.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Numbering;
 | 
					namespace Connected.Common.Numbering;
 | 
				
			||||||
public interface INumbering : IPrimaryKey<int>
 | 
					public interface INumbering : IPrimaryKey<int>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	string Entity { get; init; }
 | 
						string Entity { get; init; }
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using Connected.Annotations;
 | 
					using Connected.Annotations;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Numbering;
 | 
					namespace Connected.Common.Numbering;
 | 
				
			||||||
[Service]
 | 
					[Service]
 | 
				
			||||||
[ServiceUrl(NumberingUrls.Numbering)]
 | 
					[ServiceUrl(NumberingUrls.Numbering)]
 | 
				
			||||||
public interface INumberingService
 | 
					public interface INumberingService
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using System.ComponentModel.DataAnnotations;
 | 
				
			||||||
using System.ComponentModel.DataAnnotations;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Numbering;
 | 
					namespace Connected.Common.Numbering;
 | 
				
			||||||
public sealed class NumberingCalculateArgs : Dto
 | 
					public sealed class NumberingCalculateArgs : Dto
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	[Required, MaxLength(128)]
 | 
						[Required, MaxLength(128)]
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace Common.Numbering;
 | 
					namespace Connected.Common.Numbering;
 | 
				
			||||||
public static class NumberingUrls
 | 
					public static class NumberingUrls
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public const string Numbering = "common/numbering";
 | 
						public const string Numbering = "common/numbering";
 | 
				
			||||||
							
								
								
									
										16
									
								
								Connected.Common.Numbering/Connected.Common.Numbering.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								Connected.Common.Numbering/Connected.Common.Numbering.csproj
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					<Project Sdk="Microsoft.NET.Sdk">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <PropertyGroup>
 | 
				
			||||||
 | 
					    <TargetFramework>net7.0</TargetFramework>
 | 
				
			||||||
 | 
					    <ImplicitUsings>enable</ImplicitUsings>
 | 
				
			||||||
 | 
					    <Nullable>enable</Nullable>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\..\connected.framework\Connected.Services\Connected.Services.csproj" />
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\Connected.Common.Numbering.Middleware\Connected.Common.Numbering.Middleware.csproj" />
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\Connected.Common.Numbering.Model\Connected.Common.Numbering.Model.csproj" />
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\Connected.Common\Connected.Common.csproj" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using Connected.Annotations;
 | 
					using Connected.Annotations;
 | 
				
			||||||
using Connected.Middleware;
 | 
					using Connected.Middleware;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Numbering;
 | 
					namespace Connected.Common.Numbering;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Priority(0)]
 | 
					[Priority(0)]
 | 
				
			||||||
internal sealed class DefaultProvider : MiddlewareComponent, INumberingProvider
 | 
					internal sealed class DefaultProvider : MiddlewareComponent, INumberingProvider
 | 
				
			||||||
@ -1,9 +1,9 @@
 | 
				
			|||||||
using Connected.Annotations;
 | 
					using System.ComponentModel.DataAnnotations;
 | 
				
			||||||
 | 
					using Connected.Annotations;
 | 
				
			||||||
using Connected.Entities.Annotations;
 | 
					using Connected.Entities.Annotations;
 | 
				
			||||||
using Connected.Entities.Consistency;
 | 
					using Connected.Entities.Consistency;
 | 
				
			||||||
using System.ComponentModel.DataAnnotations;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Numbering;
 | 
					namespace Connected.Common.Numbering;
 | 
				
			||||||
[Table(Schema = CommonSchemas.CommonSchema)]
 | 
					[Table(Schema = CommonSchemas.CommonSchema)]
 | 
				
			||||||
internal sealed record Numbering : ConsistentEntity<int>, INumbering
 | 
					internal sealed record Numbering : ConsistentEntity<int>, INumbering
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -5,7 +5,7 @@ using Connected.Middleware;
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Numbering;
 | 
					namespace Connected.Common.Numbering;
 | 
				
			||||||
internal sealed class NumberingOps
 | 
					internal sealed class NumberingOps
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public sealed class Calculate : ServiceFunction<NumberingCalculateArgs, string>
 | 
						public sealed class Calculate : ServiceFunction<NumberingCalculateArgs, string>
 | 
				
			||||||
@ -113,8 +113,8 @@ internal sealed class NumberingOps
 | 
				
			|||||||
		protected override async Task<INumbering?> OnInvoke()
 | 
							protected override async Task<INumbering?> OnInvoke()
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			return await (from e in Storage.Open<Numbering>()
 | 
								return await (from e in Storage.Open<Numbering>()
 | 
				
			||||||
							  where string.Equals(e.Entity, Arguments.Entity, StringComparison.OrdinalIgnoreCase)
 | 
											  where string.Equals(e.Entity, Arguments.Entity, StringComparison.OrdinalIgnoreCase)
 | 
				
			||||||
							  select e).AsEntity();
 | 
											  select e).AsEntity();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -130,8 +130,8 @@ internal sealed class NumberingOps
 | 
				
			|||||||
		protected override async Task<INumbering?> OnInvoke()
 | 
							protected override async Task<INumbering?> OnInvoke()
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			return await (from e in Storage.Open<Numbering>()
 | 
								return await (from e in Storage.Open<Numbering>()
 | 
				
			||||||
							  where e.Id == Arguments.Id
 | 
											  where e.Id == Arguments.Id
 | 
				
			||||||
							  select e).AsEntity();
 | 
											  select e).AsEntity();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
using Ops = Common.Numbering.NumberingOps;
 | 
					using Ops = Connected.Common.Numbering.NumberingOps;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Numbering;
 | 
					namespace Connected.Common.Numbering;
 | 
				
			||||||
internal sealed class NumberingService : Service, INumberingService
 | 
					internal sealed class NumberingService : Service, INumberingService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public NumberingService(IContext context) : base(context)
 | 
						public NumberingService(IContext context) : base(context)
 | 
				
			||||||
@ -5,35 +5,35 @@ VisualStudioVersion = 17.4.32916.344
 | 
				
			|||||||
MinimumVisualStudioVersion = 10.0.40219.1
 | 
					MinimumVisualStudioVersion = 10.0.40219.1
 | 
				
			||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dependencies", "Dependencies", "{75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}"
 | 
					Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dependencies", "Dependencies", "{75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common", "Common\Common.csproj", "{CB582FC6-7A9A-46D1-BA75-4A103E096674}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common", "Connected.Common\Connected.Common.csproj", "{CB582FC6-7A9A-46D1-BA75-4A103E096674}"
 | 
				
			||||||
EndProject
 | 
					 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Globalization", "..\Framework\Connected.Globalization\Connected.Globalization.csproj", "{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}"
 | 
					 | 
				
			||||||
EndProject
 | 
					 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Net", "..\Framework\Connected.Net\Connected.Net.csproj", "{664BD509-4D4A-45D4-8B82-5E54094A95E6}"
 | 
					 | 
				
			||||||
EndProject
 | 
					 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Services", "..\Framework\Connected.Services\Connected.Services.csproj", "{A4616625-88A0-434B-8433-EC8693E1E53B}"
 | 
					 | 
				
			||||||
EndProject
 | 
					 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Validation", "..\Framework\Connected.Validation\Connected.Validation.csproj", "{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}"
 | 
					 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected", "..\Connected\Connected\Connected.csproj", "{B2AE8588-0786-4556-9563-0D941A145C7C}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected", "..\Connected\Connected\Connected.csproj", "{B2AE8588-0786-4556-9563-0D941A145C7C}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Model", "Common.Model\Common.Model.csproj", "{ABF6BF35-ED9F-43A9-8581-23CBD9701E94}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Model", "Connected.Common.Model\Connected.Common.Model.csproj", "{ABF6BF35-ED9F-43A9-8581-23CBD9701E94}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Notes", "Common.Notes\Common.Notes.csproj", "{05B6148F-467C-4090-8FEA-8EA16A4D9956}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Notes", "Connected.Common.Notes\Connected.Common.Notes.csproj", "{05B6148F-467C-4090-8FEA-8EA16A4D9956}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Notes.Model", "Common.Notes.Model\Common.Notes.Model.csproj", "{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Notes.Model", "Connected.Common.Notes.Model\Connected.Common.Notes.Model.csproj", "{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Entities", "..\Framework\Connected.Entities\Connected.Entities.csproj", "{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Numbering.Model", "Connected.Common.Numbering.Model\Connected.Common.Numbering.Model.csproj", "{83F83DE6-28BF-4AB7-902E-42D38A54A578}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.ServiceModel", "..\Framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj", "{3F224810-2034-45BB-BB53-DE5F6E83A07B}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Numbering", "Connected.Common.Numbering\Connected.Common.Numbering.csproj", "{4E810676-E37E-4C25-95FC-747BB32E5A69}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Numbering.Model", "Common.Numbering.Model\Common.Numbering.Model.csproj", "{83F83DE6-28BF-4AB7-902E-42D38A54A578}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Numbering.Middleware", "Connected.Common.Numbering.Middleware\Connected.Common.Numbering.Middleware.csproj", "{424C1CBE-8490-431C-A0A8-1ACB22A65864}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Numbering", "Common.Numbering\Common.Numbering.csproj", "{4E810676-E37E-4C25-95FC-747BB32E5A69}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Entities", "..\connected.framework\Connected.Entities\Connected.Entities.csproj", "{09D6D582-C873-405A-8C33-9E1EFB0483DC}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Numbering.Middleware", "Common.Numbering.Middleware\Common.Numbering.Middleware.csproj", "{424C1CBE-8490-431C-A0A8-1ACB22A65864}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Globalization", "..\connected.framework\Connected.Globalization\Connected.Globalization.csproj", "{29AEF348-A405-4744-B797-24C30C0412DE}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Middleware", "..\Framework\Connected.Middleware\Connected.Middleware.csproj", "{085068A9-6739-423D-957F-DFA22564B574}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Middleware", "..\connected.framework\Connected.Middleware\Connected.Middleware.csproj", "{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Net", "..\connected.framework\Connected.Net\Connected.Net.csproj", "{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.ServiceModel", "..\connected.framework.servicemodel\Connected.ServiceModel\Connected.ServiceModel.csproj", "{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Services", "..\connected.framework\Connected.Services\Connected.Services.csproj", "{38FD6047-BEF1-4367-B96E-E7810F0284AD}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Validation", "..\connected.framework\Connected.Validation\Connected.Validation.csproj", "{E4317767-4F21-4E11-B934-9E1E65547D16}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Global
 | 
					Global
 | 
				
			||||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
						GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
				
			||||||
@ -45,22 +45,6 @@ Global
 | 
				
			|||||||
		{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
							{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
							{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
							{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
					 | 
				
			||||||
		{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
					 | 
				
			||||||
		{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
					 | 
				
			||||||
		{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
					 | 
				
			||||||
		{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
					 | 
				
			||||||
		{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
					 | 
				
			||||||
		{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
					 | 
				
			||||||
		{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
					 | 
				
			||||||
		{A4616625-88A0-434B-8433-EC8693E1E53B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
					 | 
				
			||||||
		{A4616625-88A0-434B-8433-EC8693E1E53B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
					 | 
				
			||||||
		{A4616625-88A0-434B-8433-EC8693E1E53B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
					 | 
				
			||||||
		{A4616625-88A0-434B-8433-EC8693E1E53B}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
					 | 
				
			||||||
		{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
					 | 
				
			||||||
		{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
					 | 
				
			||||||
		{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
					 | 
				
			||||||
		{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
					 | 
				
			||||||
		{B2AE8588-0786-4556-9563-0D941A145C7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
							{B2AE8588-0786-4556-9563-0D941A145C7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{B2AE8588-0786-4556-9563-0D941A145C7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
							{B2AE8588-0786-4556-9563-0D941A145C7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{B2AE8588-0786-4556-9563-0D941A145C7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
							{B2AE8588-0786-4556-9563-0D941A145C7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
@ -77,14 +61,6 @@ Global
 | 
				
			|||||||
		{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
							{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
							{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
							{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
					 | 
				
			||||||
		{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
					 | 
				
			||||||
		{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
					 | 
				
			||||||
		{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
					 | 
				
			||||||
		{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
					 | 
				
			||||||
		{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
					 | 
				
			||||||
		{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
					 | 
				
			||||||
		{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
					 | 
				
			||||||
		{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
							{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
							{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
							{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
@ -97,23 +73,47 @@ Global
 | 
				
			|||||||
		{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
							{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
							{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
							{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{085068A9-6739-423D-957F-DFA22564B574}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
							{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{085068A9-6739-423D-957F-DFA22564B574}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
							{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{085068A9-6739-423D-957F-DFA22564B574}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
							{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{085068A9-6739-423D-957F-DFA22564B574}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
							{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{29AEF348-A405-4744-B797-24C30C0412DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{29AEF348-A405-4744-B797-24C30C0412DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{29AEF348-A405-4744-B797-24C30C0412DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{29AEF348-A405-4744-B797-24C30C0412DE}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{E4317767-4F21-4E11-B934-9E1E65547D16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{E4317767-4F21-4E11-B934-9E1E65547D16}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{E4317767-4F21-4E11-B934-9E1E65547D16}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{E4317767-4F21-4E11-B934-9E1E65547D16}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
	EndGlobalSection
 | 
						EndGlobalSection
 | 
				
			||||||
	GlobalSection(SolutionProperties) = preSolution
 | 
						GlobalSection(SolutionProperties) = preSolution
 | 
				
			||||||
		HideSolutionNode = FALSE
 | 
							HideSolutionNode = FALSE
 | 
				
			||||||
	EndGlobalSection
 | 
						EndGlobalSection
 | 
				
			||||||
	GlobalSection(NestedProjects) = preSolution
 | 
						GlobalSection(NestedProjects) = preSolution
 | 
				
			||||||
		{B9438432-CD2B-4570-B96C-C1B47A1CF5BB} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
					 | 
				
			||||||
		{664BD509-4D4A-45D4-8B82-5E54094A95E6} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
					 | 
				
			||||||
		{A4616625-88A0-434B-8433-EC8693E1E53B} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
					 | 
				
			||||||
		{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
					 | 
				
			||||||
		{B2AE8588-0786-4556-9563-0D941A145C7C} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
							{B2AE8588-0786-4556-9563-0D941A145C7C} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
				
			||||||
		{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
							{09D6D582-C873-405A-8C33-9E1EFB0483DC} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
				
			||||||
		{3F224810-2034-45BB-BB53-DE5F6E83A07B} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
							{29AEF348-A405-4744-B797-24C30C0412DE} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
				
			||||||
		{085068A9-6739-423D-957F-DFA22564B574} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
							{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
				
			||||||
 | 
							{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
				
			||||||
 | 
							{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
				
			||||||
 | 
							{38FD6047-BEF1-4367-B96E-E7810F0284AD} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
				
			||||||
 | 
							{E4317767-4F21-4E11-B934-9E1E65547D16} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
 | 
				
			||||||
	EndGlobalSection
 | 
						EndGlobalSection
 | 
				
			||||||
	GlobalSection(ExtensibilityGlobals) = postSolution
 | 
						GlobalSection(ExtensibilityGlobals) = postSolution
 | 
				
			||||||
		SolutionGuid = {23EF0531-5260-4441-876C-7569138BD7FA}
 | 
							SolutionGuid = {23EF0531-5260-4441-876C-7569138BD7FA}
 | 
				
			||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
using Connected.Collections.Queues;
 | 
					using Connected.Collections.Queues;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Collections;
 | 
					namespace Connected.Common.Collections;
 | 
				
			||||||
internal sealed class MessageJob : DispatcherJob<IQueueMessage>
 | 
					internal sealed class MessageJob : DispatcherJob<IQueueMessage>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public MessageJob(IContextProvider provider)
 | 
						public MessageJob(IContextProvider provider)
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Entities.Caching;
 | 
					using Connected.Entities.Caching;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Collections;
 | 
					namespace Connected.Common.Collections;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal interface IQueueCache : IEntityCacheClient<QueueMessage, long>
 | 
					internal interface IQueueCache : IEntityCacheClient<QueueMessage, long>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -3,7 +3,7 @@ using Connected.Hosting.Workers;
 | 
				
			|||||||
using Connected.Middleware;
 | 
					using Connected.Middleware;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Collections;
 | 
					namespace Connected.Common.Collections;
 | 
				
			||||||
internal sealed class QueueClientService : ScheduledWorker
 | 
					internal sealed class QueueClientService : ScheduledWorker
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public QueueClientService(IContextProvider provider)
 | 
						public QueueClientService(IContextProvider provider)
 | 
				
			||||||
@ -4,7 +4,7 @@ using Connected.Data;
 | 
				
			|||||||
using Connected.Entities.Annotations;
 | 
					using Connected.Entities.Annotations;
 | 
				
			||||||
using Connected.Entities.Concurrency;
 | 
					using Connected.Entities.Concurrency;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Collections;
 | 
					namespace Connected.Common.Collections;
 | 
				
			||||||
/// <inheritdoc cref="IQueueMessage"/>
 | 
					/// <inheritdoc cref="IQueueMessage"/>
 | 
				
			||||||
[Table(Schema = SchemaAttribute.SysSchema)]
 | 
					[Table(Schema = SchemaAttribute.SysSchema)]
 | 
				
			||||||
internal sealed record QueueMessage : ConcurrentEntity<long>, IQueueMessage
 | 
					internal sealed record QueueMessage : ConcurrentEntity<long>, IQueueMessage
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using Connected.Collections.Concurrent;
 | 
					using Connected.Collections.Concurrent;
 | 
				
			||||||
using Connected.Collections.Queues;
 | 
					using Connected.Collections.Queues;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Collections;
 | 
					namespace Connected.Common.Collections;
 | 
				
			||||||
internal sealed class QueueMessageDispatcher : Dispatcher<IQueueMessage, MessageJob>
 | 
					internal sealed class QueueMessageDispatcher : Dispatcher<IQueueMessage, MessageJob>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public QueueMessageDispatcher() : base(128)
 | 
						public QueueMessageDispatcher() : base(128)
 | 
				
			||||||
@ -4,7 +4,7 @@ using Connected.Entities;
 | 
				
			|||||||
using Connected.Interop;
 | 
					using Connected.Interop;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Collections;
 | 
					namespace Connected.Common.Collections;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal sealed class QueueOps
 | 
					internal sealed class QueueOps
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -61,10 +61,10 @@ internal sealed class QueueOps
 | 
				
			|||||||
			var targets = new List<QueueMessage>();
 | 
								var targets = new List<QueueMessage>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			var items = await (from dc in Cache
 | 
								var items = await (from dc in Cache
 | 
				
			||||||
									 where dc.NextVisible <= DateTime.UtcNow
 | 
												   where dc.NextVisible <= DateTime.UtcNow
 | 
				
			||||||
									 && dc.Arguments.Options.Expire > DateTime.UtcNow
 | 
												   && dc.Arguments.Options.Expire > DateTime.UtcNow
 | 
				
			||||||
									 && Arguments.Queues.Any(f => string.Equals(f, dc.Queue, StringComparison.OrdinalIgnoreCase))
 | 
												   && Arguments.Queues.Any(f => string.Equals(f, dc.Queue, StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
									 select dc).AsEntities();
 | 
												   select dc).AsEntities();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (!items.Any())
 | 
								if (!items.Any())
 | 
				
			||||||
				return ImmutableList<QueueMessage>.Empty;
 | 
									return ImmutableList<QueueMessage>.Empty;
 | 
				
			||||||
@ -4,9 +4,9 @@ using Connected.Collections.Queues;
 | 
				
			|||||||
using Connected.Net;
 | 
					using Connected.Net;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
using Ops = Common.Collections.QueueOps;
 | 
					using Ops = Connected.Common.Collections.QueueOps;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Collections;
 | 
					namespace Connected.Common.Collections;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal sealed class QueueService : DistributedService, IQueueService
 | 
					internal sealed class QueueService : DistributedService, IQueueService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace Common;
 | 
					namespace Connected.Common;
 | 
				
			||||||
public static class CommonSchemas
 | 
					public static class CommonSchemas
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public const string DocumentSchema = "dcm";
 | 
						public const string DocumentSchema = "dcm";
 | 
				
			||||||
							
								
								
									
										37
									
								
								Connected.Common/CommonStartup.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								Connected.Common/CommonStartup.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					using Connected.Annotations;
 | 
				
			||||||
 | 
					using Connected.Common.Documents;
 | 
				
			||||||
 | 
					using Connected.Common.Globalization;
 | 
				
			||||||
 | 
					using Connected.Common.Security.Identity;
 | 
				
			||||||
 | 
					using Connected.Globalization;
 | 
				
			||||||
 | 
					using Connected.Net.Endpoints;
 | 
				
			||||||
 | 
					using Connected.Net.Server;
 | 
				
			||||||
 | 
					using Connected.Security.Identity;
 | 
				
			||||||
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
 | 
					using Microsoft.Extensions.DependencyInjection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[assembly: MicroService(MicroServiceType.Service)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Connected.Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					internal class CommonStartup : Startup
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						protected override void OnConfigureServices(IServiceCollection services)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							services.AddScoped(typeof(IGlobalizationService), typeof(GlobalizationService));
 | 
				
			||||||
 | 
							services.AddScoped(typeof(IIdentityService), typeof(IdentityService));
 | 
				
			||||||
 | 
							services.AddTransient(typeof(IDocumentLocker<,>), typeof(DocumentLocker<,>));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						protected override async Task OnInitialize(Dictionary<string, string> args)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if (Services is null || Services.GetService<IContextProvider>() is not IContextProvider provider)
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							using var ctx = provider.Create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (ctx.GetService<IEndpointService>() is not IEndpointService endpoints || ctx.GetService<IEndpointServer>() is not IEndpointServer server)
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							await server.Initialize(await endpoints.Query(), ctx.CancellationToken);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -9,12 +9,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
 | 
					    <ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
 | 
				
			||||||
    <ProjectReference Include="..\..\Framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
 | 
					    <ProjectReference Include="..\..\connected.framework.serviceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
 | 
				
			||||||
    <ProjectReference Include="..\..\Framework\Connected.Globalization\Connected.Globalization.csproj" />
 | 
					    <ProjectReference Include="..\..\connected.framework\Connected.Globalization\Connected.Globalization.csproj" />
 | 
				
			||||||
    <ProjectReference Include="..\..\Framework\Connected.Net\Connected.Net.csproj" />
 | 
					    <ProjectReference Include="..\..\connected.framework\Connected.Net\Connected.Net.csproj" />
 | 
				
			||||||
    <ProjectReference Include="..\..\Framework\Connected.Services\Connected.Services.csproj" />
 | 
					    <ProjectReference Include="..\..\connected.framework\Connected.Services\Connected.Services.csproj" />
 | 
				
			||||||
    <ProjectReference Include="..\..\Framework\Connected.Validation\Connected.Validation.csproj" />
 | 
					    <ProjectReference Include="..\..\connected.framework\Connected.Validation\Connected.Validation.csproj" />
 | 
				
			||||||
    <ProjectReference Include="..\Common.Model\Common.Model.csproj" />
 | 
					    <ProjectReference Include="..\Connected.Common.Model\Connected.Common.Model.csproj" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Data;
 | 
					using Connected.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common;
 | 
					namespace Connected.Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public static class RecordStatusLocalizer
 | 
					public static class RecordStatusLocalizer
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
 | 
				
			|||||||
using Connected.ServiceModel.Annotations;
 | 
					using Connected.ServiceModel.Annotations;
 | 
				
			||||||
using Connected.ServiceModel.Data;
 | 
					using Connected.ServiceModel.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Distributed;
 | 
					namespace Connected.Common.Distributed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Table(Schema = CommonSchemas.CommonSchema)]
 | 
					[Table(Schema = CommonSchemas.CommonSchema)]
 | 
				
			||||||
internal sealed record DistributedLock : TableEntity<Guid, string>, IDistributedLock
 | 
					internal sealed record DistributedLock : TableEntity<Guid, string>, IDistributedLock
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using System.ComponentModel.DataAnnotations;
 | 
				
			||||||
using System.ComponentModel.DataAnnotations;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Distributed;
 | 
					namespace Connected.Common.Distributed;
 | 
				
			||||||
public sealed class DistributedLockArgs : Dto
 | 
					public sealed class DistributedLockArgs : Dto
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	[Required, MaxLength(128)]
 | 
						[Required, MaxLength(128)]
 | 
				
			||||||
@ -4,7 +4,7 @@ using Connected.Entities.Storage;
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Distributed;
 | 
					namespace Connected.Common.Distributed;
 | 
				
			||||||
internal sealed class DistributedLockOps
 | 
					internal sealed class DistributedLockOps
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public class Lock : ServiceFunction<DistributedLockArgs, Guid>
 | 
						public class Lock : ServiceFunction<DistributedLockArgs, Guid>
 | 
				
			||||||
@ -5,7 +5,7 @@ using Connected.Entities;
 | 
				
			|||||||
using Connected.Entities.Storage;
 | 
					using Connected.Entities.Storage;
 | 
				
			||||||
using Connected.Middleware;
 | 
					using Connected.Middleware;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Distributed;
 | 
					namespace Connected.Common.Distributed;
 | 
				
			||||||
internal sealed class DistributedLockProtector : MiddlewareComponent, IEntityProtector<DistributedLock>
 | 
					internal sealed class DistributedLockProtector : MiddlewareComponent, IEntityProtector<DistributedLock>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public DistributedLockProtector(IStorageProvider storage, ICacheContext cache)
 | 
						public DistributedLockProtector(IStorageProvider storage, ICacheContext cache)
 | 
				
			||||||
@ -52,9 +52,9 @@ internal sealed class DistributedLockProtector : MiddlewareComponent, IEntityPro
 | 
				
			|||||||
			 * must check that anyway
 | 
								 * must check that anyway
 | 
				
			||||||
			 */
 | 
								 */
 | 
				
			||||||
			var entry = await (from dc in Storage.Open<DistributedLock>()
 | 
								var entry = await (from dc in Storage.Open<DistributedLock>()
 | 
				
			||||||
									 where string.Equals(dc.Entity, args.Entity.Entity, StringComparison.OrdinalIgnoreCase)
 | 
												   where string.Equals(dc.Entity, args.Entity.Entity, StringComparison.OrdinalIgnoreCase)
 | 
				
			||||||
									 && string.Equals(dc.EntityId, args.Entity.EntityId, StringComparison.OrdinalIgnoreCase)
 | 
												   && string.Equals(dc.EntityId, args.Entity.EntityId, StringComparison.OrdinalIgnoreCase)
 | 
				
			||||||
									 select dc).AsEntity();
 | 
												   select dc).AsEntity();
 | 
				
			||||||
			/*
 | 
								/*
 | 
				
			||||||
			 * It exists, we must perform additional checks.
 | 
								 * It exists, we must perform additional checks.
 | 
				
			||||||
			 */
 | 
								 */
 | 
				
			||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
using Ops = Common.Distributed.DistributedLockOps;
 | 
					using Ops = Connected.Common.Distributed.DistributedLockOps;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Distributed;
 | 
					namespace Connected.Common.Distributed;
 | 
				
			||||||
internal sealed class DistributedLockService : DistributedService, IDistributedLockService
 | 
					internal sealed class DistributedLockService : DistributedService, IDistributedLockService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public DistributedLockService(IContext context) : base(context)
 | 
						public DistributedLockService(IContext context) : base(context)
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Data;
 | 
					using Connected.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Distributed;
 | 
					namespace Connected.Common.Distributed;
 | 
				
			||||||
public interface IDistributedLock : IPrimaryKey<Guid>
 | 
					public interface IDistributedLock : IPrimaryKey<Guid>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	string Entity { get; init; }
 | 
						string Entity { get; init; }
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using Connected.Annotations;
 | 
					using Connected.Annotations;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Distributed;
 | 
					namespace Connected.Common.Distributed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Service]
 | 
					[Service]
 | 
				
			||||||
public interface IDistributedLockService
 | 
					public interface IDistributedLockService
 | 
				
			||||||
@ -3,7 +3,7 @@ using Connected.Annotations;
 | 
				
			|||||||
using Connected.Entities.Annotations;
 | 
					using Connected.Entities.Annotations;
 | 
				
			||||||
using Connected.Entities.Consistency;
 | 
					using Connected.Entities.Consistency;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Documents;
 | 
					namespace Connected.Common.Documents;
 | 
				
			||||||
/// <summary>
 | 
					/// <summary>
 | 
				
			||||||
/// Default implementation of the <see cref="IDocument{TPrimaryKey}"/> interface.
 | 
					/// Default implementation of the <see cref="IDocument{TPrimaryKey}"/> interface.
 | 
				
			||||||
/// </summary>
 | 
					/// </summary>
 | 
				
			||||||
@ -1,7 +1,6 @@
 | 
				
			|||||||
using Connected;
 | 
					using Connected.Notifications.Events;
 | 
				
			||||||
using Connected.Notifications.Events;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Documents;
 | 
					namespace Connected.Common.Documents;
 | 
				
			||||||
public abstract class DocumentListener<TArgs, TDocument, TPrimaryKey> : EventListener<TArgs>
 | 
					public abstract class DocumentListener<TArgs, TDocument, TPrimaryKey> : EventListener<TArgs>
 | 
				
			||||||
	where TArgs : IDto
 | 
						where TArgs : IDto
 | 
				
			||||||
	where TDocument : IDocument<TPrimaryKey>
 | 
						where TDocument : IDocument<TPrimaryKey>
 | 
				
			||||||
@ -1,10 +1,9 @@
 | 
				
			|||||||
using Common.Distributed;
 | 
					using Connected.Common.Distributed;
 | 
				
			||||||
using Connected;
 | 
					 | 
				
			||||||
using Connected.Interop;
 | 
					using Connected.Interop;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Threading;
 | 
					using Connected.Threading;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Documents;
 | 
					namespace Connected.Common.Documents;
 | 
				
			||||||
internal sealed class DocumentLocker<TDocument, TPrimaryKey> : IDocumentLocker<TDocument, TPrimaryKey>
 | 
					internal sealed class DocumentLocker<TDocument, TPrimaryKey> : IDocumentLocker<TDocument, TPrimaryKey>
 | 
				
			||||||
	where TDocument : IDocument<TPrimaryKey>
 | 
						where TDocument : IDocument<TPrimaryKey>
 | 
				
			||||||
	where TPrimaryKey : notnull
 | 
						where TPrimaryKey : notnull
 | 
				
			||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Documents;
 | 
					namespace Connected.Common.Documents;
 | 
				
			||||||
public abstract class DocumentService<TDocumentPrimaryKey, TItemPrimaryKey> : EntityService<TDocumentPrimaryKey>, IDocumentService<TDocumentPrimaryKey, TItemPrimaryKey>
 | 
					public abstract class DocumentService<TDocumentPrimaryKey, TItemPrimaryKey> : EntityService<TDocumentPrimaryKey>, IDocumentService<TDocumentPrimaryKey, TItemPrimaryKey>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	protected DocumentService(IContext context) : base(context)
 | 
						protected DocumentService(IContext context) : base(context)
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace Common.Documents;
 | 
					namespace Connected.Common.Documents;
 | 
				
			||||||
public interface IDocumentLocker<TDocument, TPrimaryKey> : IDisposable
 | 
					public interface IDocumentLocker<TDocument, TPrimaryKey> : IDisposable
 | 
				
			||||||
	where TDocument : IDocument<TPrimaryKey>
 | 
						where TDocument : IDocument<TPrimaryKey>
 | 
				
			||||||
	where TPrimaryKey : notnull
 | 
						where TPrimaryKey : notnull
 | 
				
			||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
using Connected.Security.Identity;
 | 
					using Connected.Security.Identity;
 | 
				
			||||||
using Connected.Validation;
 | 
					using Connected.Validation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Documents;
 | 
					namespace Connected.Common.Documents;
 | 
				
			||||||
public abstract class InsertDocumentValidator<TDocumentArgs> : MiddlewareComponent, IValidator<TDocumentArgs>
 | 
					public abstract class InsertDocumentValidator<TDocumentArgs> : MiddlewareComponent, IValidator<TDocumentArgs>
 | 
				
			||||||
	where TDocumentArgs : InsertDocumentArgs
 | 
						where TDocumentArgs : InsertDocumentArgs
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1,12 +1,11 @@
 | 
				
			|||||||
using System.Globalization;
 | 
					using System.Globalization;
 | 
				
			||||||
using Connected;
 | 
					 | 
				
			||||||
using Connected.Data;
 | 
					using Connected.Data;
 | 
				
			||||||
using Connected.Globalization;
 | 
					using Connected.Globalization;
 | 
				
			||||||
using Connected.Globalization.Languages;
 | 
					using Connected.Globalization.Languages;
 | 
				
			||||||
using Connected.Security.Identity;
 | 
					using Connected.Security.Identity;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Globalization;
 | 
					namespace Connected.Common.Globalization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal class GlobalizationService : IGlobalizationService
 | 
					internal class GlobalizationService : IGlobalizationService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
 | 
				
			|||||||
using Connected.Entities.Consistency;
 | 
					using Connected.Entities.Consistency;
 | 
				
			||||||
using Connected.Globalization.Languages;
 | 
					using Connected.Globalization.Languages;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Globalization;
 | 
					namespace Connected.Common.Globalization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// <summary>
 | 
					/// <summary>
 | 
				
			||||||
/// The implementation of the <see cref="ILanguage"/> entity.
 | 
					/// The implementation of the <see cref="ILanguage"/> entity.
 | 
				
			||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
using Connected.Entities.Caching;
 | 
					using Connected.Entities.Caching;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Globalization;
 | 
					namespace Connected.Common.Globalization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal interface ILanguageCache : IEntityCacheClient<Language, int>
 | 
					internal interface ILanguageCache : IEntityCacheClient<Language, int>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
using System.Collections.Immutable;
 | 
					using System.Collections.Immutable;
 | 
				
			||||||
using Connected;
 | 
					 | 
				
			||||||
using Connected.Entities;
 | 
					using Connected.Entities;
 | 
				
			||||||
using Connected.Entities.Storage;
 | 
					using Connected.Entities.Storage;
 | 
				
			||||||
using Connected.Globalization.Languages;
 | 
					using Connected.Globalization.Languages;
 | 
				
			||||||
@ -7,7 +6,7 @@ using Connected.Notifications.Events;
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Globalization;
 | 
					namespace Connected.Common.Globalization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// <summary>
 | 
					/// <summary>
 | 
				
			||||||
/// Queries all <see cref="ILanguage"/> records except those marked as deleting.
 | 
					/// Queries all <see cref="ILanguage"/> records except those marked as deleting.
 | 
				
			||||||
@ -1,11 +1,11 @@
 | 
				
			|||||||
using System.Collections.Immutable;
 | 
					using System.Collections.Immutable;
 | 
				
			||||||
using Common.Security;
 | 
					using Connected.Common.Security;
 | 
				
			||||||
using Connected.Globalization.Languages;
 | 
					using Connected.Globalization.Languages;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
using Connected.Services.Annotations;
 | 
					using Connected.Services.Annotations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Globalization;
 | 
					namespace Connected.Common.Globalization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// <summary>
 | 
					/// <summary>
 | 
				
			||||||
/// The implementation of the <see cref="ILanguageService"/> service.
 | 
					/// The implementation of the <see cref="ILanguageService"/> service.
 | 
				
			||||||
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
 | 
				
			|||||||
using Connected.Entities.Consistency;
 | 
					using Connected.Entities.Consistency;
 | 
				
			||||||
using Connected.Net.Endpoints;
 | 
					using Connected.Net.Endpoints;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Net;
 | 
					namespace Connected.Common.Net;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Table(Schema = SchemaAttribute.DefaultSchema)]
 | 
					[Table(Schema = SchemaAttribute.DefaultSchema)]
 | 
				
			||||||
internal record Endpoint : ConsistentEntity<int>, IEndpoint
 | 
					internal record Endpoint : ConsistentEntity<int>, IEndpoint
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Entities.Caching;
 | 
					using Connected.Entities.Caching;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Net;
 | 
					namespace Connected.Common.Net;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal interface IEndpointCache : IEntityCacheClient<Endpoint, int> { }
 | 
					internal interface IEndpointCache : IEntityCacheClient<Endpoint, int> { }
 | 
				
			||||||
internal class EndpointCache : EntityCacheClient<Endpoint, int>, IEndpointCache
 | 
					internal class EndpointCache : EntityCacheClient<Endpoint, int>, IEndpointCache
 | 
				
			||||||
@ -1,11 +1,10 @@
 | 
				
			|||||||
using System.Collections.Immutable;
 | 
					using System.Collections.Immutable;
 | 
				
			||||||
using Connected;
 | 
					 | 
				
			||||||
using Connected.Entities;
 | 
					using Connected.Entities;
 | 
				
			||||||
using Connected.Net.Endpoints;
 | 
					using Connected.Net.Endpoints;
 | 
				
			||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Net;
 | 
					namespace Connected.Common.Net;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// <summary>
 | 
					/// <summary>
 | 
				
			||||||
/// Endpoints are singleton but their service is scoped so we must use Isolated database connections for all methods.
 | 
					/// Endpoints are singleton but their service is scoped so we must use Isolated database connections for all methods.
 | 
				
			||||||
@ -5,7 +5,7 @@ using Connected.ServiceModel;
 | 
				
			|||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
using Connected.Services.Annotations;
 | 
					using Connected.Services.Annotations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Net;
 | 
					namespace Connected.Common.Net;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal sealed class EndpointService : EntityService<int>, IEndpointService
 | 
					internal sealed class EndpointService : EntityService<int>, IEndpointService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
// </auto-generated>
 | 
					// </auto-generated>
 | 
				
			||||||
//------------------------------------------------------------------------------
 | 
					//------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common {
 | 
					namespace Connected.Common {
 | 
				
			||||||
    using System;
 | 
					    using System;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@ -39,7 +39,7 @@ namespace Common {
 | 
				
			|||||||
        internal static global::System.Resources.ResourceManager ResourceManager {
 | 
					        internal static global::System.Resources.ResourceManager ResourceManager {
 | 
				
			||||||
            get {
 | 
					            get {
 | 
				
			||||||
                if (object.ReferenceEquals(resourceMan, null)) {
 | 
					                if (object.ReferenceEquals(resourceMan, null)) {
 | 
				
			||||||
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Common.SR", typeof(SR).Assembly);
 | 
					                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Connected.Common.SR", typeof(SR).Assembly);
 | 
				
			||||||
                    resourceMan = temp;
 | 
					                    resourceMan = temp;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                return resourceMan;
 | 
					                return resourceMan;
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace Common.Security;
 | 
					namespace Connected.Common.Security;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public static class CommonClaims
 | 
					public static class CommonClaims
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using Connected.Security.Identity;
 | 
					using Connected.Security.Identity;
 | 
				
			||||||
using Microsoft.AspNetCore.Http;
 | 
					using Microsoft.AspNetCore.Http;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Identity;
 | 
					namespace Connected.Common.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal class IdentityService : IIdentityService
 | 
					internal class IdentityService : IIdentityService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
 | 
				
			|||||||
using Connected.Entities.Consistency;
 | 
					using Connected.Entities.Consistency;
 | 
				
			||||||
using Connected.Security.Identity;
 | 
					using Connected.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Identity;
 | 
					namespace Connected.Common.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Table(Schema = SchemaAttribute.SysSchema)]
 | 
					[Table(Schema = SchemaAttribute.SysSchema)]
 | 
				
			||||||
internal record Role : ConsistentEntity<int>, IRole
 | 
					internal record Role : ConsistentEntity<int>, IRole
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using Connected.Entities.Caching;
 | 
					using Connected.Entities.Caching;
 | 
				
			||||||
using Connected.Security.Identity;
 | 
					using Connected.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Identity;
 | 
					namespace Connected.Common.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal interface IRoleCache : IEntityCacheClient<Role, int> { }
 | 
					internal interface IRoleCache : IEntityCacheClient<Role, int> { }
 | 
				
			||||||
internal sealed class RoleCache : EntityCacheClient<Role, int>, IRoleCache
 | 
					internal sealed class RoleCache : EntityCacheClient<Role, int>, IRoleCache
 | 
				
			||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
using System.Collections.Immutable;
 | 
					using System.Collections.Immutable;
 | 
				
			||||||
using Connected;
 | 
					 | 
				
			||||||
using Connected.Entities;
 | 
					using Connected.Entities;
 | 
				
			||||||
using Connected.Entities.Storage;
 | 
					using Connected.Entities.Storage;
 | 
				
			||||||
using Connected.Notifications;
 | 
					using Connected.Notifications;
 | 
				
			||||||
@ -9,7 +8,7 @@ using Connected.ServiceModel;
 | 
				
			|||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
using Connected.Validation;
 | 
					using Connected.Validation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Identity;
 | 
					namespace Connected.Common.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal sealed class QueryRoles : ServiceFunction<IDto, ImmutableList<IRole>>
 | 
					internal sealed class QueryRoles : ServiceFunction<IDto, ImmutableList<IRole>>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -22,7 +21,7 @@ internal sealed class QueryRoles : ServiceFunction<IDto, ImmutableList<IRole>>
 | 
				
			|||||||
	protected override async Task<ImmutableList<IRole>?> OnInvoke()
 | 
						protected override async Task<ImmutableList<IRole>?> OnInvoke()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return await (from dc in Cache
 | 
							return await (from dc in Cache
 | 
				
			||||||
						  select dc).AsEntities<IRole>();
 | 
										  select dc).AsEntities<IRole>();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -37,8 +36,8 @@ internal sealed class SelectRole : ServiceFunction<PrimaryKeyArgs<int>, IRole?>
 | 
				
			|||||||
	protected override async Task<IRole?> OnInvoke()
 | 
						protected override async Task<IRole?> OnInvoke()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return await (from dc in Cache
 | 
							return await (from dc in Cache
 | 
				
			||||||
						  where dc.Id == Arguments.Id
 | 
										  where dc.Id == Arguments.Id
 | 
				
			||||||
						  select dc).AsEntity();
 | 
										  select dc).AsEntity();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -53,8 +52,8 @@ internal sealed class SelectRoleByName : ServiceFunction<NameArgs, IRole?>
 | 
				
			|||||||
	protected override async Task<IRole?> OnInvoke()
 | 
						protected override async Task<IRole?> OnInvoke()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return await (from dc in Cache
 | 
							return await (from dc in Cache
 | 
				
			||||||
						  where string.Equals(dc.Name, Arguments.Name, StringComparison.OrdinalIgnoreCase)
 | 
										  where string.Equals(dc.Name, Arguments.Name, StringComparison.OrdinalIgnoreCase)
 | 
				
			||||||
						  select dc).AsEntity();
 | 
										  select dc).AsEntity();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -72,8 +71,8 @@ internal sealed class LookupRoles : ServiceFunction<PrimaryKeyListArgs<int>, Imm
 | 
				
			|||||||
			return default;
 | 
								return default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return await (from dc in Cache
 | 
							return await (from dc in Cache
 | 
				
			||||||
						  where Arguments.IdList.Any(f => f == dc.Id)
 | 
										  where Arguments.IdList.Any(f => f == dc.Id)
 | 
				
			||||||
						  select dc).AsEntities<IRole>();
 | 
										  select dc).AsEntities<IRole>();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -5,7 +5,7 @@ using Connected.ServiceModel;
 | 
				
			|||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
using Connected.Services.Annotations;
 | 
					using Connected.Services.Annotations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Identity;
 | 
					namespace Connected.Common.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal class RoleService : EntityService<int>, IRoleService
 | 
					internal class RoleService : EntityService<int>, IRoleService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
 | 
				
			|||||||
using Connected.Entities.Consistency;
 | 
					using Connected.Entities.Consistency;
 | 
				
			||||||
using Connected.Security.Identity;
 | 
					using Connected.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Identity;
 | 
					namespace Connected.Common.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Table(Schema = SchemaAttribute.SysSchema)]
 | 
					[Table(Schema = SchemaAttribute.SysSchema)]
 | 
				
			||||||
internal record class User : ConsistentEntity<int>, IUser, IUserPassport
 | 
					internal record class User : ConsistentEntity<int>, IUser, IUserPassport
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Entities.Caching;
 | 
					using Connected.Entities.Caching;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Identity;
 | 
					namespace Connected.Common.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal interface IUserCache : IEntityCacheClient<User, int> { }
 | 
					internal interface IUserCache : IEntityCacheClient<User, int> { }
 | 
				
			||||||
internal sealed class UserCache : EntityCacheClient<User, int>, IUserCache
 | 
					internal sealed class UserCache : EntityCacheClient<User, int>, IUserCache
 | 
				
			||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
using System.Collections.Immutable;
 | 
					using System.Collections.Immutable;
 | 
				
			||||||
using Connected;
 | 
					 | 
				
			||||||
using Connected.Entities;
 | 
					using Connected.Entities;
 | 
				
			||||||
using Connected.Entities.Storage;
 | 
					using Connected.Entities.Storage;
 | 
				
			||||||
using Connected.Notifications.Events;
 | 
					using Connected.Notifications.Events;
 | 
				
			||||||
@ -8,7 +7,7 @@ using Connected.Security.Identity;
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Identity;
 | 
					namespace Connected.Common.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal sealed class QueryUsers : ServiceFunction<IDto, ImmutableList<IUser>?>
 | 
					internal sealed class QueryUsers : ServiceFunction<IDto, ImmutableList<IUser>?>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -35,8 +34,8 @@ internal sealed class SelectUser : ServiceFunction<PrimaryKeyArgs<int>, IUser?>
 | 
				
			|||||||
	protected override async Task<IUser?> OnInvoke()
 | 
						protected override async Task<IUser?> OnInvoke()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return await (from dc in Cache
 | 
							return await (from dc in Cache
 | 
				
			||||||
						  where dc.Id == Arguments.Id
 | 
										  where dc.Id == Arguments.Id
 | 
				
			||||||
						  select dc).AsEntity();
 | 
										  select dc).AsEntity();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/// <summary>
 | 
					/// <summary>
 | 
				
			||||||
@ -102,8 +101,8 @@ internal sealed class LookupUsers : ServiceFunction<PrimaryKeyListArgs<int>, Imm
 | 
				
			|||||||
			return default;
 | 
								return default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return await (from dc in Cache
 | 
							return await (from dc in Cache
 | 
				
			||||||
						  where Arguments.IdList.Contains(dc.Id)
 | 
										  where Arguments.IdList.Contains(dc.Id)
 | 
				
			||||||
						  select dc).AsEntities<IUser>();
 | 
										  select dc).AsEntities<IUser>();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -5,7 +5,7 @@ using Connected.ServiceModel;
 | 
				
			|||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
using Connected.Services.Annotations;
 | 
					using Connected.Services.Annotations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Identity;
 | 
					namespace Connected.Common.Security.Identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal class UserService : EntityService<int>, IUserService
 | 
					internal class UserService : EntityService<int>, IUserService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -3,7 +3,7 @@ using Connected.Entities;
 | 
				
			|||||||
using Connected.Entities.Annotations;
 | 
					using Connected.Entities.Annotations;
 | 
				
			||||||
using Connected.Security.Membership;
 | 
					using Connected.Security.Membership;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Membership;
 | 
					namespace Connected.Common.Security.Membership;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Table(Schema = SchemaAttribute.SysSchema)]
 | 
					[Table(Schema = SchemaAttribute.SysSchema)]
 | 
				
			||||||
internal sealed record Membership : Entity<int>, IMembership
 | 
					internal sealed record Membership : Entity<int>, IMembership
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Entities.Caching;
 | 
					using Connected.Entities.Caching;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Membership;
 | 
					namespace Connected.Common.Security.Membership;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal interface IMembershipCache : IEntityCacheClient<Membership, int> { }
 | 
					internal interface IMembershipCache : IEntityCacheClient<Membership, int> { }
 | 
				
			||||||
internal class MembershipCache : EntityCacheClient<Membership, int>, IMembershipCache
 | 
					internal class MembershipCache : EntityCacheClient<Membership, int>, IMembershipCache
 | 
				
			||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
using System.Collections.Immutable;
 | 
					using System.Collections.Immutable;
 | 
				
			||||||
using Connected;
 | 
					 | 
				
			||||||
using Connected.Entities;
 | 
					using Connected.Entities;
 | 
				
			||||||
using Connected.Entities.Storage;
 | 
					using Connected.Entities.Storage;
 | 
				
			||||||
using Connected.Notifications.Events;
 | 
					using Connected.Notifications.Events;
 | 
				
			||||||
@ -7,7 +6,7 @@ using Connected.Security.Membership;
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Membership;
 | 
					namespace Connected.Common.Security.Membership;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal sealed class DeleteMembership : ServiceAction<PrimaryKeyArgs<int>>
 | 
					internal sealed class DeleteMembership : ServiceAction<PrimaryKeyArgs<int>>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -47,7 +46,7 @@ internal sealed class QueryMembership : ServiceFunction<IDto, ImmutableList<IMem
 | 
				
			|||||||
	protected override async Task<ImmutableList<IMembership>?> OnInvoke()
 | 
						protected override async Task<ImmutableList<IMembership>?> OnInvoke()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return await (from dc in MembershipCache
 | 
							return await (from dc in MembershipCache
 | 
				
			||||||
						  select dc).AsEntities<IMembership>();
 | 
										  select dc).AsEntities<IMembership>();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -62,9 +61,9 @@ internal sealed class SearchMembership : ServiceFunction<MembershipQueryArgs, Im
 | 
				
			|||||||
	protected override async Task<ImmutableList<IMembership>?> OnInvoke()
 | 
						protected override async Task<ImmutableList<IMembership>?> OnInvoke()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return await (from dc in MembershipCache
 | 
							return await (from dc in MembershipCache
 | 
				
			||||||
						  where (Arguments.User == 0 || (Arguments.User == dc.User))
 | 
										  where (Arguments.User == 0 || (Arguments.User == dc.User))
 | 
				
			||||||
						  && (Arguments.Role == 0 || (Arguments.Role == dc.Role))
 | 
										  && (Arguments.Role == 0 || (Arguments.Role == dc.Role))
 | 
				
			||||||
						  select dc).AsEntities<IMembership>();
 | 
										  select dc).AsEntities<IMembership>();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -79,8 +78,8 @@ internal sealed class SelectMembership : ServiceFunction<PrimaryKeyArgs<int>, IM
 | 
				
			|||||||
	protected override async Task<IMembership?> OnInvoke()
 | 
						protected override async Task<IMembership?> OnInvoke()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return await (from dc in MembershipCache
 | 
							return await (from dc in MembershipCache
 | 
				
			||||||
						  where dc.Id == Arguments.Id
 | 
										  where dc.Id == Arguments.Id
 | 
				
			||||||
						  select dc).AsEntity();
 | 
										  select dc).AsEntity();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -5,7 +5,7 @@ using Connected.ServiceModel;
 | 
				
			|||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
using Connected.Services.Annotations;
 | 
					using Connected.Services.Annotations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Membership;
 | 
					namespace Connected.Common.Security.Membership;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal class MembershipService : EntityService<int>, IMembershipService
 | 
					internal class MembershipService : EntityService<int>, IMembershipService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
 | 
				
			|||||||
using Connected.Entities.Consistency;
 | 
					using Connected.Entities.Consistency;
 | 
				
			||||||
using Connected.Security.Permissions;
 | 
					using Connected.Security.Permissions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Permissions;
 | 
					namespace Connected.Common.Security.Permissions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Table(Schema = SchemaAttribute.SysSchema)]
 | 
					[Table(Schema = SchemaAttribute.SysSchema)]
 | 
				
			||||||
internal sealed record Permission : ConsistentEntity<int>, IPermission
 | 
					internal sealed record Permission : ConsistentEntity<int>, IPermission
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using Connected.Entities.Caching;
 | 
					using Connected.Entities.Caching;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Permissions;
 | 
					namespace Connected.Common.Security.Permissions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal interface IPermissionCache : IEntityCacheClient<Permission, int> { }
 | 
					internal interface IPermissionCache : IEntityCacheClient<Permission, int> { }
 | 
				
			||||||
internal class PermissionCache : EntityCacheClient<Permission, int>, IPermissionCache
 | 
					internal class PermissionCache : EntityCacheClient<Permission, int>, IPermissionCache
 | 
				
			||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
using System.Collections.Immutable;
 | 
					using System.Collections.Immutable;
 | 
				
			||||||
using Connected;
 | 
					 | 
				
			||||||
using Connected.Entities;
 | 
					using Connected.Entities;
 | 
				
			||||||
using Connected.Entities.Storage;
 | 
					using Connected.Entities.Storage;
 | 
				
			||||||
using Connected.Notifications.Events;
 | 
					using Connected.Notifications.Events;
 | 
				
			||||||
@ -7,7 +6,7 @@ using Connected.Security.Permissions;
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Permissions;
 | 
					namespace Connected.Common.Security.Permissions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal sealed class DeletePermission : ServiceAction<PrimaryKeyArgs<int>>
 | 
					internal sealed class DeletePermission : ServiceAction<PrimaryKeyArgs<int>>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -47,7 +46,7 @@ internal sealed class QueryPermissions : ServiceFunction<IDto, ImmutableList<IPe
 | 
				
			|||||||
	protected override async Task<ImmutableList<IPermission>?> OnInvoke()
 | 
						protected override async Task<ImmutableList<IPermission>?> OnInvoke()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return await (from dc in PermissionCache
 | 
							return await (from dc in PermissionCache
 | 
				
			||||||
						  select dc).AsEntities<IPermission>();
 | 
										  select dc).AsEntities<IPermission>();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -62,10 +61,10 @@ internal sealed class SearchPermissions : ServiceFunction<PermissionSearchArgs,
 | 
				
			|||||||
	protected override async Task<ImmutableList<IPermission>?> OnInvoke()
 | 
						protected override async Task<ImmutableList<IPermission>?> OnInvoke()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return await (from dc in PermissionCache
 | 
							return await (from dc in PermissionCache
 | 
				
			||||||
						  where (string.IsNullOrEmpty(Arguments.Entity) || string.Equals(Arguments.Entity, dc.Entity, StringComparison.OrdinalIgnoreCase))
 | 
										  where (string.IsNullOrEmpty(Arguments.Entity) || string.Equals(Arguments.Entity, dc.Entity, StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
						  && (string.IsNullOrEmpty(Arguments.Claim) || string.Equals(Arguments.Claim, dc.Claim, StringComparison.OrdinalIgnoreCase))
 | 
										  && (string.IsNullOrEmpty(Arguments.Claim) || string.Equals(Arguments.Claim, dc.Claim, StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
						  && (string.IsNullOrEmpty(Arguments.PrimaryKey) || string.Equals(Arguments.PrimaryKey, dc.PrimaryKey, StringComparison.OrdinalIgnoreCase))
 | 
										  && (string.IsNullOrEmpty(Arguments.PrimaryKey) || string.Equals(Arguments.PrimaryKey, dc.PrimaryKey, StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
						  select dc).AsEntities<IPermission>();
 | 
										  select dc).AsEntities<IPermission>();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -80,8 +79,8 @@ internal sealed class SelectPermission : ServiceFunction<PrimaryKeyArgs<int>, IP
 | 
				
			|||||||
	protected override async Task<IPermission?> OnInvoke()
 | 
						protected override async Task<IPermission?> OnInvoke()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return await (from dc in PermissionCache
 | 
							return await (from dc in PermissionCache
 | 
				
			||||||
						  where dc.Id == Arguments.Id
 | 
										  where dc.Id == Arguments.Id
 | 
				
			||||||
						  select dc).AsEntity();
 | 
										  select dc).AsEntity();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -5,7 +5,7 @@ using Connected.ServiceModel;
 | 
				
			|||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
using Connected.Services.Annotations;
 | 
					using Connected.Services.Annotations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Security.Permissions;
 | 
					namespace Connected.Common.Security.Permissions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
internal class PermissionService : EntityService<int>, IPermissionService
 | 
					internal class PermissionService : EntityService<int>, IPermissionService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -3,7 +3,7 @@ using Connected.Configuration.Settings;
 | 
				
			|||||||
using Connected.ServiceModel;
 | 
					using Connected.ServiceModel;
 | 
				
			||||||
using Connected.Services;
 | 
					using Connected.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Common.Settings;
 | 
					namespace Connected.Common.Settings;
 | 
				
			||||||
internal class SettingsService : EntityService<int>, ISettingsService
 | 
					internal class SettingsService : EntityService<int>, ISettingsService
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public SettingsService(IContext context) : base(context)
 | 
						public SettingsService(IContext context) : base(context)
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user