private void SendReminding(IEntity sysUserEntity, FileConversionTask fileConversionTask, ReportGenerationTask reportGenerationTask) { var contactId = sysUserEntity.GetTypedColumnValue <Guid>("ContactId"); contactId.CheckDependencyNull(nameof(contactId)); var systemUserConnection = _appConnection.SystemUserConnection; var sysModuleReportEntity = systemUserConnection.EntitySchemaManager.FindInstanceByName("SysModuleReport"); sysModuleReportEntity.CheckDependencyNull(nameof(sysModuleReportEntity)); var config = new RemindingConfig(sysModuleReportEntity.UId) { AuthorId = contactId, SourceId = RemindingConsts.RemindingSourceAuthorId, ContactId = contactId, SubjectId = Guid.Empty, Description = string.Empty, RemindTime = DateTime.UtcNow, Config = new Dictionary <string, object> { { "serviceName", nameof(PdfAsyncReportGenerationController) }, { "methodName", nameof(PdfAsyncReportGenerationController.GetReportFile) }, { "success", fileConversionTask.Status == TaskStatus.Successed }, { "reportName", reportGenerationTask.ReportName }, { "taskId", reportGenerationTask.TaskId } } }; _remindingUtilities.CreateReminding(systemUserConnection, config); }
/// <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)); }
/// <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), }); }
public virtual void Notify(FileConversionTask conversionTask) { conversionTask.CheckArgumentNull(nameof(conversionTask)); var fileconversionTaskId = conversionTask.Id; var userReportGenerationTask = GetCachedReportGenerationTask(fileconversionTaskId); if (!ReportCompletionSender.SendMessage(conversionTask, userReportGenerationTask)) { Log.Error($"The notification about report generation completion by task ID = {fileconversionTaskId} has not been sent."); } }
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> /// 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);