Exemplo n.º 1
0
        public static void FillUsersFromAdminTaskCollection(DealWithoutStageTaskInstanceDefinitionAdmin tiid, ref DealWithoutStageTaskInstanceDefinition task)
        {
            foreach (BaseUserTaskReference butr in tiid.BusinessAdministratorsAdmin)
            {
                UserTaskReference userbutr = butr as UserTaskReference;
                if (userbutr != null)
                {
                    AppUser AppUserbutr = userbutr.AppUser;
                    if (AppUserbutr != null & task.BusinessAdministrators.IndexOf(AppUserbutr) == -1)
                    {
                        AppUserbutr.BaseUserTaskBusinessAdministrators.Add(task);
                    }
                }
            }

            foreach (BaseUserTaskReference butr in tiid.ExcludedOwnersAdmin)
            {
                UserTaskReference userbutr = butr as UserTaskReference;
                if (userbutr != null)
                {
                    AppUser AppUserbutr = userbutr.AppUser;
                    if (AppUserbutr != null & task.ExcludedOwners.IndexOf(AppUserbutr) == -1)
                    {
                        AppUserbutr.BaseUserTaskExcludedOwners.Add(task);
                    }
                }
            }

            foreach (BaseUserTaskReference butr in tiid.NotificationRecipientsAdmin)
            {
                UserTaskReference userbutr = butr as UserTaskReference;
                if (userbutr != null)
                {
                    AppUser AppUserbutr = userbutr.AppUser;
                    if (AppUserbutr != null & task.NotificationRecipients.IndexOf(AppUserbutr) == -1)
                    {
                        AppUserbutr.BaseUserTaskNotificationRecipients.Add(task);
                    }
                }
            }

            foreach (BaseUserTaskReference butr in tiid.PossibleDelegatesAdmin)
            {
                UserTaskReference userbutr = butr as UserTaskReference;
                if (userbutr != null)
                {
                    AppUser AppUserbutr = userbutr.AppUser;
                    if (AppUserbutr != null & task.PossibleDelegates.IndexOf(AppUserbutr) == -1)
                    {
                        AppUserbutr.BaseUserTaskPossibleDelegates.Add(task);
                    }
                }
            }

            foreach (BaseUserTaskReference butr in tiid.PotentialOwnersAdmin)
            {
                UserTaskReference userbutr = butr as UserTaskReference;
                if (userbutr != null)
                {
                    AppUser AppUserbutr = userbutr.AppUser;
                    if (AppUserbutr != null & task.PotentialOwners.IndexOf(AppUserbutr) == -1)
                    {
                        AppUserbutr.BaseUserTaskPotentialOwners.Add(task);
                    }
                }
            }

            foreach (BaseUserTaskReference butr in tiid.TaskStakeholdersAdmin)
            {
                UserTaskReference userbutr = butr as UserTaskReference;
                if (userbutr != null)
                {
                    AppUser AppUserbutr = userbutr.AppUser;
                    if (AppUserbutr != null & task.TaskStakeholders.IndexOf(AppUserbutr) == -1)
                    {
                        AppUserbutr.BaseUserTaskTaskStakeholders.Add(task);
                    }
                }
            }

            // Роли и группы пока не обрабатываем

            //if (butr.GetType() == typeof(RoleTaskReference)) {
            //    RoleTaskReference rolebutr = (RoleTaskReference)butr;
            //    //AppUser AppUserbutr = rolebutr.AppUser;
            //    //if (ual.IndexOf(AppUserbutr) == -1) ual.Add(AppUserbutr);
            //}
            //if (butr.GetType() == typeof(GroupTaskReference)) {
            //    GroupTaskReference groupbutr = (GroupTaskReference)butr;
            //    //AppUser AppUserbutr = userbutr.AppUser;
            //    //if (ual.IndexOf(AppUserbutr) == -1) ual.Add(AppUserbutr);
            //}
        }
        void actionAdminCreateTask_Executed(object sender, ActionBaseEventArgs e)
        {
            // Загружаем новый Task

            DealWithoutStageTaskInstanceDefinitionAdmin currentObject = (DealWithoutStageTaskInstanceDefinitionAdmin)View.CurrentObject;

            currentObject.Save();
            currentObject.Session.FlushChanges();

            // Находим новую задачу (она должна быть одна для админской (singleton)) по ссылке в задаче на админскую
            XPCollection <BaseUserTask> tasks = new XPCollection <BaseUserTask>(currentObject.Session);

            if (!tasks.IsLoaded)
            {
                tasks.Load();
            }

            var ltasks = (from task in tasks where task.TaskAdminGuid.Equals(currentObject.Oid) select task);
            //if (((XPCollection<BaseUserTask>)ltasks).Count == 0) return;

            BaseUserTask but = null;

            // Выполнение пункта меню
            //string viewId = "BaseUserTask";
            //ChoiceActionItem item = FindNavigationItemByViewId(viewId);
            //if (item != null && item.Enabled.ResultValue) {
            //    Frame.GetController<ShowNavigationItemController>().ShowNavigationItemAction.DoExecute(item);
            //} else {
            //    throw new Exception(String.Format("Unable to open {0} at startup", viewId));
            //}
            //return;

            //ChoiceActionItem item = FindNavigationItemByViewId("TaskInvoiceInstanceDefinition_ListView");



            IEnumerator enumltasks = ltasks.GetEnumerator();

            while (enumltasks.MoveNext())
            {
                but = (BaseUserTask)enumltasks.Current;
                break;
            }
            if (but == null)
            {
                return;
            }


            //string detailViewId = "TaskInvoiceInstanceDefinition_DetailView";
            string       detailViewId = "BaseUserTask_DetailView";
            IObjectSpace objectSpace  = Frame.Application.CreateObjectSpace();
            //IObjectSpace objectSpace = View.ObjectSpace.CreateNestedObjectSpace();
            BaseUserTask objCurrent = objectSpace.GetObject <BaseUserTask>(but);

            //TaskInvoiceInstanceDefinitionAdmin objTaskInvoiceInstanceDefinitionAdmin = objectSpace.CreateObject<TaskInvoiceInstanceDefinitionAdmin>();
            DetailView dv = Frame.Application.CreateDetailView(objectSpace, detailViewId, true, objCurrent);

            //ListView dv = Frame.Application.CreateListView(objectSpace, typeof(TaskInvoiceInstanceDefinitionAdmin), true);
            dv.AllowEdit.SetItemValue("BaseUserTaskReadOnly", true);

            ShowViewParameters svp = new ShowViewParameters();

            svp.CreatedView = dv;
            //Specify various display settings.
            svp.TargetWindow         = TargetWindow.Current;
            svp.Context              = TemplateContext.View;
            svp.CreateAllControllers = true;
            // Here we show our detail view.
            Application.ShowViewStrategy.ShowView(svp, new ShowViewSource(Frame, null));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Перенос параметров в задачу.
        /// Данная процедура:
        /// 1. Извлекает пользователей из соотвесттвующих списков данного объекта администрирования
        /// 2. Извлекает пользователей из списков, задачнных через параметр типа TaskParameters
        /// 3. Сливает вместе соответствующие списки из пп 1 и 2
        /// 4. Переносит результат в пользвательскую задачу
        /// 5. Также переносит данные о приоритете и т.д.
        /// </summary>
        /// <param name="task"></param>
        private void SetTaskParameters(ref DealWithoutStageTaskInstanceDefinition task, DealWithoutStageTaskInstanceDefinitionAdmin adminTask, TaskParameters tp)
        {
            FunctionalTaskReference.ProcessElements(tp, ref task, this.Session);
            FunctionalTaskReference.FillUsersFromAdminTaskCollection(this, ref task);

            task.Priority = this.Priority;
            //task.CallBackObject = this.CallBackObject;
            task.TaskAdminGuid = this.Oid;
        }