using Microsoft.AspNetCore.Mvc; using PlanTempus.Application.Features.Localization.Services; namespace PlanTempus.Application.Features.Services.Components; public class ServiceDetailPricesViewComponent : ViewComponent { private readonly ILocalizationService _localization; public ServiceDetailPricesViewComponent(ILocalizationService localization) { _localization = localization; } public IViewComponentResult Invoke(string key) { var service = ServiceDetailCatalog.Get(key); var model = new ServiceDetailPricesViewModel { // Data PriceMode = service.PriceMode, SimplePrice = service.SimplePrice, PriceMatrix = service.PriceMatrix, VatRate = service.VatRate, ProductCost = service.ProductCost, Commission = service.Commission, MemberDiscount = service.MemberDiscount, GiftCardPayment = service.GiftCardPayment, LoyaltyPoints = service.LoyaltyPoints, // Labels - Price structure LabelPriceStructure = _localization.Get("services.detail.prices.priceStructure"), LabelSimplePrice = _localization.Get("services.detail.prices.simplePrice"), LabelMatrixPrice = _localization.Get("services.detail.prices.matrixPrice"), LabelPrice = _localization.Get("services.detail.prices.price"), LabelLevel = _localization.Get("services.detail.prices.level"), LabelShortHair = _localization.Get("services.detail.prices.shortHair"), LabelMediumHair = _localization.Get("services.detail.prices.mediumHair"), LabelLongHair = _localization.Get("services.detail.prices.longHair"), LabelExtraLongHair = _localization.Get("services.detail.prices.extraLongHair"), LabelAddLevel = _localization.Get("services.detail.prices.addLevel"), // Labels - Economy LabelEconomy = _localization.Get("services.detail.prices.economy"), LabelVatRate = _localization.Get("services.detail.prices.vatRate"), LabelProductCost = _localization.Get("services.detail.prices.productCost"), LabelCommission = _localization.Get("services.detail.prices.commission"), // Labels - Discounts LabelDiscounts = _localization.Get("services.detail.prices.discounts"), LabelMemberDiscount = _localization.Get("services.detail.prices.memberDiscount"), LabelGiftCardPayment = _localization.Get("services.detail.prices.giftCardPayment"), LabelLoyaltyPoints = _localization.Get("services.detail.prices.loyaltyPoints"), // Toggle labels ToggleYes = _localization.Get("common.yes"), ToggleNo = _localization.Get("common.no") }; return View(model); } } public class ServiceDetailPricesViewModel { // Data public PriceMode PriceMode { get; init; } public required string SimplePrice { get; init; } public required List PriceMatrix { get; init; } public required string VatRate { get; init; } public required string ProductCost { get; init; } public required string Commission { get; init; } public bool MemberDiscount { get; init; } public bool GiftCardPayment { get; init; } public bool LoyaltyPoints { get; init; } // Labels - Price structure public required string LabelPriceStructure { get; init; } public required string LabelSimplePrice { get; init; } public required string LabelMatrixPrice { get; init; } public required string LabelPrice { get; init; } public required string LabelLevel { get; init; } public required string LabelShortHair { get; init; } public required string LabelMediumHair { get; init; } public required string LabelLongHair { get; init; } public required string LabelExtraLongHair { get; init; } public required string LabelAddLevel { get; init; } // Labels - Economy public required string LabelEconomy { get; init; } public required string LabelVatRate { get; init; } public required string LabelProductCost { get; init; } public required string LabelCommission { get; init; } // Labels - Discounts public required string LabelDiscounts { get; init; } public required string LabelMemberDiscount { get; init; } public required string LabelGiftCardPayment { get; init; } public required string LabelLoyaltyPoints { get; init; } // Toggle labels public required string ToggleYes { get; init; } public required string ToggleNo { get; init; } }