ModuleHandlers.cs
2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using caseFileStages = DirRX.LongTermArchive.CaseFile.LTAStageDirRX;
namespace DirRX.Container.Server
{
partial class FolderCaseFilesInWorkFolderHandlers
{
public virtual IQueryable<DirRX.LongTermArchive.ICaseFile> FolderCaseFilesInWorkDataQuery(IQueryable<DirRX.LongTermArchive.ICaseFile> query)
{
// Применить фильтры панели.
var filter = _filter;
// Фильтр по подразделению.
if (filter.Department != null)
query = query.Where(f => f.Department == filter.Department);
// Фильтр по признаку "Переходящее".
if (filter.Transient)
query = query.Where(f => f.LongTerm.HasValue && f.LongTerm.Value);
// Фильтр по ДА-ответственному.
if (filter.Responsible != null)
query = query.Where(f => f.LTAResponsibleDirRX == filter.Responsible);
// Фильтр по ДА-состоянию.
var stages = new List<Sungero.Core.Enumeration>();
if (filter.InWorkDirRX)
stages.Add(caseFileStages.InWork);
if (filter.CompletedDirRX)
stages.Add(caseFileStages.CompletedDirRX);
if (filter.InventoriedDirRX)
stages.Add(caseFileStages.InventoriedDirRX);
// Если флажки не выставлены, отображать все статусы.
if (!stages.Any())
{
stages.Add(caseFileStages.InWork);
stages.Add(caseFileStages.CompletedDirRX);
stages.Add(caseFileStages.InventoriedDirRX);
}
// Фильтр по текущему году.
var currentYear = Calendar.UserToday.Year;
if (filter.CurrentYear)
query = query.Where(f => f.StartDate.Value.Year <= currentYear && (!f.EndDate.HasValue || f.EndDate.Value.Year >= currentYear));
// Фильтр по предыдущему году.
var previousYear = currentYear - 1;
if (filter.PreviousYear)
query = query.Where(f => f.StartDate.Value.Year <= previousYear && (!f.EndDate.HasValue || f.EndDate.Value.Year >= previousYear));
// Фильтр по диапазону лет.
if (filter.ManualPeriod)
{
if (filter.DateRangeTo != null)
query = query.Where(f => f.StartDate.Value.Year <= filter.DateRangeTo.Value.Year);
if (filter.DateRangeFrom != null)
query = query.Where(f => !f.EndDate.HasValue || f.EndDate.Value.Year >= filter.DateRangeFrom.Value.Year);
}
query = query.Where(x => stages.Contains(x.LTAStageDirRX.Value));
return query;
}
}
partial class ContainerHandlers
{
}
}