private IEnumerable<Site> GetRequestedSites(CreateManyResponsibilityTaskFromWizardRequest request) { var requestedSiteIds = request.TaskDetails.Select(x => x.SiteId).Distinct().ToList(); var requestedSites = _siteRepository.GetByIds(requestedSiteIds); if (requestedSites.Count() != requestedSiteIds.Count()) { throw new ArgumentException("Requested Sites for generating Statutory Tasks could not be retrieved"); } if (requestedSites.Any(x => x.ClientId != request.CompanyId)) { throw new ArgumentException("Requested Sites are not from the requested Company"); } return requestedSites; }
public JsonResult BulkGenerateTasks(List<GenerateResponsibilityTaskViewModel> viewModel) { JsonResult result; ValidateGenerateResponsibilityTasks(viewModel); if (!ModelState.IsValid) { result = ModelStateErrorsAsJson(); } else { var taskDetails = new List<CreateResponsibilityTasksFromWizardRequest>(); var createdTaskGuids = new List<Guid>(); foreach (var model in viewModel) { var taskGuid = Guid.NewGuid(); createdTaskGuids.Add(taskGuid); taskDetails.Add(CreateResponsibilityTasksFromWizardRequest.Create(CurrentUser.CompanyId, CurrentUser.UserId, model.SiteId, model.ResponsibilityId, model.TaskId, model.Frequency, model.Owner, model.StartDate, model.EndDate, taskGuid)); } var request = new CreateManyResponsibilityTaskFromWizardRequest { TaskDetails = taskDetails, CreatingUserId = CurrentUser.UserId, CompanyId = CurrentUser.CompanyId }; using (var session = _businessSafeSessionManager.Session) { _responsibilitiesService.CreateManyResponsibilityTaskFromWizard(request); _businessSafeSessionManager.CloseSession(); } foreach (var taskGuid in createdTaskGuids) { _bus.Publish(new TaskAssigned { TaskGuid = taskGuid }); } result = Json(new { Success = true }); } return result; }
public void CreateManyResponsibilityTaskFromWizard(CreateManyResponsibilityTaskFromWizardRequest request) { var responsibilitiesRequested = _responsibilityRepository.GetByIds(request.TaskDetails.Select(x => x.ResponsibilityId).Distinct().ToList()); var creatingUser = _userForAuditingRepository.GetByIdAndCompanyId(request.CreatingUserId, request.CompanyId); var taskCategory = _taskCategoryRepository.GetResponsibilityTaskCategory(); var requestedAssignees = GetRequestedAssignees(request); var requestedSites = GetRequestedSites(request); foreach (var responsibility in responsibilitiesRequested) { foreach (var detail in request.TaskDetails.Where(x => x.ResponsibilityId == responsibility.Id)) { var assignee = requestedAssignees.Single(x => x.Id == detail.AssigneeId); var site = requestedSites.Single(x => x.Id == detail.SiteId); var task = GetResponsibilityTask( SaveResponsibilityTaskRequest.Create( detail.CompanyId, detail.ResponsibilityId, default(long), string.Empty, string.Empty, (int)detail.Frequency, detail.StartDate.ToShortDateString(), detail.EndDate, detail.UserId, detail.AssigneeId, (int) TaskStatus.Outstanding, detail.StartDate.ToShortDateString(), true, true, true, true, detail.TaskGuid, detail.SiteId, new List<CreateDocumentRequest>(), detail.TaskTemplateId), assignee, creatingUser, taskCategory, responsibility, site, new List<CreateDocumentParameters>() ); if (detail.TaskTemplateId != default(long)) { SetResponsibilityTaskValuesFromTemplate(detail.TaskTemplateId, task); } } _responsibilityRepository.Save(responsibility); } }
public void Setup() { _companyId = 234246L; _responsibilityA = new Responsibility { Id = 123L, CompanyId = _companyId }; _responsibilityB = new Responsibility { Id = 456L, CompanyId = _companyId }; _responsibilityRepository = new Mock<IResponsibilityRepository>(); _responsibilityRepository.Setup(x => x.GetByIds(It.IsAny<List<long>>())); _responsibilityRepository.Setup(x => x.Save(It.IsAny<Responsibility>())); _taskAssignedTo = new Employee { Id = Guid.NewGuid(), CompanyId = _companyId }; _employeeRepository = new Mock<IEmployeeRepository>(); _employeeRepository .Setup(x => x.GetByIds(It.IsAny<List<Guid>>())) .Returns(new List<Employee>() {_taskAssignedTo }); _site = new Site { Id = 1234L, ClientId = _companyId }; _siteRepository = new Mock<ISiteRepository>(); _siteRepository .Setup(x => x.GetByIds(It.IsAny<List<long>>())) .Returns(new List<Site> { _site }); _statutoryResponsibilityTaskTemplateRepository = new Mock<IStatutoryResponsibilityTaskTemplateRepository>(); _statutoryResponsibilityTaskTemplateRepository.Setup(x => x.GetById(It.IsAny<long>())).Returns(new StatutoryResponsibilityTaskTemplate()); _creatingUser = new UserForAuditing { Id = Guid.NewGuid() }; _userForAuditingRepository = new Mock<IUserForAuditingRepository>(); _userForAuditingRepository .Setup(x => x.GetByIdAndCompanyId(_creatingUser.Id, _companyId)) .Returns(_creatingUser); _taskCategory = new TaskCategory() { Id = 1L }; _taskCategoryRepository = new Mock<ITaskCategoryRepository>(); _taskCategoryRepository.Setup(x => x.GetResponsibilityTaskCategory()) .Returns(_taskCategory); _documentParameterHelper = new Mock<IDocumentParameterHelper>(); _log = new Mock<IPeninsulaLog>(); _taskTemplateA = new StatutoryResponsibilityTaskTemplate { Id = 12345464252L, Title = "task template A title", Description = "task template A description"}; _taskTemplateB = new StatutoryResponsibilityTaskTemplate { Id = 154764252L, Title = "task template B title", Description = "task template B description" }; _taskTemplateC = new StatutoryResponsibilityTaskTemplate { Id = 123453252L, Title = "task template C title", Description = "task template C description", }; _taskTemplates = new List<StatutoryResponsibilityTaskTemplate> { _taskTemplateA, _taskTemplateB, _taskTemplateC }; _task1ForResponsibilityA = CreateResponsibilityTasksFromWizardRequest.Create(_companyId, _creatingUser.Id, _site.Id, _responsibilityA.Id, _taskTemplateA.Id, TaskReoccurringType.Weekly, _taskAssignedTo.Id, DateTime.Now.ToShortDateString(), DateTime.Now.AddDays(1).ToShortDateString(), Guid.NewGuid()); _task2ForResponsibilityA = CreateResponsibilityTasksFromWizardRequest.Create(_companyId, _creatingUser.Id, _site.Id, _responsibilityA.Id, _taskTemplateB.Id, TaskReoccurringType.Weekly, _taskAssignedTo.Id, DateTime.Now.ToShortDateString(), DateTime.Now.AddDays(1).ToShortDateString(), Guid.NewGuid()); _task1ForResponsibilityB = CreateResponsibilityTasksFromWizardRequest.Create(_companyId, _creatingUser.Id, _site.Id, _responsibilityB.Id, _taskTemplateC.Id, TaskReoccurringType.Weekly, _taskAssignedTo.Id, DateTime.Now.ToShortDateString(), DateTime.Now.AddDays(1).ToShortDateString(), Guid.NewGuid()); _manyTaskRequest = new CreateManyResponsibilityTaskFromWizardRequest() { CompanyId = _companyId, CreatingUserId = _creatingUser.Id }; }