Skip to content

Commit 3097621

Browse files
authored
Merge pull request #17 from PandaTechAM/development
.net 9
2 parents 8892eed + 3070dc8 commit 3097621

19 files changed

+1451
-1173
lines changed

.editorconfig

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
###############################
2+
# PandaTech Editor Config #
3+
###############################
4+
5+
6+
################################
7+
# ReSharper Generated Settings #
8+
################################
9+
10+
[*]
11+
charset = utf-8-bom
12+
end_of_line = crlf
13+
trim_trailing_whitespace = false
14+
insert_final_newline = false
15+
indent_style = space
16+
indent_size = 4
17+
18+
# Microsoft .NET properties
19+
csharp_preferred_modifier_order = public, private, protected, internal, file, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async, required:suggestion
20+
csharp_style_prefer_utf8_string_literals = true:suggestion
21+
csharp_style_var_elsewhere = true:suggestion
22+
csharp_style_var_for_built_in_types = true:suggestion
23+
csharp_style_var_when_type_is_apparent = true:suggestion
24+
dotnet_naming_rule.unity_serialized_field_rule.import_to_resharper = True
25+
dotnet_naming_rule.unity_serialized_field_rule.resharper_description = Unity serialized field
26+
dotnet_naming_rule.unity_serialized_field_rule.resharper_guid = 5f0fdb63-c892-4d2c-9324-15c80b22a7ef
27+
dotnet_naming_rule.unity_serialized_field_rule.severity = warning
28+
dotnet_naming_rule.unity_serialized_field_rule.style = lower_camel_case_style
29+
dotnet_naming_rule.unity_serialized_field_rule.symbols = unity_serialized_field_symbols
30+
dotnet_naming_style.lower_camel_case_style.capitalization = camel_case
31+
dotnet_naming_symbols.unity_serialized_field_symbols.applicable_accessibilities = *
32+
dotnet_naming_symbols.unity_serialized_field_symbols.applicable_kinds =
33+
dotnet_naming_symbols.unity_serialized_field_symbols.resharper_applicable_kinds = unity_serialised_field
34+
dotnet_naming_symbols.unity_serialized_field_symbols.resharper_required_modifiers = instance
35+
dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:none
36+
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:none
37+
dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:none
38+
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
39+
dotnet_style_predefined_type_for_member_access = true:suggestion
40+
dotnet_style_qualification_for_event = false:suggestion
41+
dotnet_style_qualification_for_field = false:suggestion
42+
dotnet_style_qualification_for_method = false:suggestion
43+
dotnet_style_qualification_for_property = false:suggestion
44+
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
45+
46+
# ReSharper properties
47+
resharper_align_linq_query = true
48+
resharper_align_multiline_calls_chain = true
49+
resharper_apply_auto_detected_rules = false
50+
resharper_braces_for_for = required
51+
resharper_braces_for_foreach = required
52+
resharper_braces_for_ifelse = required
53+
resharper_braces_for_while = required
54+
resharper_cpp_insert_final_newline = true
55+
resharper_csharp_indent_size = 3
56+
resharper_csharp_max_enum_members_on_line = 0
57+
resharper_csharp_tab_width = 3
58+
resharper_csharp_wrap_arguments_style = chop_if_long
59+
resharper_csharp_wrap_parameters_style = chop_if_long
60+
resharper_formatter_off_tag = @formatter:off
61+
resharper_formatter_on_tag = @formatter:on
62+
resharper_formatter_tags_enabled = true
63+
resharper_keep_existing_declaration_parens_arrangement = false
64+
resharper_keep_existing_expr_member_arrangement = false
65+
resharper_keep_existing_initializer_arrangement = false
66+
resharper_keep_existing_switch_expression_arrangement = false
67+
resharper_max_array_initializer_elements_on_line = 0
68+
resharper_max_initializer_elements_on_line = 0
69+
resharper_place_accessorholder_attribute_on_same_line = false
70+
resharper_place_accessor_attribute_on_same_line = false
71+
resharper_place_field_attribute_on_same_line = false
72+
resharper_place_simple_anonymousmethod_on_single_line = false
73+
resharper_place_simple_embedded_statement_on_same_line = false
74+
resharper_place_simple_initializer_on_single_line = false
75+
resharper_place_simple_property_pattern_on_single_line = false
76+
resharper_use_indent_from_vs = false
77+
resharper_wrap_after_property_in_chained_method_calls = true
78+
resharper_wrap_array_initializer_style = chop_if_long
79+
resharper_wrap_chained_method_calls = chop_always
80+
resharper_wrap_linq_expressions = chop_always
81+
resharper_wrap_list_pattern = chop_if_long
82+
resharper_wrap_object_and_collection_initializer_style = chop_always
83+
resharper_wrap_property_pattern = chop_always
84+
85+
# ReSharper inspection severities
86+
resharper_arrange_redundant_parentheses_highlighting = hint
87+
resharper_arrange_this_qualifier_highlighting = hint
88+
resharper_arrange_type_member_modifiers_highlighting = hint
89+
resharper_arrange_type_modifiers_highlighting = hint
90+
resharper_built_in_type_reference_style_for_member_access_highlighting = hint
91+
resharper_built_in_type_reference_style_highlighting = hint
92+
resharper_enforce_foreach_statement_braces_highlighting = warning
93+
resharper_enforce_for_statement_braces_highlighting = warning
94+
resharper_enforce_if_statement_braces_highlighting = warning
95+
resharper_enforce_lock_statement_braces_highlighting = warning
96+
resharper_enforce_using_statement_braces_highlighting = warning
97+
resharper_enforce_while_statement_braces_highlighting = warning
98+
resharper_mvc_action_not_resolved_highlighting = warning
99+
resharper_mvc_area_not_resolved_highlighting = warning
100+
resharper_mvc_controller_not_resolved_highlighting = warning
101+
resharper_mvc_masterpage_not_resolved_highlighting = warning
102+
resharper_mvc_partial_view_not_resolved_highlighting = warning
103+
resharper_mvc_template_not_resolved_highlighting = warning
104+
resharper_mvc_view_component_not_resolved_highlighting = warning
105+
resharper_mvc_view_component_view_not_resolved_highlighting = warning
106+
resharper_mvc_view_not_resolved_highlighting = warning
107+
resharper_razor_assembly_not_resolved_highlighting = warning
108+
resharper_redundant_base_qualifier_highlighting = warning
109+
resharper_web_config_module_not_resolved_highlighting = warning
110+
resharper_web_config_type_not_resolved_highlighting = warning
111+
resharper_web_config_wrong_module_highlighting = warning
112+
113+
[{*.har,*.jsb2,*.jsb3,*.json,*.jsonc,*.postman_collection,*.postman_collection.json,*.postman_environment,*.postman_environment.json,.babelrc,.eslintrc,.prettierrc,.stylelintrc,.ws-context,bowerrc,jest.config}]
114+
indent_style = space
115+
indent_size = 2
116+
117+
[{*.yaml,*.yml}]
118+
indent_style = space
119+
indent_size = 2
120+
121+
[*.cs]
122+
indent_style = space
123+
indent_size = 3
124+
tab_width = 3
125+
126+
[*.{appxmanifest,asax,ascx,aspx,axaml,build,c,c++,c++m,cc,ccm,cginc,compute,cp,cpp,cppm,cshtml,cu,cuh,cxx,cxxm,dtd,fs,fsi,fsscript,fsx,fx,fxh,h,hh,hlsl,hlsli,hlslinc,hpp,hxx,inc,inl,ino,ipp,ixx,master,ml,mli,mpp,mq4,mq5,mqh,mxx,nuspec,paml,razor,resw,resx,shader,skin,tpp,usf,ush,uxml,vb,xaml,xamlx,xoml,xsd}]
127+
indent_style = space
128+
indent_size = 4
129+
tab_width = 4
130+
131+
#########################
132+
# Custom added settings #
133+
#########################
134+
[*.cs]
135+
dotnet_diagnostic.cs8600.severity = error #Converting null literal or possible null value to non-nullable type.
136+
dotnet_diagnostic.cs8601.severity = error #Possible null reference assignment.
137+
dotnet_diagnostic.cs8602.severity = error #possible dereference of a null reference
138+
dotnet_diagnostic.cs8603.severity = error #possible null reference return
139+
dotnet_diagnostic.cs8604.severity = error #possible null reference argument for parameter
140+
dotnet_diagnostic.cs8605.severity = error #Unboxing a possibly null value
141+
dotnet_diagnostic.cs8618.severity = error # Non-nullable field is uninitialized. Consider declaring as nullable.
142+
dotnet_diagnostic.cs8625.severity = error # Cannot convert null literal to non-nullable reference type.
143+
dotnet_diagnostic.cs8762.severity = error # Nullability of reference types in type doesn't match overridden member.
144+
dotnet_diagnostic.cs1717.severity = error #variable is assigned to itself
145+
dotnet_diagnostic.cs1718.severity = error #comparison made to same variable
146+
dotnet_diagnostic.cs0659.severity = error #overriding object.Equals but not overriding object.GetHashCode
147+
dotnet_diagnostic.cs0251.severity = error #Indexing an array with a negative index (array indices always start at zero)
148+
dotnet_diagnostic.s3363.severity = none #Never set DateTime as PrimaryKey. Ignored as we never do it but have warnings for cache entities.
149+
dotnet_diagnostic.ca2016.severity = error #Forwarding cancellation tokens
150+
csharp_style_namespace_declarations = file_scoped:error
151+
resharper_entity_framework_model_validation_unlimited_string_length_highlighting = none
152+
153+
154+
#########################
155+
# VS added settings #
156+
#########################
157+
158+
[*.cs]
159+
csharp_style_namespace_declarations = file_scoped:error
160+
csharp_indent_labels = one_less_than_current
161+
csharp_using_directive_placement = outside_namespace:silent
162+
csharp_prefer_simple_using_statement = true:suggestion
163+
csharp_prefer_braces = true:silent
164+
csharp_style_prefer_method_group_conversion = true:silent
165+
csharp_style_prefer_top_level_statements = true:silent
166+
csharp_style_prefer_primary_constructors = true:suggestion
167+
csharp_style_expression_bodied_methods = false:silent
168+
csharp_style_expression_bodied_constructors = false:silent
169+
csharp_style_expression_bodied_operators = false:silent
170+
csharp_style_expression_bodied_properties = true:silent
171+
csharp_style_expression_bodied_indexers = true:silent
172+
csharp_style_expression_bodied_accessors = true:silent
173+
csharp_style_expression_bodied_lambdas = true:silent
174+
csharp_style_expression_bodied_local_functions = false:silent
175+
176+
[{*.yaml,*.yml}]
177+
dotnet_style_namespace_match_folder = true:suggestion
178+
dotnet_style_operator_placement_when_wrapping = beginning_of_line
179+
tab_width = 3
180+
dotnet_style_coalesce_expression = true:suggestion
181+
dotnet_style_null_propagation = true:suggestion
182+
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
183+
dotnet_style_prefer_auto_properties = true:silent
184+
dotnet_style_object_initializer = true:suggestion
185+
dotnet_style_collection_initializer = true:suggestion
186+
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
187+
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
188+
189+
[*.csv]
190+
indent_style = tab
191+
tab_width = 4

