public override async Task ProcessMessageAsync(AgentMessage message) { if (message.MessageType == MessageType.DeleteFile) { var taskId = message.To <string>().Data; await DeleteFileAsync(taskId); } }
public override async Task ProcessMessageAsync(AgentMessage message) { switch (message.MessageType) { case MessageType.SplitterTask: { var taskMsg = message.To <TaskMessage>(); _logger.LogInformation($"Save to DB split task {taskMsg.Data.Id}"); var task = new DbTask { Id = taskMsg.Data.Id, Creator = taskMsg.Data.Creator, Name = taskMsg.Data.Name, State = taskMsg.Data.State, FileName = taskMsg.Data.FileName, StartDate = taskMsg.Data.StartDate, ErrorPercentage = taskMsg.Data.ErrorPercentage, ProcessPercentage = taskMsg.Data.ProcessPercentage, RequiredSubtype = taskMsg.Data.RequiredSubtype, UniquePercentage = taskMsg.Data.UniquePercentage }; await _taskCollection.InsertOneAsync(task); break; } case MessageType.WorkerTask: { var taskMsg = message.To <TaskMessage>(); _logger.LogInformation($"Save to DB work task {taskMsg.Data.Id}. Parent: {taskMsg.Data.ParentId}"); var upd = Builders <DbTask> .Update.Push(x => x.SubTasks, new DbSubTask { Id = taskMsg.Data.Id, Name = taskMsg.Data.Name, State = taskMsg.Data.State, StartDate = taskMsg.Data.StartDate, ErrorPercentage = taskMsg.Data.ErrorPercentage, ProcessPercentage = taskMsg.Data.ProcessPercentage, UniquePercentage = taskMsg.Data.UniquePercentage, Workers = new Dictionary <string, WorkerInfo>() }); await _taskCollection.FindOneAndUpdateAsync(x => x.Id == taskMsg.Data.ParentId, upd); break; } case MessageType.TaskStat: { var taskMsg = message.To <TaskMessage>(); var upd = Builders <DbTask> .Update .Set(f => f.SubTasks[-1].Workers[taskMsg.Author.SubType].Process, taskMsg.Data.ProcessPercentage) .Set(f => f.SubTasks[-1].Workers[taskMsg.Author.SubType].Errors, taskMsg.Data.ErrorPercentage) .Set(f => f.SubTasks[-1].Workers[taskMsg.Author.SubType].Unique, taskMsg.Data.UniquePercentage); if (taskMsg.Data.StartDate != DateTime.MinValue) { upd = upd.Set(f => f.SubTasks[-1].StartDate, taskMsg.Data.StartDate); } if (!string.IsNullOrEmpty(taskMsg.Data.Report)) { upd = upd.Set(f => f.SubTasks[-1].Workers[taskMsg.Author.SubType].Report, taskMsg.Data.Report); } await _taskCollection.FindOneAndUpdateAsync( x => x.Id == taskMsg.Data.ParentId && x.SubTasks.Any(st => st.Id == taskMsg.Data.Id), upd); break; } } }