コード例 #1
0
        // ------------------

        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());
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        // ------------------

        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());
        }
コード例 #4
0
        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());
        }
コード例 #5
0
 async Task <ICommandResultBase> UninstallEntitiesAsync(SampleDataDescriptor descriptor)
 {
     return(await UninstallEntitiesInternalAsync(descriptor));
 }