1
-
2
1
using System ;
3
2
using System . Linq ;
4
3
using System . Security . Claims ;
7
6
using Microsoft . EntityFrameworkCore ;
8
7
using Pims . Core . Extensions ;
9
8
using Pims . Dal . Entities ;
10
- using Pims . Core . Security ;
11
- using Entity = Pims . Dal . Entities ;
12
9
13
10
namespace Pims . Dal . Helpers . Extensions
14
11
{
@@ -25,18 +22,18 @@ public static class PropertyViewExtensions
25
22
/// <param name="user"></param>
26
23
/// <param name="filter"></param>
27
24
/// <returns></returns>
28
- public static IQueryable < Entity . PimsPropertyVw > GeneratePropertyQuery ( this PimsContext context , ClaimsPrincipal user , Entity . Models . PropertyFilter filter )
25
+ public static IQueryable < PimsPropertyVw > GeneratePropertyQuery ( this PimsContext context , ClaimsPrincipal user , Entities . Models . PropertyFilter filter )
29
26
{
30
- filter . ThrowIfNull ( nameof ( filter ) ) ;
31
- filter . ThrowIfNull ( nameof ( user ) ) ;
27
+ ArgumentNullException . ThrowIfNull ( filter , nameof ( filter ) ) ;
28
+ ArgumentNullException . ThrowIfNull ( user , nameof ( user ) ) ;
32
29
33
30
var query = context . PimsPropertyVws
34
31
. AsNoTracking ( ) ;
35
32
36
33
var predicate = GenerateCommonPropertyQuery ( context , user , filter ) ;
37
34
query = query . Where ( predicate ) ;
38
35
39
- if ( filter . Sort ? . Any ( ) == true )
36
+ if ( filter . Sort is not null && filter . Sort . Length > 0 )
40
37
{
41
38
query = query . OrderByProperty ( true , filter . Sort ) ;
42
39
}
@@ -54,22 +51,24 @@ public static class PropertyViewExtensions
54
51
/// <param name="user"></param>
55
52
/// <param name="filter"></param>
56
53
/// <returns></returns>
57
- private static ExpressionStarter < PimsPropertyVw > GenerateCommonPropertyQuery ( PimsContext context , ClaimsPrincipal user , Entity . Models . PropertyFilter filter )
54
+ private static ExpressionStarter < PimsPropertyVw > GenerateCommonPropertyQuery ( PimsContext context , ClaimsPrincipal user , Entities . Models . PropertyFilter filter )
58
55
{
59
- filter . ThrowIfNull ( nameof ( filter ) ) ;
60
- filter . ThrowIfNull ( nameof ( user ) ) ;
61
-
62
- // Check if user has the ability to view sensitive properties.
63
- var viewSensitive = user . HasPermission ( Permissions . SensitiveView ) ;
56
+ ArgumentNullException . ThrowIfNull ( filter , nameof ( filter ) ) ;
57
+ ArgumentNullException . ThrowIfNull ( user , nameof ( user ) ) ;
64
58
65
59
var predicateBuilder = PredicateBuilder . New < PimsPropertyVw > ( p => true ) ;
66
60
67
- if ( ! string . IsNullOrWhiteSpace ( filter . PinOrPid ) )
61
+ if ( ! string . IsNullOrWhiteSpace ( filter . Pid ) )
68
62
{
69
63
// note - 2 part search required. all matches found by removing leading 0's, then matches filtered in subsequent step. This is because EF core does not support an lpad method.
70
64
Regex nonInteger = new Regex ( "[^\\ d]" ) ;
71
- var formattedPidPin = Convert . ToInt32 ( nonInteger . Replace ( filter . PinOrPid , string . Empty ) ) . ToString ( ) ;
72
- predicateBuilder = predicateBuilder . And ( p => EF . Functions . Like ( p . Pid . ToString ( ) , $ "%{ formattedPidPin } %") || EF . Functions . Like ( p . Pin . ToString ( ) , $ "%{ formattedPidPin } %") ) ;
65
+ var formattedPid = Convert . ToInt32 ( nonInteger . Replace ( filter . Pid , string . Empty ) ) . ToString ( ) ;
66
+ predicateBuilder = predicateBuilder . And ( p => EF . Functions . Like ( p . Pid . ToString ( ) , $ "%{ formattedPid } %") ) ;
67
+ }
68
+
69
+ if ( ! string . IsNullOrWhiteSpace ( filter . Pin ) )
70
+ {
71
+ predicateBuilder = predicateBuilder . And ( p => EF . Functions . Like ( p . Pin . ToString ( ) , $ "%{ filter . Pin } %") ) ;
73
72
}
74
73
if ( ! string . IsNullOrWhiteSpace ( filter . Address ) )
75
74
{
0 commit comments