Beispiel #1
0
        public TaskStatusTest(TestParameters parameters)
        {
            _testAction = parameters.TestAction;
            _childCreationOptions = parameters.ChildTaskCreationOptions;
            _createChildTask = parameters.CreateChildTask;
            _isPromise = parameters.IsPromise;

            _finalTaskStatus = parameters.FinalTaskStatus;
            _finalChildTaskStatus = parameters.FinalChildTaskStatus;
            _finalPromiseStatus = parameters.FinalPromiseStatus;

            _mre = new ManualResetEventSlim(false);
            _taskCts = new CancellationTokenSource();
            _childTaskToken = new CancellationToken(false);
        }
Beispiel #2
0
        public ReportTemplateWrapper UpdateReportTemplate(int reportid, string name, string period, int periodItem, int hour, bool autoGenerated, ReportType reportType,
                                                          int tag, int project, TaskStatus?status, Guid departament, Guid userId, ReportTimeInterval reportTimeInterval,
                                                          ApiDateTime fromDate, ApiDateTime toDate, int viewType, bool noResponsible)
        {
            ProjectSecurity.DemandAuthentication();

            var filter = new TaskFilter
            {
                TagId         = tag,
                DepartmentId  = departament,
                UserId        = userId,
                TimeInterval  = reportTimeInterval,
                FromDate      = fromDate,
                ToDate        = toDate,
                ViewType      = viewType,
                NoResponsible = noResponsible
            };

            if (project != 0)
            {
                filter.ProjectIds.Add(project);
            }

            if (status != null)
            {
                filter.TaskStatuses.Add((TaskStatus)status);
            }


            var template = EngineFactory.GetReportEngine().GetTemplate(reportid);

            template.Filter = filter;

            SaveOrUpdateTemplate(template, name, period, periodItem, hour, autoGenerated);
            return(new ReportTemplateWrapper(template));
        }
Beispiel #3
0
 internal void DisposeStop(Activity activity, string lockToken, TaskStatus?status)
 {
     if (activity != null)
     {
     }
 }
 internal void ScheduleStop(Activity activity, Message message, DateTimeOffset scheduleEnqueueTimeUtc, TaskStatus?status, long sequenceNumber)
 {
     if (activity != null)
     {
         DiagnosticListener.StopActivity(activity, new
         {
             Message = message,
             ScheduleEnqueueTimeUtc = scheduleEnqueueTimeUtc,
             Entity         = this.entityPath,
             Endpoint       = this.endpoint,
             SequenceNumber = sequenceNumber,
             Status         = status ?? TaskStatus.Faulted
         });
     }
 }
Beispiel #5
0
 internal void AddRuleStop(Activity activity, RuleDescription description, TaskStatus?status)
 {
     if (activity != null)
     {
     }
 }
Beispiel #6
0
 public virtual int GetTaskCount(int projectId, TaskStatus?taskStatus)
 {
     return(GetTaskCount(new List <int> {
         projectId
     }, taskStatus)[0]);
 }
