Esempio n. 1
0
        public void AssignActionTask(AssignActionTaskRequest request)
        {
            _log.Add(request);

            try
            {
                var action = _actionRepository.GetById(request.ActionId);
                var user = _userForAuditingRepository.GetById(request.UserId);
                var employee = _employeeRepository.GetById(request.AssignedTo);

                Site site = null;
                if (action.ActionPlan.Site != null)
                {
                    site = _siteRepository.GetById(action.ActionPlan.Site.Id);
                }
                var taskCategory = _taskCategoryRepository.GetActionTaskCategory();

                action.AssignedTo = employee;

                if (!string.IsNullOrEmpty(request.AreaOfNonCompliance))
                    action.AreaOfNonCompliance = request.AreaOfNonCompliance;
                if (!string.IsNullOrEmpty(request.ActionRequired))
                    action.ActionRequired = request.ActionRequired;

                UpdateActionTask(request, employee, user, taskCategory, action, site);
                
                _actionRepository.SaveOrUpdate(action);
            }
            catch (Exception ex)
            {
                _log.Add(ex);
                throw;
            }
        }
        public void When_AssignAction_Task_Then_Calls_Correct_Methods()
        {
            //given
            var request = new AssignActionTaskRequest
                              {
                                  CompanyId = 1234L,
                                  UserId = Guid.NewGuid(),
                                  ActionId = 1L,
                                  AssignedTo = Guid.NewGuid(),
                                  DueDate = DateTime.Now
                              };

            var action = new Action
                             {
                                 Id = 1L,
                                 Title = "Action1",
                                 ActionPlan = new ActionPlan
                                                  {
                                                      Id = 1L,
                                                      Site = new Site
                                                                 {
                                                                     SiteId = 1L
                                                                 }
                                                  }
                             };

            _actionRepository.Setup(x => x.GetById(It.IsAny<long>())).Returns(action);
            _userForAuditingRepository.Setup(x => x.GetById(It.IsAny<Guid>())).Returns(new UserForAuditing{Id = Guid.NewGuid()});
            _employeeRepository.Setup(x => x.GetById(It.IsAny<Guid>())).Returns(new Employee { Id = Guid.NewGuid() });
            _siteRepository.Setup(x => x.GetById(It.IsAny<long>())).Returns(new Site {Id = 1L});
            _taskCategoryRepository.Setup(x => x.GetActionTaskCategory()).Returns(new TaskCategory {Id = 8});

            var target = GetTarget();

            //when
            target.AssignActionTask(request);

            //then
            _actionRepository.Verify(x => x.GetById(It.Is<long>(y => y == request.ActionId)));
            _userForAuditingRepository.Verify(x => x.GetById(It.Is<Guid>(y => y == request.UserId)));
            _employeeRepository.Verify(x=> x.GetById(It.Is<Guid>(y=>y == request.AssignedTo)));
            _siteRepository.Verify(x=>x.GetById(It.IsAny<long>()));
            _taskCategoryRepository.Verify(x => x.GetActionTaskCategory());
        }
        public virtual void Execute()
        {
            bool sendEmail = _sendTaskNotification;

            var task = _actionService.GetByIdAndCompanyId(_actionId, _companyId).ActionTasks.FirstOrDefault();
            if (task != null)
            {
                sendEmail = _assignedTo.HasValue && _assignedTo.Value != task.TaskAssignedTo.Id && _sendTaskNotification;
            }

            var dueDate = (DateTime?) null;
            DateTime tempDate;

            if (DateTime.TryParse(_dueDate, out tempDate))
            {
                dueDate = tempDate;
            }

            var request = new AssignActionTaskRequest
                              {
                                  CompanyId = _companyId,
                                  UserId = _userId,
                                  ActionId = _actionId,
                                  AssignedTo = _assignedTo.HasValue ? _assignedTo.Value : Guid.Empty,
                                  DueDate = dueDate,
                                  SendTaskNotification = _sendTaskNotification,
                                  SendTaskCompletedNotification = _sendTaskCompletedNotification,
                                  SendTaskOverdueNotification = _sendTaskOverdueNotification,
                                  SendTaskDueTomorrowNotification = _sendTaskDueTomorrowNotification,
                                  Documents = _createDocumentRequests,
                                  AreaOfNonCompliance = _areaOfNonCompliance,
                                  ActionRequired = _actionRequired
                              };

            using (var session = _businessSafeSessionManager.Session)
            {
                _actionService.AssignActionTask(request);
                _businessSafeSessionManager.CloseSession();
            }

            if (sendEmail)
            {
                using (var session = _businessSafeSessionManager.Session)
                {
                    _actionService.SendTaskAssignedEmail(request.ActionId, request.CompanyId);
                    _businessSafeSessionManager.CloseSession();
                }
            }
        }
        public void When_AssignAction_Task_Then_Saved_Action_With_Task()
        {
            //given
            var request = new AssignActionTaskRequest
            {
                CompanyId = 1234L,
                UserId = Guid.NewGuid(),
                ActionId = 1L,
                AssignedTo = Guid.NewGuid(),
                DueDate = DateTime.Now
            };

            var action = new Action
            {
                Id = 1L,
                ActionPlan = new ActionPlan
                {
                    Id = 1L,
                    Site = new Site
                    {
                        SiteId = 1L
                    }
                }
            };

            _actionRepository.Setup(x => x.GetById(It.IsAny<long>())).Returns(action);

            var target = GetTarget();

            //when
            target.AssignActionTask(request);

            //then
            _actionRepository.Verify(x => x.SaveOrUpdate(It.Is<Action>(a => a.Id == request.ActionId)));

        }
Esempio n. 5
0
        private void UpdateActionTask(AssignActionTaskRequest request, Employee employee, UserForAuditing user, TaskCategory taskCategory, Action action, Site site)
        {
            var createDocumentParameterObjects = request.Documents == null ? null : _documentParameterHelper.GetCreateDocumentParameters(request.Documents, request.CompanyId);

            if (action.ActionTasks.Any())
            {
                var task = action.ActionTasks.FirstOrDefault();
                task.Update(action.AreaOfNonCompliance,
                    action.ActionRequired,
                    request.DueDate,
                    TaskStatus.Outstanding,
                    employee,
                    user,
                    createDocumentParameterObjects, 
                    taskCategory,
                    (int) TaskReoccurringType.None,
                                        null,
                    request.SendTaskNotification,
                    request.SendTaskCompletedNotification,
                    request.SendTaskOverdueNotification,
                    request.SendTaskDueTomorrowNotification,
                    task.TaskGuid,
                    site
                    );
            }
            else
            {
                var task = new ActionTask();

                task = ActionTask.Create(
                    action.Reference,
                    action.AreaOfNonCompliance,
                    action.ActionRequired,
                    request.DueDate,
                    TaskStatus.Outstanding,
                    employee,
                    user,
                    createDocumentParameterObjects,
                    taskCategory,
                    (int) TaskReoccurringType.None,
                    null,
                    request.SendTaskNotification,
                    request.SendTaskCompletedNotification,
                    request.SendTaskOverdueNotification,
                    request.SendTaskDueTomorrowNotification,
                    Guid.NewGuid(),
                    site,
                    action
                    );
            }
        }