示例#1
0
    public async Task <IActionResult> Import(
        [FromForm] SetupModel setupModel,
        CancellationToken cancellationToken = default)
    {
        if (!ModelState.IsValid)
        {
            Response.StatusCode = StatusCodes
                                  .Status400BadRequest;
            return(View(nameof(Index)));
        }

        var contents = await JsonSerializer
                       .DeserializeAsync <IEnumerable <Content> >(
            setupModel.ImportFile.OpenReadStream(),
            JsonSerializerOptions,
            cancellationToken);

        if (contents != null)
        {
            foreach (var content in contents)
            {
                var existingContent = await ContentAccessor
                                      .GetContentAsync(
                    content.Path,
                    cancellationToken);

                if (existingContent != null)
                {
                    content.Id = existingContent.Id;
                    await ContentAccessor.UpdateContentAsync(
                        content, cancellationToken);
                }
                else
                {
                    await ContentAccessor.AddContentAsync(
                        content, cancellationToken);
                }
            }
        }

        return(RedirectToAction(
                   "Index",
                   "Content"));
    }