Beispiel #7
0
        public List <TaskStatus> GetAvailableStatusesNewTask(TaskStatus?current, BrigadeType?executorBrigadeType = 0, int permissions = -1)
        {
            var list = new List <TaskStatus>();

            //тут начинается ебоклюйство с правами.
            // бригады локомативщиков 6
            var needPermissionBits = 64;
            var res = permissions & needPermissionBits;

            if (res == needPermissionBits)
            {
                list.Add(TaskStatus.Log);
            }
            //бригады депо 7
            //needPermissionBits = 128;
            //res = permissions & needPermissionBits;
            //if (res == needPermissionBits)
            //{
            //    list.Add(TaskStatus.InWork);
            //}
            // приемщиков 8
            needPermissionBits = 256;
            res = permissions & needPermissionBits;
            if (res == needPermissionBits)
            {
                list.Add(TaskStatus.Log);
            }


            //Админиблядьстрация 18
            needPermissionBits = 262144;
            res = permissions & needPermissionBits;
            if (res == needPermissionBits)
            {
                list.Add(TaskStatus.New);
                list.Add(TaskStatus.Log);
                list.Add(TaskStatus.InWork);
                list.Add(TaskStatus.Confirmation);
                list.Add(TaskStatus.Remake);
                list.Add(TaskStatus.Closed);
            }

            //{
            //    if (executorBrigadeType == BrigadeType.Depo)
            //        list.Add(TaskStatus.InWork);
            //    if (executorBrigadeType == BrigadeType.Receiver)
            //    {
            //        list.Add(TaskStatus.InWork);
            //        list.Add(TaskStatus.ToCheck);
            //    }
            //    if (executorBrigadeType == BrigadeType.Locomotiv)
            //    {
            //        list.Add(TaskStatus.InWork);
            //        list.Add(TaskStatus.Confirmation);
            //    }
            //}

            //для админа доступны все статусы из текущей рабочей схемы
            if (permissions == -1)
            {
                list.Add(TaskStatus.New);
                list.Add(TaskStatus.Log);
                list.Add(TaskStatus.InWork);
                list.Add(TaskStatus.Confirmation);
                list.Add(TaskStatus.Remake);
                list.Add(TaskStatus.Closed);
            }

            return(list.Distinct().ToList());
        }
        public TaskWrapperFull UpdateProjectTask(
            int taskid,
            string description,
            ApiDateTime deadline,
            ApiDateTime startDate,
            TaskPriority?priority,
            string title,
            int milestoneid,
            IEnumerable <Guid> responsibles,
            int?projectID,
            bool notify,
            TaskStatus?status,
            int?progress)
        {
            var taskEngine = EngineFactory.TaskEngine;
            var task       = taskEngine.GetByID(taskid).NotFoundIfNull();

            if (string.IsNullOrEmpty(title))
            {
                throw new ArgumentException(@"title can't be empty", "title");
            }

            if (!EngineFactory.MilestoneEngine.IsExists(milestoneid) && milestoneid > 0)
            {
                throw new ItemNotFoundException("Milestone not found");
            }

            task.Responsibles = new List <Guid>(responsibles.Distinct());

            task.Deadline    = Update.IfNotEquals(task.Deadline, deadline);
            task.Description = Update.IfNotEquals(task.Description, description);

            if (priority.HasValue)
            {
                task.Priority = Update.IfNotEquals(task.Priority, priority.Value);
            }

            task.Title     = Update.IfNotEmptyAndNotEquals(task.Title, title);
            task.Milestone = Update.IfNotEquals(task.Milestone, milestoneid);
            task.StartDate = Update.IfNotEquals(task.StartDate, startDate);

            if (projectID.HasValue)
            {
                var project = EngineFactory.ProjectEngine.GetByID((int)projectID).NotFoundIfNull();
                task.Project = project;
            }

            if (progress.HasValue)
            {
                task.Progress = progress.Value;
            }

            taskEngine.SaveOrUpdate(task, null, notify);

            if (status.HasValue)
            {
                taskEngine.ChangeStatus(task, status.Value);
            }

            MessageService.Send(Request, MessageAction.TaskUpdated, MessageTarget.Create(task.ID), task.Project.Title, task.Title);

            return(GetTask(taskid));
        }
Beispiel #9
0
 internal void SendStop(Activity activity, IList <Message> messageList, TaskStatus?status)
 {
 }
 internal void GetRulesStop(Activity activity, IEnumerable <RuleDescription> rules, TaskStatus?status)
 {
     if (activity != null)
     {
         DiagnosticListener.StopActivity(activity, new
         {
             Rules    = rules,
             Entity   = this.entityPath,
             Endpoint = this.endpoint,
             Status   = status ?? TaskStatus.Faulted
         });
     }
 }
Beispiel #11
0
 internal void SetSessionStateStop(Activity activity, byte[] state, string sessionId, TaskStatus?status)
 {
     if (activity != null)
     {
     }
 }
