Пример #1
0
        private void importProject(OnlineProject onlineProject)
        {
            string filename = store.GetFullPath(Path.Combine(@"download", @$ "{onlineProject.Hash}.zip"));

            ProjectInfo futureInfo = new ProjectInfo
            {
                File = new Database.Models.File {
                    NewName = Path.GetFileNameWithoutExtension(filename), Type = "project"
                },
                CreatorID        = onlineProject.CreatorId,
                ComunityStatus   = CommunityStatus.Clouded,
                LastEdited       = onlineProject.DateTimeLastEdited,
                MaxNumberPlayers = onlineProject.Maxplayers,
                MinNumberPlayers = onlineProject.Minplayers,
                Name             = onlineProject.Name,
                Description      = onlineProject.Description,
                OnlineProjectID  = onlineProject.Id,
            };

            using (var fileStream = store.GetStream(filename, FileAccess.Read, FileMode.Open))
            {
                using (ZipFile zip = ZipFile.Read(fileStream))
                {
                    foreach (ZipEntry e in zip)
                    {
                        e.Extract(store.GetFullPath("files"), ExtractExistingFileAction.DoNotOverwrite);

                        if (e.FileName == futureInfo.File.NewName)
                        {
                            continue;
                        }

                        var file = database.Files.FirstOrDefault(f => f.NewName == e.FileName) ?? new Database.Models.File {
                            NewName = e.FileName, Type = "image"
                        };
                        futureInfo.Relations.Add(new FileRelation {
                            Project = futureInfo, File = file
                        });
                    }
                }
            }

            database.Add(futureInfo);
            database.SaveChanges();
            futureInfo.ImageRelation = futureInfo.Relations.FirstOrDefault(r => r.File.NewName == onlineProject.Image);
            WorkingProject.Parse(futureInfo, store, textures, api);
            database.SaveChanges();

            onlineProjectsList.Remove(onlineProjectsList.Children.First(o => o.ID == onlineProject.Id));
            projectsList.Add(new LocalProjectSummaryContainer(futureInfo)
            {
                EditAction = openProject, DeleteAction = deleteProject
            });
        }
 public OnlineProjectSummaryContainer(OnlineProject onlineProject)
 {
     this.onlineProject = onlineProject;
 }