Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }