using Nop.Core.Domain.Blogs; using Nop.Core.Domain.Catalog; using Nop.Core.Domain.Customers; using Nop.Core.Domain.Forums; using Nop.Core.Domain.Messages; using Nop.Core.Domain.News; using Nop.Core.Domain.Orders; using Nop.Core.Domain.Shipping; using Nop.Core.Domain.Vendors; namespace Nop.Services.Messages; /// /// Workflow message service /// public partial interface IWorkflowMessageService { #region Customer workflow /// /// Sends 'New customer' notification message to a store owner /// /// Customer instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendCustomerRegisteredStoreOwnerNotificationMessageAsync(Customer customer, int languageId); /// /// Sends a welcome message to a customer /// /// Customer instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendCustomerWelcomeMessageAsync(Customer customer, int languageId); /// /// Sends an email validation message to a customer /// /// Customer instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendCustomerEmailValidationMessageAsync(Customer customer, int languageId); /// /// Sends an email re-validation message to a customer /// /// Customer instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendCustomerEmailRevalidationMessageAsync(Customer customer, int languageId); /// /// Sends password recovery message to a customer /// /// Customer instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendCustomerPasswordRecoveryMessageAsync(Customer customer, int languageId); /// /// Sends 'New request to delete customer' message to a store owner /// /// Customer /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendDeleteCustomerRequestStoreOwnerNotificationAsync(Customer customer, int languageId); #endregion #region Order workflow /// /// Sends an order placed notification to a vendor /// /// Order instance /// Vendor instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderPlacedVendorNotificationAsync(Order order, Vendor vendor, int languageId); /// /// Sends an order placed notification to a store owner /// /// Order instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderPlacedStoreOwnerNotificationAsync(Order order, int languageId); /// /// Sends an order placed notification to an affiliate /// /// Order instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderPlacedAffiliateNotificationAsync(Order order, int languageId); /// /// Sends an order paid notification to a store owner /// /// Order instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderPaidStoreOwnerNotificationAsync(Order order, int languageId); /// /// Sends an order paid notification to a customer /// /// Order instance /// Message language identifier /// Attachment file path /// Attachment file name. If specified, then this file name will be sent to a recipient. Otherwise, "AttachmentFilePath" name will be used. /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderPaidCustomerNotificationAsync(Order order, int languageId, string attachmentFilePath = null, string attachmentFileName = null); /// /// Sends an order paid notification to a vendor /// /// Order instance /// Vendor instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderPaidVendorNotificationAsync(Order order, Vendor vendor, int languageId); /// /// Sends an order paid notification to an affiliate /// /// Order instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderPaidAffiliateNotificationAsync(Order order, int languageId); /// /// Sends an order placed notification to a customer /// /// Order instance /// Message language identifier /// Attachment file path /// Attachment file name. If specified, then this file name will be sent to a recipient. Otherwise, "AttachmentFilePath" name will be used. /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderPlacedCustomerNotificationAsync(Order order, int languageId, string attachmentFilePath = null, string attachmentFileName = null); /// /// Sends a shipment sent notification to a customer /// /// Shipment /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendShipmentSentCustomerNotificationAsync(Shipment shipment, int languageId); /// /// Sends a shipment ready for pickup notification to a customer /// /// Shipment /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendShipmentReadyForPickupNotificationAsync(Shipment shipment, int languageId); /// /// Sends a shipment delivered notification to a customer /// /// Shipment /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendShipmentDeliveredCustomerNotificationAsync(Shipment shipment, int languageId); /// /// Sends an order processing notification to a customer /// /// Order instance /// Message language identifier /// Attachment file path /// Attachment file name. If specified, then this file name will be sent to a recipient. Otherwise, "AttachmentFilePath" name will be used. /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderProcessingCustomerNotificationAsync(Order order, int languageId, string attachmentFilePath = null, string attachmentFileName = null); /// /// Sends an order completed notification to a customer /// /// Order instance /// Message language identifier /// Attachment file path /// Attachment file name. If specified, then this file name will be sent to a recipient. Otherwise, "AttachmentFilePath" name will be used. /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderCompletedCustomerNotificationAsync(Order order, int languageId, string attachmentFilePath = null, string attachmentFileName = null); /// /// Sends an order cancelled notification to a customer /// /// Order instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderCancelledCustomerNotificationAsync(Order order, int languageId); /// /// Sends an order cancelled notification to a vendor /// /// Order instance /// Vendor instance /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderCancelledVendorNotificationAsync(Order order, Vendor vendor, int languageId); /// /// Sends an order refunded notification to a store owner /// /// Order instance /// Amount refunded /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderRefundedStoreOwnerNotificationAsync(Order order, decimal refundedAmount, int languageId); /// /// Sends an order refunded notification to a customer /// /// Order instance /// Amount refunded /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendOrderRefundedCustomerNotificationAsync(Order order, decimal refundedAmount, int languageId); /// /// Sends a new order note added notification to a customer /// /// Order note /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendNewOrderNoteAddedCustomerNotificationAsync(OrderNote orderNote, int languageId); /// /// Sends a "Recurring payment cancelled" notification to a store owner /// /// Recurring payment /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendRecurringPaymentCancelledStoreOwnerNotificationAsync(RecurringPayment recurringPayment, int languageId); /// /// Sends a "Recurring payment cancelled" notification to a customer /// /// Recurring payment /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendRecurringPaymentCancelledCustomerNotificationAsync(RecurringPayment recurringPayment, int languageId); /// /// Sends a "Recurring payment failed" notification to a customer /// /// Recurring payment /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendRecurringPaymentFailedCustomerNotificationAsync(RecurringPayment recurringPayment, int languageId); #endregion #region Newsletter workflow /// /// Sends a newsletter subscription activation message /// /// Newsletter subscription /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendNewsLetterSubscriptionActivationMessageAsync(NewsLetterSubscription subscription); /// /// Sends a newsletter subscription deactivation message /// /// Newsletter subscription /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendNewsLetterSubscriptionDeactivationMessageAsync(NewsLetterSubscription subscription); #endregion #region Send a message to a friend /// /// Sends "email a friend" message /// /// Customer instance /// Message language identifier /// Product instance /// Customer's email /// Friend's email /// Personal message /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendProductEmailAFriendMessageAsync(Customer customer, int languageId, Product product, string customerEmail, string friendsEmail, string personalMessage); /// /// Sends wishlist "email a friend" message /// /// Customer /// Message language identifier /// Customer's email /// Friend's email /// Personal message /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendWishlistEmailAFriendMessageAsync(Customer customer, int languageId, string customerEmail, string friendsEmail, string personalMessage); #endregion #region Return requests /// /// Sends 'New Return Request' message to a store owner /// /// Return request /// Order item /// Order /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendNewReturnRequestStoreOwnerNotificationAsync(ReturnRequest returnRequest, OrderItem orderItem, Order order, int languageId); /// /// Sends 'New Return Request' message to a customer /// /// Return request /// Order item /// Order /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendNewReturnRequestCustomerNotificationAsync(ReturnRequest returnRequest, OrderItem orderItem, Order order); /// /// Sends 'Return Request status changed' message to a customer /// /// Return request /// Order item /// Order /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendReturnRequestStatusChangedCustomerNotificationAsync(ReturnRequest returnRequest, OrderItem orderItem, Order order); #endregion #region Forum Notifications /// /// Sends a forum subscription message to a customer /// /// Customer instance /// Forum Topic /// Forum /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendNewForumTopicMessageAsync(Customer customer, ForumTopic forumTopic, Forum forum, int languageId); /// /// Sends a forum subscription message to a customer /// /// Customer instance /// Forum post /// Forum Topic /// Forum /// Friendly (starts with 1) forum topic page to use for URL generation /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendNewForumPostMessageAsync(Customer customer, ForumPost forumPost, ForumTopic forumTopic, Forum forum, int friendlyForumTopicPageIndex, int languageId); /// /// Sends a private message notification /// /// Private message /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendPrivateMessageNotificationAsync(PrivateMessage privateMessage, int languageId); #endregion #region Misc /// /// Sends 'New vendor account submitted' message to a store owner /// /// Customer /// Vendor /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendNewVendorAccountApplyStoreOwnerNotificationAsync(Customer customer, Vendor vendor, int languageId); /// /// Sends 'Vendor information change' message to a store owner /// /// Vendor /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendVendorInformationChangeStoreOwnerNotificationAsync(Vendor vendor, int languageId); /// /// Sends a product review notification message to a store owner /// /// Product review /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendProductReviewStoreOwnerNotificationMessageAsync(ProductReview productReview, int languageId); /// /// Sends a product review reply notification message to a customer /// /// Product review /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendProductReviewReplyCustomerNotificationMessageAsync(ProductReview productReview, int languageId); /// /// Sends a gift card notification /// /// Gift card /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendGiftCardNotificationAsync(GiftCard giftCard, int languageId); /// /// Sends a "quantity below" notification to a store owner /// /// Product /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendQuantityBelowStoreOwnerNotificationAsync(Product product, int languageId); /// /// Sends a "quantity below" notification to a store owner /// /// Attribute combination /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendQuantityBelowStoreOwnerNotificationAsync(ProductAttributeCombination combination, int languageId); /// /// Sends a "quantity below" notification to a vendor /// /// Product /// Vendor /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendQuantityBelowVendorNotificationAsync(Product product, Vendor vendor, int languageId); /// /// Sends a "quantity below" notification to a vendor /// /// Attribute combination /// Vendor /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendQuantityBelowVendorNotificationAsync(ProductAttributeCombination combination, Vendor vendor, int languageId); /// /// Sends a "new VAT submitted" notification to a store owner /// /// Customer /// Received VAT name /// Received VAT address /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendNewVatSubmittedStoreOwnerNotificationAsync(Customer customer, string vatName, string vatAddress, int languageId); /// /// Sends a blog comment notification message to a store owner /// /// Blog comment /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendBlogCommentStoreOwnerNotificationMessageAsync(BlogComment blogComment, int languageId); /// /// Sends a news comment notification message to a store owner /// /// News comment /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendNewsCommentStoreOwnerNotificationMessageAsync(NewsComment newsComment, int languageId); /// /// Sends a 'Back in stock' notification message to a customer /// /// Subscription /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendBackInStockNotificationAsync(BackInStockSubscription subscription, int languageId); /// /// Sends "contact us" message /// /// Message language identifier /// Sender email /// Sender name /// Email subject. Pass null if you want a message template subject to be used. /// Email body /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendContactUsMessageAsync(int languageId, string senderEmail, string senderName, string subject, string body); /// /// Sends "contact vendor" message /// /// Vendor /// Message language identifier /// Sender email /// Sender name /// Email subject. Pass null if you want a message template subject to be used. /// Email body /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task> SendContactVendorMessageAsync(Vendor vendor, int languageId, string senderEmail, string senderName, string subject, string body); /// /// Sends a test email /// /// Message template identifier /// Send to email /// Tokens /// Message language identifier /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task SendTestEmailAsync(int messageTemplateId, string sendToEmail, List tokens, int languageId); #endregion #region Common /// /// Send notification /// /// Message template /// Email account /// Language identifier /// Tokens /// Recipient email address /// Recipient name /// Attachment file path /// Attachment file name /// "Reply to" email /// "Reply to" name /// Sender email. If specified, then it overrides passed "emailAccount" details /// Sender name. If specified, then it overrides passed "emailAccount" details /// Subject. If specified, then it overrides subject of a message template /// A value indicating whether to ignore the delay before sending message /// /// A task that represents the asynchronous operation /// The task result contains the queued email identifier /// Task SendNotificationAsync(MessageTemplate messageTemplate, EmailAccount emailAccount, int languageId, IList tokens, string toEmailAddress, string toName, string attachmentFilePath = null, string attachmentFileName = null, string replyToEmailAddress = null, string replyToName = null, string fromEmail = null, string fromName = null, string subject = null, bool ignoreDelayBeforeSend = false); #endregion }