public ImportResultDto Import(int zoneId, string name, Stream stream, Action <Exception> logException) { Log.Add("import app start"); var result = new ImportResultDto(); if (!string.IsNullOrEmpty(name)) { Log.Add($"new app name: {name}"); } //var helper = Factory.Resolve<IImportExportEnvironment>().Init(Log); var zipImport = Factory.Resolve <ZipImport>(); try { /*var zipImport = *//*new ZipImport(helper)*/ zipImport.Init(zoneId, null, _user.IsSuperUser, Log); var temporaryDirectory = _http.MapPath(Path.Combine(Eav.ImportExport.Settings.TemporaryDirectory, Guid.NewGuid().ToString().Substring(0, 8))); // Increase script timeout to prevent timeouts result.Succeeded = zipImport.ImportZip(stream, temporaryDirectory, name); result.Messages = zipImport.Messages; } catch (Exception ex) { logException(ex); result.Succeeded = false; result.Messages = zipImport.Messages; } return(result); }
public ImportResultDto Import(int zoneId, string name, Stream stream) { Log.Add("import app start"); var result = new ImportResultDto(); if (!string.IsNullOrEmpty(name)) { Log.Add($"new app name: {name}"); } var zipImport = _zipImport; try { zipImport.Init(zoneId, null, _user.IsSuperUser, Log); var temporaryDirectory = Path.Combine(_globalConfiguration.TemporaryFolder, Mapper.GuidCompress(Guid.NewGuid()).Substring(0, 8)); // Increase script timeout to prevent timeouts result.Success = zipImport.ImportZip(stream, temporaryDirectory, name); result.Messages.AddRange(zipImport.Messages); } catch (Exception ex) { _envLogger.LogException(ex); result.Success = false; result.Messages.AddRange(zipImport.Messages); } return(result); }
public async Task <IActionResult> PostContent(string app, string name, [FromBody] ImportContentsDto request) { await contentQuery.GetSchemaOrThrowAsync(Context, name); var command = request.ToCommand(); var context = await CommandBus.PublishAsync(command); var result = context.Result <ImportResult>(); var response = result.Select(x => ImportResultDto.FromImportResult(x, HttpContext)).ToArray(); return(Ok(response)); }
public ImportResultDto Reset(int zoneId, int appId, string defaultLanguage) { Log.Add($"Reset App {zoneId}/{appId}"); var result = new ImportResultDto(); SecurityHelpers.ThrowIfNotAdmin(_user); var contextZoneId = _zoneMapper.GetZoneId(_siteId); var currentApp = _impExpHelpers.Init(Log).GetAppAndCheckZoneSwitchPermissions(zoneId, appId, _user, contextZoneId); // 1. Verify the file exists before we flush var path = currentApp.PhysicalPath + "\\" + Eav.Constants.FolderData; if (!Directory.Exists(path)) { result.Success = false; result.Messages.Add(new Message("Error: Path to app.xml not found on hard disk", Message.MessageTypes.Error)); return(result); } var filePath = Path.Combine(path, Eav.Constants.AppDataFile); if (!File.Exists(filePath)) { result.Success = false; result.Messages.Add(new Message($"Can't find the {Eav.Constants.AppDataFile} in the folder", Message.MessageTypes.Error)); return(result); } // 2. Now we can delete the app before we prepare the import _cmsZones.Init(zoneId, Log).AppsMan.RemoveAppInSiteAndEav(appId, false); // 3. Now import the App.xml var allowSystemChanges = _user.IsSuperUser; var xmlImport = _xmlImportWithFilesLazy.Value.Init(defaultLanguage, allowSystemChanges, Log); var imp = new ImportXmlReader(filePath, xmlImport, Log); result.Success = xmlImport.ImportXml(zoneId, appId, imp.XmlDoc); result.Messages.AddRange(xmlImport.Messages); return(result); }
public ImportResultDto Import(int zoneId, int appId, string fileName, Stream stream, string defaultLanguage, Action <Exception> logException) { Log.Add("import content start"); var result = new ImportResultDto(); var allowSystemChanges = _user.IsSuperUser; if (fileName.EndsWith(".zip")) { // ZIP try { var zipImport = Factory.Resolve <ZipImport>(); zipImport.Init(zoneId, appId, _user.IsSuperUser, Log); var temporaryDirectory = _http.MapPath(Path.Combine(Eav.ImportExport.Settings.TemporaryDirectory, Guid.NewGuid().ToString())); result.Succeeded = zipImport.ImportZip(stream, temporaryDirectory); result.Messages = zipImport.Messages; } catch (Exception ex) { logException(ex); } } else { // XML using (var fileStreamReader = new StreamReader(stream)) { var xmlImport = new XmlImportWithFiles(Log, defaultLanguage, allowSystemChanges); var xmlDocument = XDocument.Parse(fileStreamReader.ReadToEnd()); result.Succeeded = xmlImport.ImportXml(zoneId, appId, xmlDocument); result.Messages = xmlImport.Messages; } } return(result); }
public async Task <ImportResultDto> GetAsync(long id) { var resultDto = new ImportResultDto() { Items = new List <ImportResultDetailDto>() }; var result = await __ImportResultRepo .QueryAsNoTracking() .Include(item => item.ImportResultDetails) .FirstOrDefaultAsync(item => item.Id == id); if (result is object) { resultDto.ImportedAt = result.ImportedAt; resultDto.Items = result.ImportResultDetails.Select(item => new ImportResultDetailDto { ExternalId = item.ExternalId, Status = item.Status.ToString(), Message = item.Message }); } return(resultDto); }
public ImportResultDto Import(int zoneId, int appId, string fileName, Stream stream, string defaultLanguage) { Log.Add("import content start"); var result = new ImportResultDto(); var allowSystemChanges = _user.IsSuperUser; if (fileName.EndsWith(".zip")) { // ZIP try { var zipImport = _zipImport; zipImport.Init(zoneId, appId, _user.IsSuperUser, Log); var temporaryDirectory = Path.Combine(_globalConfiguration.TemporaryFolder, Mapper.GuidCompress(Guid.NewGuid()).Substring(0, 8)); result.Success = zipImport.ImportZip(stream, temporaryDirectory); result.Messages.AddRange(zipImport.Messages); } catch (Exception ex) { _envLogger.LogException(ex); } } else { // XML using (var fileStreamReader = new StreamReader(stream)) { var xmlImport = _xmlImportWithFilesLazy.Value.Init(defaultLanguage, allowSystemChanges, Log); var xmlDocument = XDocument.Parse(fileStreamReader.ReadToEnd()); result.Success = xmlImport.ImportXml(zoneId, appId, xmlDocument); result.Messages.AddRange(xmlImport.Messages); } } return(result); }
public async Task <ImportResultDto> ImportExcel(ImportExcelInput input) { IExcelImporter Importer = new ExcelImporter(); var stream = new MemoryStream(input.Bytes); var import = await Importer.Import <ArticleImportDto>(stream); var result = new ImportResultDto { HasError = import.HasError, RowErrors = import.RowErrors, TemplateErrors = import.TemplateErrors, }; if (import.RowErrors != null && import.RowErrors.Count > 0) { var newStream = new MemoryStream(stream.ToArray()); Importer.OutputBussinessErrorData <ArticleImportDto>(newStream, import.RowErrors.ToList(), out byte[] fileByte); var createFileOutput = await _fileService.CreateAsync(new CreateFileInput { FileContainerName = FileContainerNameConsts.Temp, FileName = input.FileName, MimeType = input.MimeType, FileType = FileType.RegularFile, ParentId = null, OwnerUserId = CurrentUser.Id, Content = fileByte }); result.ErrorFile = createFileOutput; return(result); } var entitys = ObjectMapper.Map <List <ArticleImportDto>, List <Article> >(import.Data.ToList()); await _repository.InsertManyAsync(entitys); return(result); }
public IHttpActionResult ImportUsers(dynamic xmlData) { var importResult = new ImportResultDto(); var importUsesrDto = new List <ImportUserDto>(); var savedCount = 0; var skippedCount = 0; var totalCount = 0; var failedCount = 0; string xmlDataString = xmlData.xmlData; xmlDataString = Regex.Replace(xmlDataString, @"[^\u0020-\u007F]", String.Empty); XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlDataString); var nodes = doc.ChildNodes; foreach (var node in nodes) { var userNode = node as XmlNode; if (userNode.Name == "Users") { foreach (var innerNode in userNode.ChildNodes) { var importUserDto = new ImportUserDto(); var contentUserNodes = (innerNode as XmlNode).ChildNodes; var firstName = contentUserNodes.Item(0).InnerText; var lastName = contentUserNodes.Item(1).InnerText; var userName = contentUserNodes.Item(2).InnerText; var email = contentUserNodes.Item(3).InnerText; importUserDto.FirstName = firstName; importUserDto.LastName = lastName; importUserDto.UserLogin = userName; importUserDto.Email = email; try { if (userService.IsEmailExist(email)) { skippedCount++; totalCount++; importUserDto.Status = "Skipped"; } else { if (ModelState.IsValid == false) { return(BadRequest(ModelState)); } var newUser = userService.Create(userName, email, firstName, "", lastName); #region Send one time code for initial change password var userCode = userCodeRepo.Create(new UserCode() { UserK = newUser.Id }); string code = userCode.Code; var adminSecurity = adminSecurityService.GetAdministrationSecurity(); EmailDto emaildto = new EmailDto() { EmailBody = String.Format("Hi {0} {1}. You have been added as a new user to siteTRAX Evolution. <br/><br/> Your Onetime code is: <b>{2}</b> <br/> This Onetime code is valid until: <b>{3}</b> at which time it will expire and a new one code will be required to be requested. <br/><br/> To enter your onetime code. Click on \"Forget my password\" then click on \"I have a onetime code\" <br/><br/>If you did not request this password reset, please ignore this message. <br/> Do not reply to this email message as the mail box is un-monitored.", newUser.FirstName, newUser.LastName, userCode.Code, userCode.ExpirationDateUtc.ToLocalTime().ToString("dd-MMMM-yyyy hh:mm tt")), EmailSubject = "New User - siteTRAX Evolution", EmailSender = "*****@*****.**", EmailRecipient = newUser.Email }; CustomEmail.SendPasswordEmail(adminSecurity.MailerServer, adminSecurity.MailerServerPort.Value, adminSecurity.MailerUsername, adminSecurity.MailerPassword, adminSecurity.PasswordResetEmail, newUser.Email, emaildto.EmailSubject, emaildto.EmailBody); #endregion savedCount++; importUserDto.Status = "Added"; } } catch (Exception) { failedCount++; importUserDto.Status = "Failed"; } importUsesrDto.Add(importUserDto); } importResult.ImportUsersDto = importUsesrDto; importResult.Added = savedCount; importResult.Skipped = skippedCount; importResult.Total = totalCount; importResult.Failed = failedCount; } } return(Ok(importResult)); }