public void AddReturnRequestTokens(LiquidObject liquidObject, ReturnRequest returnRequest, Order order) { var liquidReturnRequest = new LiquidReturnRequest(returnRequest, order); liquidObject.ReturnRequest = liquidReturnRequest; _eventPublisher.EntityTokensAdded(returnRequest, liquidReturnRequest, liquidObject); }
public async Task AddReturnRequestTokens(LiquidObject liquidObject, ReturnRequest returnRequest, Order order, Language language) { var liquidReturnRequest = new LiquidReturnRequest(returnRequest, order); liquidReturnRequest.Status = returnRequest.ReturnRequestStatus.GetLocalizedEnum(_localizationService, language.Id); liquidReturnRequest.Products = await ProductListToHtmlTable(); liquidReturnRequest.PickupAddressStateProvince = !string.IsNullOrEmpty(returnRequest.PickupAddress.StateProvinceId) ? (await _stateProvinceService.GetStateProvinceById(returnRequest.PickupAddress.StateProvinceId))?.GetLocalized(x => x.Name, language.Id) : ""; liquidReturnRequest.PickupAddressCountry = !string.IsNullOrEmpty(returnRequest.PickupAddress.CountryId) ? (await _countryService.GetCountryById(returnRequest.PickupAddress.CountryId))?.GetLocalized(x => x.Name, language.Id) : ""; async Task <string> ProductListToHtmlTable() { var sb = new StringBuilder(); sb.AppendLine("<table border=\"0\" style=\"width:100%;\">"); sb.AppendLine(string.Format("<tr style=\"text-align:center;\">")); sb.AppendLine(string.Format("<th>{0}</th>", _localizationService.GetResource("Messages.Order.Product(s).Name"))); sb.AppendLine(string.Format("<th>{0}</th>", _localizationService.GetResource("Messages.Order.Product(s).Price"))); sb.AppendLine(string.Format("<th>{0}</th>", _localizationService.GetResource("Messages.Order.Product(s).Quantity"))); sb.AppendLine(string.Format("<th>{0}</th>", _localizationService.GetResource("Messages.Order.Product(s).ReturnReason"))); sb.AppendLine(string.Format("<th>{0}</th>", _localizationService.GetResource("Messages.Order.Product(s).ReturnAction"))); sb.AppendLine("</tr>"); IProductService _productService = _serviceProvider.GetRequiredService <IProductService>(); var currency = await _currencyService.GetCurrencyByCode(order.CustomerCurrencyCode); foreach (var rrItem in returnRequest.ReturnRequestItems) { var orderItem = order.OrderItems.Where(x => x.Id == rrItem.OrderItemId).First(); sb.AppendLine(string.Format("<tr style=\"background-color: {0};text-align: center;\">", _templatesSettings.Color2)); string productName = (await _productService.GetProductById(orderItem.ProductId))?.GetLocalized(x => x.Name, order.CustomerLanguageId); sb.AppendLine("<td style=\"padding: 0.6em 0.4em;text-align: left;\">" + WebUtility.HtmlEncode(productName)); sb.AppendLine("</td>"); string unitPriceStr; if (order.CustomerTaxDisplayType == TaxDisplayType.IncludingTax) { //including tax var unitPriceInclTaxInCustomerCurrency = _currencyService.ConvertCurrency(orderItem.UnitPriceInclTax, order.CurrencyRate); unitPriceStr = _priceFormatter.FormatPrice(unitPriceInclTaxInCustomerCurrency, true, currency, language, true); } else { //excluding tax var unitPriceExclTaxInCustomerCurrency = _currencyService.ConvertCurrency(orderItem.UnitPriceExclTax, order.CurrencyRate); unitPriceStr = _priceFormatter.FormatPrice(unitPriceExclTaxInCustomerCurrency, true, currency, language, false); } sb.AppendLine(string.Format("<td style=\"padding: 0.6em 0.4em;text-align: right;\">{0}</td>", unitPriceStr)); sb.AppendLine(string.Format("<td style=\"padding: 0.6em 0.4em;text-align: center;\">{0}</td>", orderItem.Quantity)); sb.AppendLine(string.Format("<td style=\"padding: 0.6em 0.4em;text-align: center;\">{0}</td>", rrItem.ReasonForReturn)); sb.AppendLine(string.Format("<td style=\"padding: 0.6em 0.4em;text-align: center;\">{0}</td>", rrItem.RequestedAction)); } sb.AppendLine("</table>"); return(sb.ToString()); } liquidObject.ReturnRequest = liquidReturnRequest; await _mediator.EntityTokensAdded(returnRequest, liquidReturnRequest, liquidObject); }