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; }