コード例 #1
0
        public Sungero.Core.StateView GetStateView()
        {
            var stateView = StateView.Create();

            stateView.AddDefaultLabel(Docflow.OfficialDocuments.Resources.StateViewDefault);

            var minutes            = Minuteses.GetAll(d => Equals(d.Meeting, _obj));
            var documentsGroupGuid = Docflow.PublicConstants.Module.TaskMainGroup.ActionItemExecutionTask;
            var actionItems        = RecordManagement.ActionItemExecutionTasks.GetAll()
                                     .Where(t => t.AttachmentDetails.Any(g => g.GroupId == documentsGroupGuid && minutes.Any(m => m.Id == g.AttachmentId)))
                                     .OrderBy(task => task.Created);

            var statusesCache = new Dictionary <Enumeration?, string>();

            foreach (var actionItem in actionItems)
            {
                if (stateView.Blocks.Any(b => b.HasEntity(actionItem)))
                {
                    continue;
                }

                var stateViewModel = Sungero.RecordManagement.Structures.ActionItemExecutionTask.StateViewModel.Create();
                stateViewModel.StatusesCache = statusesCache;
                var blocks = RecordManagement.PublicFunctions.ActionItemExecutionTask.GetActionItemStateView(actionItem, actionItem, stateViewModel, null, string.Empty,
                                                                                                             null, null, true, false).Blocks;
                statusesCache = stateViewModel.StatusesCache;

                // Убираем первый блок с текстовой информацией по поручению.
                foreach (var block in blocks.Skip(1))
                {
                    stateView.AddBlock(block);
                }
            }
            return(stateView);
        }
コード例 #2
0
        public IQueryable <RecordManagement.IActionItemExecutionTask> GetMeetingActionItemExecutionTasks()
        {
            var minuteses = Minuteses.GetAll(m => m.Meeting != null);
            var groupId   = Docflow.PublicConstants.Module.TaskMainGroup.ActionItemExecutionTask;

            return(RecordManagement.ActionItemExecutionTasks.GetAll(a => a.AttachmentDetails.Any(d => d.EntityTypeGuid == Minutes.ClassTypeGuid &&
                                                                                                 d.GroupId == groupId && minuteses.Any(m => Equals(m.Id, d.AttachmentId)))));
        }
コード例 #3
0
        public List <RecordManagement.IActionItemExecutionTask> GetActionItemsByMeeting()
        {
            var minutes            = Minuteses.GetAll(d => Equals(d.Meeting, _obj));
            var documentsGroupGuid = Docflow.PublicConstants.Module.TaskMainGroup.ActionItemExecutionTask;

            return(RecordManagement.ActionItemExecutionTasks.GetAll()
                   .Where(t => t.AttachmentDetails.Any(g => g.GroupId == documentsGroupGuid && minutes.Any(m => m.Id == g.AttachmentId)))
                   .ToList());
        }
コード例 #4
0
        public List <IMinutes> GetOrCreateMinutes()
        {
            var minutesList = Minuteses.GetAll(d => Equals(d.Meeting, _obj)).ToList();

            if (!minutesList.Any())
            {
                var minutes = Minuteses.Create();
                minutes.Meeting = _obj;
                minutesList.Add(minutes);
            }
            return(minutesList);
        }
コード例 #5
0
        public override IQueryable <T> Filtering(IQueryable <T> query, Sungero.Domain.FilteringEventArgs e)
        {
            if (_filter == null)
            {
                return(query);
            }

            // Фильтр по состоянию.
            if (_filter.Planing || _filter.CreateDocument || _filter.ExecuteActionItems || _filter.Concluded)
            {
                var minutes = Minuteses.GetAll(d => d.Meeting != null);

                query = query.Where(x => (_filter.Planing && x.DateTime >= Calendar.Now && x.Status == Meeting.Status.Active) ||
                                    (_filter.CreateDocument && !minutes.Any(m => Equals(m.Meeting, x)) && x.DateTime < Calendar.Now) ||
                                    (_filter.ExecuteActionItems && minutes.Any(m => Equals(m.Meeting, x) && m.ExecutionState == Docflow.OfficialDocument.ExecutionState.OnExecution)) ||
                                    (_filter.Concluded && x.DateTime < Calendar.Now));
            }

            // Фильтр по участникам
            var currentEmployee = Company.Employees.Current;

            if (_filter.My && currentEmployee != null)
            {
                var employeeIds = Company.Employees.OwnRecipientIds;
                query = query.Where(x => Equals(x.President, currentEmployee) ||
                                    Equals(x.Secretary, currentEmployee) ||
                                    x.Members.Any(m => employeeIds.Contains(m.Member.Id)));
            }

            if (_filter.ShowEmployee)
            {
                var employee = _filter.Employee;
                if (employee != null)
                {
                    var employeeIds = Company.Employees.OwnRecipientIdsFor(employee);
                    query = query.Where(x => Equals(x.President, employee) ||
                                        Equals(x.Secretary, employee) ||
                                        x.Members.Any(m => employeeIds.Contains(m.Member.Id)));
                }
            }

            // Фильтр по дате проведения.
            DateTime?periodBegin = null;
            DateTime?periodEnd   = null;

            if (_filter.CurrentWeek)
            {
                periodBegin = Calendar.UserToday.BeginningOfWeek();
                periodEnd   = Calendar.UserToday.EndOfWeek();
            }

            if (_filter.CurrentMounth)
            {
                periodBegin = Calendar.UserToday.BeginningOfMonth();
                periodEnd   = Calendar.UserToday.EndOfMonth();
            }

            if (_filter.ShowPeriod)
            {
                if (_filter.DateRangeFrom.HasValue)
                {
                    periodBegin = _filter.DateRangeFrom.Value;
                }
                if (_filter.DateRangeTo.HasValue)
                {
                    periodEnd = _filter.DateRangeTo.Value;
                }
            }

            if (periodBegin != null)
            {
                periodBegin = Docflow.PublicFunctions.Module.Remote.GetTenantDateTimeFromUserDay(periodBegin.Value);
                query       = query.Where(x => x.DateTime >= periodBegin);
            }
            if (periodEnd != null)
            {
                periodEnd = periodEnd.Value.EndOfDay().FromUserTime();
                query     = query.Where(x => x.DateTime <= periodEnd);
            }

            return(query);
        }
コード例 #6
0
 public static IMinutes CreateMinutes()
 {
     return(Minuteses.Create());
 }