// ------------------ async Task <ICommandResultBase> InstallEntitiesAsync(SampleDataDescriptor descriptor) { var output = new CommandResultBase(); // Get sample users var users = await _platoUserStore.QueryAsync() .OrderBy("LastLoginDate", OrderBy.Desc) .ToList(); // We need sample users to create sample entities if (users == null || users.Data == null) { return(output.Failed("You must create sample users first!")); } for (var i = 0; i < descriptor.EntitiesToCreate; i++) { var result = await InstallEntitiesInternalAsync(descriptor, users?.Data); if (!result.Succeeded) { return(output.Failed(result.Errors.ToArray())); } } return(output.Success()); }
public async Task DeserializedCorrectType(SampleDataDescriptor sampleDataFile) { await using var sampleData = File.OpenRead(sampleDataFile.FullPath); var payload = await JsonSerializer.DeserializeAsync <IPayload>(sampleData, this.Options); Assert.IsAssignableFrom <IPayload <TType> >(payload); }
// ------------------ async Task <ICommandResultBase> InstallEntitiesAsync(SampleDataDescriptor descriptor) { var output = new CommandResultBase(); // Get sample users var users = await _platoUserStore.QueryAsync() .OrderBy("LastLoginDate", OrderBy.Desc) .ToList(); // We need sample users to create sample entities if (users == null || users.Data == null) { return(output.Failed("You must create sample users first!")); } // Ensure the feature is enabled var feature = await _featureFacade.GetFeatureByIdAsync(descriptor.ModuleId); if (feature == null) { // Skip faeture if not enabled return(output.Success()); } // If we add sample entities multiple times ensure the sort order // for new entities is always incremented starting from the highest // existing sort order for any existing entities var sortOrder = await GetStartingEntitySortOrderAsync(feature.Id); for (var i = 0; i < descriptor.EntitiesToCreate; i++) { var result = await InstallEntityInternalAsync(descriptor, users?.Data, sortOrder + i); if (!result.Succeeded) { return(output.Failed(result.Errors.ToArray())); } } return(output.Success()); }
async Task <ICommandResultBase> InstallEntityInternalAsync(SampleDataDescriptor descriptor, IList <User> users, int sortOrder = 0) { // Validate if (descriptor == null) { throw new ArgumentNullException(nameof(descriptor)); } if (string.IsNullOrEmpty(descriptor.ModuleId)) { throw new ArgumentNullException(nameof(descriptor.ModuleId)); } // Our result var result = new CommandResultBase(); // Ensure the feature is enabled var feature = await _featureFacade.GetFeatureByIdAsync(descriptor.ModuleId); if (feature == null) { return(result.Failed($"The feature {descriptor.ModuleId} is not enabled!")); } // Get a random user for the post var randomUser = users[_random.Next(0, users.Count)]; // Capitalize the first character of our entity type var entityTypeCapitalized = char.ToUpper(descriptor.EntityType[0]).ToString() + descriptor.EntityType.Substring(1); // Create the post var entity = new Entity() { Title = $"Example {entityTypeCapitalized} {_random.Next(0, 2000).ToString()}", Message = GetEntityText(descriptor), FeatureId = feature?.Id ?? 0, SortOrder = sortOrder + 1, CreatedUserId = randomUser?.Id ?? 0, CreatedDate = DateTimeOffset.UtcNow }; // Create entity var entityResult = await _entityManager.CreateAsync(entity); if (entityResult.Succeeded) { var lastReplyId = string.Empty; var lastReplyUserName = string.Empty; var lastReplyMessage = string.Empty; // Create entity replies for (var i = 0; i < descriptor.EntityRepliesToCreate; i++) { randomUser = users[_random.Next(0, users.Count - 1)]; var message = GetReplyText(descriptor); message = message.Replace("{replyUserName}", randomUser?.UserName ?? ""); message = message.Replace("{lastReplyId}", lastReplyId ?? ""); message = message.Replace("{lastReplyMessage}", lastReplyMessage ?? ""); message = message.Replace("{lastReplyQuotedMessage}", lastReplyMessage.Replace(System.Environment.NewLine, System.Environment.NewLine + "> ") ?? ""); message = message.Replace("{lastReplyUserName}", lastReplyUserName ?? ""); message = message.Replace("{entityId}", entityResult.Response.Id.ToString() ?? ""); message = message.Replace("{entityTitle}", entityResult.Response.Title ?? ""); message = message.Replace("{entityUserName}", entityResult.Response.CreatedBy.UserName); message = message.Replace("{mentionSample}", BuildMentionSampleMarkUp()); message = message.Replace("{lastReplyUrl}", _contextFacade.GetRouteUrl(new RouteValueDictionary() { ["area"] = descriptor.ModuleId, ["controller"] = "Home", ["action"] = "Reply", ["opts.id"] = entityResult.Response.Id.ToString() ?? "", ["opts.alias"] = entityResult.Response.Alias.ToString() ?? "", ["opts.replyId"] = lastReplyId ?? "" })); // Create reply var reply = new EntityReply() { EntityId = entityResult.Response.Id, Message = message, CreatedUserId = randomUser?.Id ?? 0, CreatedDate = DateTimeOffset.UtcNow }; // Add reply var replyResult = await _entityReplyManager.CreateAsync(reply); if (!replyResult.Succeeded) { return(result.Failed()); } lastReplyId = replyResult.Response.Id.ToString(); lastReplyMessage = replyResult.Response.Message; lastReplyUserName = replyResult.Response.CreatedBy.UserName; } } else { return(result.Failed(result.Errors.ToArray())); } return(result.Success()); }
async Task <ICommandResultBase> UninstallEntitiesAsync(SampleDataDescriptor descriptor) { return(await UninstallEntitiesInternalAsync(descriptor)); }