Blazorcrud.Server/Services/UploadProcessorJob.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using Blazorcrud.Server.Models;
using Blazorcrud.Shared.Models;
using Quartz;
using System.Text.Json;

namespace Blazorcrud.Server.Services
{
    [DisallowConcurrentExecution]
    public class UploadProcessorJob : IJob
    {
        private readonly ILogger<UploadProcessorJob> _logger;
        private readonly AppDbContext _appDbContext;

        public UploadProcessorJob(ILogger<UploadProcessorJob> logger, AppDbContext appDbContext)
        {
            _logger = logger;
            _appDbContext = appDbContext;
        }

        public Task Execute(IJobExecutionContext context)
        {
            _logger.LogInformation("File Processing Job Initiated: " + DateTime.Now.ToString("dddd, MMMM dd, yyyy HH:mm:ss.fffK"));
            List<Upload> unprocessedUploads = GetUnprocessedUploads();
            _logger.LogInformation("Count of files requiring processing: " + unprocessedUploads.Count);
            if (unprocessedUploads.Count > 0)
            {
                ProcessFiles(unprocessedUploads);
            }
            _logger.LogInformation("File Processing Job Completed: " + DateTime.Now.ToString("dddd, MMMM dd, yyyy HH:mm:ss.fffK"));
            return Task.CompletedTask;
        }

        private List<Upload> GetUnprocessedUploads()
        {
            List<Upload> unprocessedUploads = (from u in _appDbContext.Uploads
                                                where u.ProcessedTimestamp.HasValue != true
                                                select u).ToList();
            return unprocessedUploads;
        }

        private void ProcessFiles(List<Upload> uploads)
        {
            foreach (Upload u in uploads)
            {
                byte[] base64Data = System.Convert.FromBase64String(u.FileContent);
                string base64Decoded = System.Text.ASCIIEncoding.UTF8.GetString(base64Data);

                try
                {
                    List<Person> people = JsonSerializer.Deserialize<List<Person>>(base64Decoded);
                    foreach (Person p in people)
                    {
                        _appDbContext.People.Add(p);
                    }
                    _appDbContext.SaveChanges();

                    // Update file processing status in the system
                    u.ProcessedTimestamp = DateTime.Now;
                    _appDbContext.SaveChanges();
                    _logger.LogInformation("File Id: " + u.Id + " Name: " + u.FileName + " processed at " + DateTime.Now.ToString("dddd, MMMM dd, yyyy HH:mm:ss.fffK"));
后面还有 9 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。