Beispiel #12
0
 internal void RenewSessionLockStop(Activity activity, string sessionId, TaskStatus?status)
 {
     if (activity != null)
     {
     }
 }
Beispiel #13
0
 internal void AcceptMessageSessionStop(Activity activity, string sessionId, TaskStatus?status)
 {
     if (activity != null)
     {
     }
 }
Beispiel #14
0
 internal void GetRulesStop(Activity activity, IEnumerable <RuleDescription> rules, TaskStatus?status)
 {
     if (activity != null)
     {
     }
 }
Beispiel #15
0
 internal void RemoveRuleStop(Activity activity, string ruleName, TaskStatus?status)
 {
     if (activity != null)
     {
     }
 }
        internal void PeekStop(Activity activity, long fromSequenceNumber, int messageCount, TaskStatus?status, IList <Message> messageList)
        {
            if (activity != null)
            {
                SetRelatedOperations(activity, messageList);
                SetTags(activity, messageList);

                DiagnosticListener.StopActivity(activity, new
                {
                    FromSequenceNumber    = fromSequenceNumber,
                    RequestedMessageCount = messageCount,
                    Entity   = this.entityPath,
                    Endpoint = this.endpoint,
                    Status   = status ?? TaskStatus.Faulted,
                    Messages = messageList
                });
            }
        }
Beispiel #17
0
 internal void ProcessStop(Activity activity, Message message, TaskStatus?status)
 {
     if (activity != null)
     {
     }
 }
        internal void ReceiveDeferredStop(Activity activity, IEnumerable <long> sequenceNumbers, TaskStatus?status, IList <Message> messageList)
        {
            if (activity != null)
            {
                SetRelatedOperations(activity, messageList);
                SetTags(activity, messageList);

                DiagnosticListener.StopActivity(activity, new
                {
                    SequenceNumbers = sequenceNumbers,
                    Entity          = this.entityPath,
                    Endpoint        = this.endpoint,
                    Messages        = messageList,
                    Status          = status ?? TaskStatus.Faulted
                });
            }
        }
Beispiel #19
0
        public virtual List <int> GetTaskCount(List <int> projectId, TaskStatus?taskStatus)
        {
            var isAdmin = ProjectSecurity.IsAdministrator(SecurityContext.CurrentAccount.ID);

            return(projectDao.GetTaskCount(projectId, taskStatus, isAdmin));
        }
 internal void SetSessionStateStop(Activity activity, byte[] state, string sessionId, TaskStatus?status)
 {
     if (activity != null)
     {
         DiagnosticListener.StopActivity(activity, new
         {
             State     = state,
             SessionId = sessionId,
             Entity    = this.entityPath,
             Endpoint  = this.endpoint,
             Status    = status ?? TaskStatus.Faulted
         });
     }
 }