.github/workflows/main.yml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,15 @@ on:
1313
jobs:
1414
deploy:
1515
runs-on: ubuntu-latest
16-
strategy:
17-
matrix:
18-
dotnet-version: [ '8.x.x' ]
16+
1917
steps:
2018
- name: Checkout
21-
uses: actions/checkout@v3
19+
uses: actions/checkout@v4
2220

2321
- name: Setup .NET Core
24-
uses: actions/setup-dotnet@v3
22+
uses: actions/setup-dotnet@v4
2523
with:
26-
dotnet-version: ${{ matrix.dotnet-version }}
24+
global-json-file: global.json
2725

2826
- name: Build
2927
run: dotnet build ${{ env.PROJECT_PATH }}

CommissionCalculator.sln

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
1111
.github\workflows\main.yml = .github\workflows\main.yml
1212
.gitignore = .gitignore
1313
Readme.md = Readme.md
14+
global.json = global.json
15+
.editorconfig = .editorconfig
1416
EndProjectSection
1517
EndProject
1618
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{90D4D87F-69E1-4B48-89A5-F0971F20533E}"

Readme.md

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,41 @@
11
- [1. Pandatech.CommissionCalculator](#1-pandatechcommissioncalculator)
2-
- [1.1. Overview](#11-overview)
3-
- [1.2. Features](#12-features)
4-
- [1.3. Installation](#13-installation)
5-
- [1.4. Usage](#14-usage)
6-
- [1.4.1. Define Commission Rule](#141-define-commission-rule)
7-
- [1.4.2. Compute Commission](#142-compute-commission)
8-
- [1.4.3. Validation](#143-validation)
9-
- [1.4.4. Validate DateTime Overlap](#144-validate-datetime-overlap)
10-
- [1.5. CommissionRangeConfig Properties](#15-commissionrangeconfig-properties)
11-
- [1.6. Conventions](#16-conventions)
12-
- [1.7. Contributing](#17-contributing)
13-
- [1.8. License](#18-license)
2+
- [1.1. Overview](#11-overview)
3+
- [1.2. Features](#12-features)
4+
- [1.3. Installation](#13-installation)
5+
- [1.4. Usage](#14-usage)
6+
- [1.4.1. Define Commission Rule](#141-define-commission-rule)
7+
- [1.4.2. Compute Commission](#142-compute-commission)
8+
- [1.4.3. Validation](#143-validation)
9+
- [1.4.4. Validate DateTime Overlap](#144-validate-datetime-overlap)
10+
- [1.5. CommissionRangeConfig Properties](#15-commissionrangeconfig-properties)
11+
- [1.6. Conventions](#16-conventions)
12+
- [1.7. Contributing](#17-contributing)
13+
- [1.8. License](#18-license)
1414

1515
# 1. Pandatech.CommissionCalculator
1616

1717
## 1.1. Overview
1818

19-
The updated Pandatech.CommissionCalculator is a comprehensive .NET library designed to streamline commission calculations. With enhanced features supporting both proportional and absolute commission types, the library now offers more granular control over commission calculations through detailed range configurations. The introduction of CalculationType in commission rules allows users to specify the nature of the commission calculation explicitly. Moreover, the library maintains its utility for date range overlap checks with improved efficiency, ensuring commission period validations remain precise and reliable.
19+
The updated Pandatech.CommissionCalculator is a comprehensive .NET library designed to streamline commission
20+
calculations. With enhanced features supporting both proportional and absolute commission types, the library now offers
21+
more granular control over commission calculations through detailed range configurations. The introduction of
22+
CalculationType in commission rules allows users to specify the nature of the commission calculation explicitly.
23+
Moreover, the library maintains its utility for date range overlap checks with improved efficiency, ensuring commission
24+
period validations remain precise and reliable.
2025

2126
## 1.2. Features
2227

23-
- **Proportional and Absolute Commissions** - Enhanced support for both proportional and absolute commission calculations, providing extensive flexibility in defining commission structures.
24-
- **Detailed Commission Range Configurations** - Define commission calculations with precision using `CommissionRangeConfigs`, allowing for intricate rule definitions.
28+
- **Proportional and Absolute Commissions** - Enhanced support for both proportional and absolute commission
29+
calculations, providing extensive flexibility in defining commission structures.
30+
- **Detailed Commission Range Configurations** - Define commission calculations with precision using
31+
`CommissionRangeConfigs`, allowing for intricate rule definitions.
2532
- **Rule-Based Tiering** - Define custom rules for various range tiers.
26-
- **Auto-Validation** - Improved validation mechanisms ensure that commission rules are logically consistent and well-structured before computation.
27-
- **Strict Rule Coverage** - Guarantees complete domain coverage from 0 to +∞, with validation checks to ensure no gaps or overlaps in commission ranges.
28-
- **Configurable** - The library is highly configurable, allowing you to define your own commission ranges and commission types.
33+
- **Auto-Validation** - Improved validation mechanisms ensure that commission rules are logically consistent and
34+
well-structured before computation.
35+
- **Strict Rule Coverage** - Guarantees complete domain coverage from 0 to +∞, with validation checks to ensure no gaps
36+
or overlaps in commission ranges.
37+
- **Configurable** - The library is highly configurable, allowing you to define your own commission ranges and
38+
commission types.
2939
- **Robust Testing** - Achieves 99% code coverage, ensuring reliability.
3040
- **Optimized Performance** - Delivers high performance, capable of over 1.5 million calculations per second.
3141

global.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"sdk": {
3+
"version": "9.0.100",
4+
"rollForward": "latestMinor"
5+
}
6+
}

0 commit comments

Comments
 (0)