コード例 #1
0
        public async Task <DomainProjectProcessedScreenshot> AddAsync(DomainProjectProcessedScreenshot entity)
        {
            ProjectEntity project = await _projectRepository.SingleOrDefaultAsync(p => p.Id == entity.ProjectId);

            if (project == null)
            {
                throw new NotFoundException(string.Format("Project {0} was not found", entity.ProjectId));
            }

            ProjectEntity.EncodedScreenshot screenshot = project.EncodedScreenshots.FirstOrDefault(s => s.ContentType == entity.ContentType && s.Width == entity.Width);
            if (screenshot == null)
            {
                // if does not exist

                // adding to the project
                screenshot = new ProjectEntity.EncodedScreenshot
                {
                    FileId      = entity.FileId,
                    ContentType = entity.ContentType,
                    Width       = entity.Width,
                    Height      = entity.Height
                };

                List <ProjectEntity.EncodedScreenshot> encodedScreenshots = project.EncodedScreenshots.ToList();
                encodedScreenshots.Add(screenshot);
                project.EncodedScreenshots = encodedScreenshots.ToArray();

                await _projectRepository.UpdateAsync(project);
            }


            // building result
            return(BuildDomainObject(project, screenshot));
        }
コード例 #2
0
        public async Task <List <DomainProjectProcessedScreenshot> > AddAsync(IList <DomainProjectProcessedScreenshot> entities)
        {
            IEnumerable <IGrouping <string, DomainProjectProcessedScreenshot> > entitiesByProject = entities.GroupBy(p => p.ProjectId);

            var projectTasks = new List <Task>();
            var results      = new List <DomainProjectProcessedScreenshot>();

            foreach (var projectEntities in entitiesByProject)
            {
                string projectId = projectEntities.Key;
                IGrouping <string, DomainProjectProcessedScreenshot> groupedEntities = projectEntities;

                // adding entities to project
                projectTasks.Add(Task.Run(async() =>
                {
                    ProjectEntity project = await _projectRepository.SingleOrDefaultAsync(p => p.Id == projectId);
                    if (project == null)
                    {
                        throw new NotFoundException(string.Format("Project {0} was not found", projectId));
                    }

                    List <ProjectEntity.EncodedScreenshot> projectScreenshots = project.EncodedScreenshots.ToList();
                    foreach (DomainProjectProcessedScreenshot entity in groupedEntities)
                    {
                        ProjectEntity.EncodedScreenshot screenshot = project.EncodedScreenshots.FirstOrDefault(v => v.ContentType == entity.ContentType && v.Width == entity.Width);
                        if (screenshot == null)
                        {
                            // if does not exist

                            // adding to the project
                            screenshot = new ProjectEntity.EncodedScreenshot
                            {
                                FileId      = entity.FileId,
                                ContentType = entity.ContentType,
                                Width       = entity.Width,
                                Height      = entity.Height
                            };

                            projectScreenshots.Add(screenshot);
                        }


                        // building result
                        results.Add(BuildDomainObject(project, screenshot));
                    }

                    // updating project
                    project.EncodedScreenshots = projectScreenshots.ToArray();
                    await _projectRepository.UpdateAsync(project);
                }));
            }

            await Task.WhenAll(projectTasks);

            return(results);
        }
コード例 #3
0
        public async Task <DomainProjectProcessedScreenshot> GetAsync(DomainProjectProcessedScreenshot entity)
        {
            ProjectEntity project = await _projectRepository.SingleOrDefaultAsync(p => p.Id == entity.ProjectId);

            if (project == null)
            {
                throw new NotFoundException(string.Format("Project {0} was not found", entity.ProjectId));
            }

            ProjectEntity.EncodedScreenshot screenshot = project.EncodedScreenshots.Single(s => s.FileId == entity.FileId);

            // building result
            return(BuildDomainObject(project, screenshot));
        }
コード例 #4
0
 private DomainProjectProcessedScreenshot BuildDomainObject(ProjectEntity project, ProjectEntity.EncodedScreenshot entity)
 {
     return(new DomainProjectProcessedScreenshot
     {
         FileId = entity.FileId,
         ContentType = entity.ContentType,
         Width = entity.Width,
         Height = entity.Height,
         FileUri = _uriProvider.CreateUri(entity.FileId),
         ProjectId = project.Id,
         UserId = project.UserId
     });
 }