public IEnumerable<TaskDocumentDto> AddDocumentsToTask(AddDocumentsToTaskRequest request)
        {
            var furtherControlMeasureTask = _taskRepository.GetByIdAndCompanyId(request.TaskId, request.CompanyId);
            var user = _userForAuditingRepository.GetByIdAndCompanyId(request.UserId, request.CompanyId);
            var documentType = _documentTypeRepository.GetById((long) furtherControlMeasureTask.DefaultDocumentType);

            var docParameters = request.DocumentLibraryIds.Select(docLibFile => new CreateDocumentParameters()
                                                                                    {
                                                                                        ClientId = request.CompanyId,
                                                                                        CreatedBy = user,
                                                                                        CreatedOn = DateTime.Now,
                                                                                        Description = docLibFile.Description
                                                                                        ,
                                                                                        DocumentLibraryId = docLibFile.Id,
                                                                                        DocumentOriginType = DocumentOriginType.TaskCompleted,
                                                                                        DocumentType = documentType,
                                                                                        Filename = docLibFile.Filename,
                                                                                        FilesizeByte = 0
                                                                                    }).ToList();

            furtherControlMeasureTask.AddDocumentsToTask(docParameters, user);
            _taskRepository.SaveOrUpdate(furtherControlMeasureTask);

            //flush so that the new Task documents are given ids
            _taskRepository.Flush();

            var selectAddedFiles = furtherControlMeasureTask.Documents
                .Where(d => docParameters.Select(dp => dp.DocumentLibraryId).Contains(d.DocumentLibraryId));

            return new TaskDocumentDtoMapper().Map(selectAddedFiles);
        }
        public void Given_further_control_measure_task__when_AddingDocuments_then_createdBy_and_createddate_are_the_same_as_the_request_object()
        {
            //given
            var fcmTask = new MultiHazardRiskAssessmentFurtherControlMeasureTask();
            fcmTask.CreatedBy = new UserForAuditing() {Id = Guid.NewGuid()};
            fcmTask.CreatedOn = DateTime.Now.AddDays(-5);
            fcmTask.Reference = "ref";
            fcmTask.MultiHazardRiskAssessmentHazard = MultiHazardRiskAssessmentHazard.Create(new GeneralRiskAssessment(){Reference = "test"}, new Hazard(), fcmTask.CreatedBy);

            _furtherControlMeasureTaskRepository.Setup(x => x.GetByIdAndCompanyId(It.IsAny<long>(), It.IsAny<long>()))
                .Returns(() => fcmTask);

            var expectedCreatedBy = new UserForAuditing() {Id = Guid.NewGuid()};
            var expectedCreatedOn = DateTime.Now;

            _userForAuditingRepository.Setup(x => x.GetByIdAndCompanyId(It.IsAny<Guid>(), It.IsAny<long>()))
                .Returns(() => expectedCreatedBy);

            _documentTypeRepository.Setup(x => x.GetById(It.IsAny<long>()))
                .Returns(() => new DocumentType());

            var request = new AddDocumentsToTaskRequest()
                              {
                                  CompanyId = 123,
                                  DocumentLibraryIds = new List<DocumentLibraryFile>() {new DocumentLibraryFile() {Id = 23, Description = "123", Filename = "image.png"}}
                                  ,
                                  TaskId = 123
                                  ,
                                  UserId = expectedCreatedBy.Id
                              };

            var target = GetTarget();

            //when
            var result = target.AddDocumentsToTask(request);

            //then
            Assert.AreEqual(expectedCreatedOn.Date, result.First().CreatedOn.Value.Date);
            Assert.AreEqual(expectedCreatedBy.Id, result.First().CreatedBy.Id);
            
        }