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); }
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))))); }
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()); }
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); }
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); }
public static IMinutes CreateMinutes() { return(Minuteses.Create()); }