Beispiel #21
0
        private static void SynchronousContinuationsDoNotRunWithinGetValueCallCore(TaskStatus expectedTaskStatus)
        {
            var synchronousComputationStartedEvent        = new ManualResetEvent(initialState: false);
            var synchronousComputationShouldCompleteEvent = new ManualResetEvent(initialState: false);

            var requestCancellationTokenSource = new CancellationTokenSource();

            // First, create an async lazy that will only ever do synchronous computations.
            var lazy = new AsyncLazy <int>(
                asynchronousComputeFunction: c => { throw new Exception("We should not get an asynchronous computation."); },
                synchronousComputeFunction: c =>
            {
                // Notify that the synchronous computation started
                synchronousComputationStartedEvent.Set();

                // And now wait when we should finish
                synchronousComputationShouldCompleteEvent.WaitOne();

                c.ThrowIfCancellationRequested();

                if (expectedTaskStatus == TaskStatus.Faulted)
                {
                    // We want to see what happens if this underlying task faults, so let's fault!
                    throw new Exception("Task blew up!");
                }

                return(42);
            },
                cacheResult: false);

            // Second, start a synchronous request. While we are in the GetValue, we will record which thread is being occupied by the request
            Thread synchronousRequestThread = null;

            Task.Factory.StartNew(() =>
            {
                try
                {
                    synchronousRequestThread = Thread.CurrentThread;
                    lazy.GetValue(requestCancellationTokenSource.Token);
                }
                finally // we do test GetValue in exceptional scenarios, so we should deal with this
                {
                    synchronousRequestThread = null;
                }
            }, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Current);

            // Wait until this request has actually started
            synchronousComputationStartedEvent.WaitOne();

            // Good, we now have a synchronous request running. An async request should simply create a task that would
            // be completed when the synchronous request completes. We want to assert that if we were to run a continuation
            // from this task that's marked ExecuteSynchronously, we do not run it inline atop the synchronous request.
            bool?      asyncContinuationRanSynchronously = null;
            TaskStatus?observedAntecedentTaskStatus      = null;

            var asyncContinuation = lazy.GetValueAsync(requestCancellationTokenSource.Token).ContinueWith(antecedent =>
            {
                var currentSynchronousRequestThread = synchronousRequestThread;

                asyncContinuationRanSynchronously = currentSynchronousRequestThread != null && currentSynchronousRequestThread == Thread.CurrentThread;
                observedAntecedentTaskStatus      = antecedent.Status;
            },
                                                                                                          CancellationToken.None,
                                                                                                          TaskContinuationOptions.ExecuteSynchronously,
                                                                                                          TaskScheduler.Default);

            // Excellent, the async continuation is scheduled. Let's complete the underlying computation.
            if (expectedTaskStatus == TaskStatus.Canceled)
            {
                requestCancellationTokenSource.Cancel();
            }

            synchronousComputationShouldCompleteEvent.Set();

            // And wait for our continuation to run
            asyncContinuation.Wait();

            Assert.False(asyncContinuationRanSynchronously.Value, "The continuation did not run asynchronously.");
            Assert.Equal(expectedTaskStatus, observedAntecedentTaskStatus.Value);
        }
Beispiel #22
0
        public TaskStatus[] GetNextStatuses(TaskStatus?current, BrigadeType?executorBrigadeType = 0, int permissions = -1)
        {
            var list = new List <TaskStatus>();

            //тут начинается ебоклюйство с правами.
            // бригады локомативщиков 6
            var needPermissionBits = 64;
            var res = permissions & needPermissionBits;

            if (res == needPermissionBits)
            {
                if (current == TaskStatus.New)
                {
                    list.Add(TaskStatus.Log);
                }
                else if (current == TaskStatus.Confirmation)
                {
                    list.Add(TaskStatus.Closed);
                    list.Add(TaskStatus.Remake);
                }
            }
            //бригады депо 7
            //needPermissionBits = 64;
            //res = permissions & needPermissionBits;
            //if (res == needPermissionBits)
            //{

            //    list.Add(TaskStatus.AcceptedForExecution);
            //    list.Add(TaskStatus.Done);
            //    list.Add(TaskStatus.NotConfirmed);

            //}
            // приемщиков 8
            needPermissionBits = 256;
            res = permissions & needPermissionBits;
            if (res == needPermissionBits)
            {
                if (current == TaskStatus.New)
                {
                    list.Add(TaskStatus.Log);
                }
                else if (current == TaskStatus.InWork)
                {
                    list.Add(TaskStatus.Confirmation);
                }
            }

            //Админиблядьстрация 18
            needPermissionBits = 262144;
            res = permissions & needPermissionBits;
            if (res == needPermissionBits)
            {
                list.Add(TaskStatus.New);
                list.Add(TaskStatus.Log);
                list.Add(TaskStatus.InWork);
                list.Add(TaskStatus.Closed);
                list.Add(TaskStatus.Remake);
                list.Add(TaskStatus.Confirmation);
            }

            //admin
            if (permissions == -1)
            {
                list.Add(TaskStatus.New);
                list.Add(TaskStatus.Log);
                list.Add(TaskStatus.InWork);
                list.Add(TaskStatus.Confirmation);
                list.Add(TaskStatus.Remake);
                list.Add(TaskStatus.Closed);
            }

            return(list.Distinct().ToArray());
        }
