private async Task HandlePendingApprovalEmails(RMA rma, List <RMALineItem> rmaLineItems, HSOrderWorksheet worksheet) { IEnumerable <RMALineItem> pendingApprovalLineItemsWithNewComments = rmaLineItems .Where(li => li.Status == RMALineItemStatus.Processing) .Where(li => li.Comment != rma.LineItems.FirstOrDefault(item => item.ID == li.ID).Comment); if (!pendingApprovalLineItemsWithNewComments.Any()) { return; } LineItemStatusChanges lineItemStatusChanges = new LineItemStatusChanges() { Status = rma.Type == RMAType.Cancellation ? LineItemStatus.CancelRequested : LineItemStatus.ReturnRequested, Changes = new List <LineItemStatusChange>() }; foreach (var rmaLineItem in pendingApprovalLineItemsWithNewComments) { lineItemStatusChanges.Changes.Add(new LineItemStatusChange() { ID = rmaLineItem.ID, Quantity = rmaLineItem.QuantityProcessed, Comment = rmaLineItem.Comment, QuantityRequestedForRefund = rmaLineItem.QuantityRequested }); } List <HSLineItem> lineItemsChanged = worksheet.LineItems.Where(li => lineItemStatusChanges.Changes.Select(li => li.ID).Contains(li.ID)).ToList(); Supplier supplier = await _oc.Suppliers.GetAsync(rma.SupplierID); EmailDisplayText emailText = new EmailDisplayText() { EmailSubject = $"New message available from {supplier.Name}", DynamicText = $"{supplier.Name} has contacted you regarding your request for {rma.Type.ToString().ToLower()}", DynamicText2 = "The following items have new messages" }; await _sendgridService.SendLineItemStatusChangeEmail(worksheet.Order, lineItemStatusChanges, lineItemsChanged, worksheet.Order.FromUser.FirstName, worksheet.Order.FromUser.LastName, worksheet.Order.FromUser.Email, emailText); }
public async Task SendLineItemStatusChangeEmailMultipleRcpts(HSOrder order, LineItemStatusChanges lineItemStatusChanges, List <HSLineItem> lineItems, List <EmailAddress> tos, EmailDisplayText lineItemEmailDisplayText) { var productsList = CreateTemplateProductList(lineItems, lineItemStatusChanges); var templateData = new EmailTemplate <LineItemStatusChangeData>() { Data = new LineItemStatusChangeData { FirstName = "", LastName = "", Products = productsList, DateSubmitted = order.DateSubmitted.ToString(), OrderID = order.ID, Comments = order.Comments }, Message = new EmailDisplayText { EmailSubject = lineItemEmailDisplayText?.EmailSubject, DynamicText = lineItemEmailDisplayText?.DynamicText, DynamicText2 = lineItemEmailDisplayText?.DynamicText2, } }; await SendSingleTemplateEmailMultipleRcpts(_settings?.SendgridSettings?.FromEmail, tos, _settings?.SendgridSettings?.LineItemStatusChangeTemplateID, templateData); }
public async Task SendLineItemStatusChangeEmail(LineItemStatusChange lineItemStatusChange, List <HSLineItem> lineItems, string firstName, string lastName, string email, EmailDisplayText lineItemEmailDisplayText) { var productsList = lineItems.Select(SendgridMappers.MapLineItemToProduct).ToList(); var templateData = new EmailTemplate <LineItemStatusChangeData>() { Data = new LineItemStatusChangeData { FirstName = firstName, LastName = lastName, Products = productsList, }, Message = new EmailDisplayText() { EmailSubject = lineItemEmailDisplayText?.EmailSubject, DynamicText = lineItemEmailDisplayText?.DynamicText, DynamicText2 = lineItemEmailDisplayText?.DynamicText2 } }; await SendSingleTemplateEmail(_settings?.SendgridSettings?.FromEmail, email, _settings?.SendgridSettings?.LineItemStatusChangeTemplateID, templateData); }
public async Task SendLineItemStatusChangeEmail(HSOrder order, LineItemStatusChanges lineItemStatusChanges, List <HSLineItem> lineItems, string firstName, string lastName, string email, EmailDisplayText lineItemEmailDisplayText) { var productsList = CreateTemplateProductList(lineItems, lineItemStatusChanges); EmailTemplate <LineItemStatusChangeData> templateData = new EmailTemplate <LineItemStatusChangeData>() { Data = new LineItemStatusChangeData { FirstName = firstName, LastName = lastName, Products = productsList, DateSubmitted = order?.DateSubmitted?.ToString(), OrderID = order.ID, Comments = order.Comments, TrackingNumber = lineItemStatusChanges.SuperShipment?.Shipment?.TrackingNumber }, Message = new EmailDisplayText { EmailSubject = lineItemEmailDisplayText?.EmailSubject, DynamicText = lineItemEmailDisplayText?.DynamicText, DynamicText2 = lineItemEmailDisplayText?.DynamicText2 } }; await SendSingleTemplateEmail(_settings?.SendgridSettings?.FromEmail, email, _settings?.SendgridSettings?.LineItemStatusChangeTemplateID, templateData); }