private void CacheReportGenerationTask(ReportGenerationTask task, UserConnection userConnection) { var key = task.TaskId.ToString(); var value = new UserReportGenerationTask(task, userConnection.CurrentUser.Id); _taskStore[key] = value; }
/// <summary> /// Sends a message about completion of report generation. Sends the message to the next sender if can’t send it yourself. /// </summary> /// <param name="fileConversionTask">The remote task of file conversion.</param> /// <param name="reportGenerationTask">The local task of a report generation.</param> /// <returns>True if message about completion of report generation sent; otherwise false.</returns> public bool SendMessage(FileConversionTask fileConversionTask, UserReportGenerationTask reportGenerationTask) { if (SendMessageInternal(fileConversionTask, reportGenerationTask)) { return(true); } return(_successor != null && _successor.SendMessage(fileConversionTask, reportGenerationTask)); }
private void SendNotification( IMsgChannel channel, FileConversionTask fileConversionTask, UserReportGenerationTask reportGenerationTask) { var simpleMessage = new SimpleMessage { Id = Guid.NewGuid(), Body = GetNotificationBody(fileConversionTask, reportGenerationTask), }; simpleMessage.Header.Sender = NotifySender; channel.PostMessage(simpleMessage); }
/// <inheritdoc cref="ReportGenerationCompletionSender.SendMessageInternal"/> protected override bool SendMessageInternal(FileConversionTask fileConversionTask, UserReportGenerationTask reportGenerationTask) { var taskId = reportGenerationTask.TaskId; var userId = reportGenerationTask.UserId; var sysUserEntity = CreateSysUserEntity(); if (!sysUserEntity.FetchFromDB(userId)) { return(false); } SendReminding(sysUserEntity, fileConversionTask, reportGenerationTask); Log.Info($"The reminder about report generation completion for the task ID = {taskId} has been sent."); return(true); }
/// <inheritdoc cref="ReportGenerationCompletionSender.SendMessageInternal"/> protected override bool SendMessageInternal(FileConversionTask fileConversionTask, UserReportGenerationTask reportGenerationTask) { var taskId = reportGenerationTask.TaskId; var userId = reportGenerationTask.UserId; var channel = MsgChannelManager.Instance.FindItemByUId(userId); if (channel == null) { return(false); } SendNotification(channel, fileConversionTask, reportGenerationTask); Log.Info($"The notification about report generation completion for the task ID = {taskId} has been sent."); return(true); }
/// <summary> /// Gets the body of a notification message. /// </summary> /// <param name="fileConversionTask">The remote task of file conversion.</param> /// <param name="reportGenerationTask">The local task of a report generation.</param> /// <returns>The message body of notification by the <paramref name="fileConversionTask"/> and <paramref name="reportGenerationTask"/>.</returns> protected virtual object GetNotificationBody(FileConversionTask fileConversionTask, UserReportGenerationTask reportGenerationTask) { return(new { taskId = reportGenerationTask.TaskId, reportName = reportGenerationTask.ReportName, success = fileConversionTask.Status == TaskStatus.Successed, methodName = nameof(IAsyncReportGenerationController.GetReportFile), serviceName = nameof(PdfAsyncReportGenerationController), }); }
/// <summary> /// Sends a message about completion of report generation. /// </summary> /// <param name="fileConversionTask">The remote task of file conversion.</param> /// <param name="reportGenerationTask">The local task of a report generation.</param> /// <returns>True if message about completion of report generation sent; otherwise false.</returns> protected abstract bool SendMessageInternal(FileConversionTask fileConversionTask, UserReportGenerationTask reportGenerationTask);