Beispiel #23
0
 public int GetTaskCount(int projectId, TaskStatus?taskStatus)
 {
     return(GetTaskCount(new List <int> {
         projectId
     }, taskStatus).First());
 }
Beispiel #24
0
        public ReportTemplateWrapper SaveReportTemplate(
            string name,
            string period,
            int periodItem,
            int hour,
            bool autoGenerated,
            ReportType reportType,
            int tag,
            int project,
            TaskStatus?status,
            Guid departament,
            Guid userId,
            ReportTimeInterval reportTimeInterval,
            ApiDateTime fromDate,
            ApiDateTime toDate,
            int viewType,
            bool noResponsible,
            bool isShowAverageTime,
            AverageTime typeOfShowAverageTime,
            bool projectAverageCompletingTasks
            )
        {
            ProjectSecurity.DemandAuthentication();

            if (name == null || name.Trim().Length == 0)
            {
                throw new ArgumentNullException("name");
            }

            var filter = new TaskFilter
            {
                TagId                 = tag,
                DepartmentId          = departament,
                UserId                = userId,
                TimeInterval          = reportTimeInterval,
                FromDate              = fromDate,
                ToDate                = toDate,
                ViewType              = viewType,
                NoResponsible         = noResponsible,
                IsShowAverageTime     = isShowAverageTime,
                TypeOfShowAverageTime = typeOfShowAverageTime
            };

            if (projectAverageCompletingTasks)
            {
                filter.IsShowAverageTime     = true;
                filter.TypeOfShowAverageTime = AverageTime.CompletingTasks;
            }

            if (project != 0)
            {
                filter.ProjectIds.Add(project);
            }

            if (status != null)
            {
                filter.TaskStatuses.Add((TaskStatus)status);
            }

            var template = new ReportTemplate(reportType)
            {
                Filter = filter
            };

            SaveOrUpdateTemplate(template, name, period, periodItem, hour, autoGenerated);
            MessageService.Send(Request, MessageAction.ReportTemplateCreated, MessageTarget.Create(template.Id), template.Name);

            return(new ReportTemplateWrapper(template));
        }
Beispiel #25
0
 internal void RenewLockStop(Activity activity, string lockToken, TaskStatus?status, DateTime lockedUntilUtc)
 {
     if (activity != null)
     {
     }
 }
Beispiel #26
0
 /// <summary>
 /// Is the task status NOT included in the provided arguments set
 /// </summary>
 /// <param name="status"></param>
 /// <param name="set"></param>
 /// <returns></returns>
 public static bool NotIn(this TaskStatus?status, params object[] set)
 {
     return(!set.Contains(status));
 }
Beispiel #27
0
 public void TaskStatus_Not_In_Set_Returns_True(object[] data, TaskStatus?status, bool result)
 {
     Assert.Equal(result, status.NotIn(data));
 }
Beispiel #28
0
 public IEnumerable <int> GetTaskCount(List <int> projectId, TaskStatus?taskStatus)
 {
     return(DaoFactory.ProjectDao.GetTaskCount(projectId, taskStatus, ProjectSecurity.CurrentUserAdministrator));
 }
 internal void ProcessSessionStop(Activity activity, IMessageSession session, Message message, TaskStatus?status)
 {
     if (activity != null)
     {
         DiagnosticListener.StopActivity(activity, new
         {
             Session  = session,
             Message  = message,
             Entity   = this.entityPath,
             Endpoint = this.endpoint,
             Status   = status ?? TaskStatus.Faulted
         });
     }
 }
Beispiel #30
0
 public virtual List <int> GetTaskCount(List <int> projectId, TaskStatus?taskStatus)
 {
     return(projectDao.GetTaskCount(projectId, taskStatus, ProjectSecurity.CurrentUserAdministrator));
 }
Beispiel #31
0
 internal void CompleteStop(Activity activity, IList <string> lockTokens, TaskStatus?status)
 {
     if (activity != null)
     {
     }
 }