Exemplo n.º 1
0
        public async Task <IActionResult> SubmitCreate(WorkItemCreateDto dto)
        {
            var workItem = WorkItem.Create(Mappers.Map(dto));

            await repo.CreateWorkItem(workItem);

            return(RedirectToAction("Index"));
        }
Exemplo n.º 2
0
        public void ShouldNotCountWipBelowParallelStepWhenCheckingAboveParallelStep()
        {
            _workStepRepository.CreateWorkStep("/wip", 2);
            var feedback = _workStepRepository.CreateWorkStep("/wip/feedback", WorkStepType.Parallel);
            var review   = _workStepRepository.CreateWorkStep("/wip/feedback/review");

            _workItemRepository.CreateWorkItem(review, "cr1");
            AssertBelowWipLimitAndCreateWorkItem(feedback, "cr4", "cr5");
            Assert.IsFalse(CanAcceptWip(feedback, "cr6"));
        }
Exemplo n.º 3
0
        // if work is available to do and another web server in the web farm isn't already doing,
        // this returns a unit of work used to wrap the work.
        public JobUnitOfWork ReserveWork(string workerId, IJob job)
        {
            long?workItemId = null;

            // We do a double check here because this may be the first DB query that runs when starting
            // WebBackgrounder. For those using EF Code First, this could trigger a database creation
            // (typically on a dev box, hopefully not in production). A database can't be created inside
            // a transaction scope so we run this query here first.
            var lastWorkItem = _workItemRepository.GetLastWorkItem(job);

            if (lastWorkItem.IsActive() && !lastWorkItem.IsTimedOut(job, () => DateTime.UtcNow))
            {
                return(null);
            }

            _workItemRepository.RunInTransaction(() =>
            {
                lastWorkItem = _workItemRepository.GetLastWorkItem(job);

                if (lastWorkItem.IsTimedOut(job, () => DateTime.UtcNow))
                {
                    lastWorkItem.Completed = DateTime.UtcNow;
                    _workItemRepository.SetWorkItemFailed(lastWorkItem.Id,
                                                          new TimeoutException("Workitem expired. Job timeout was " + job.TimeOut));
                    lastWorkItem = null;
                }

                if (lastWorkItem.IsActive())
                {
                    workItemId = null;
                    return;
                }
                workItemId = _workItemRepository.CreateWorkItem(workerId, job);
            }
                                                 );

            if (workItemId == null)
            {
                return(null);
            }
            return(new JobUnitOfWork(_workItemRepository, workItemId.Value));
        }
Exemplo n.º 4
0
        public virtual IActionResult CreateWorkItem([FromBody] WorkItemPublic workItem)
        {
            Ensure.ParamNotNull(workItem, nameof(workItem));

            // workItem musi mieć ustawionego rodzica
            if (workItem.WorkItemCollectionID <= 0)
            {
                return(base.BadRequest(workItem));
            }

            try
            {
                WorkItemPublic workItemPublic = mRepository.CreateWorkItem(workItem);
                return(base.Created($"/workitems/{workItemPublic.ID}", workItemPublic));
            }
            catch
            {
                return(base.BadRequest(workItem));
            }
        }
 public void CreateWorkItem(WorkItem workItem)
 {
     _workItemRepsitory.CreateWorkItem(workItem);
 }