using System.Globalization; using CMSMicroservice.Protobuf.Protos; namespace BackOffice.BFF.Application.Common.Mappings; public class GeneralMapping : IRegister { void IRegister.Register(TypeAdapterConfig config) { config.NewConfig() .MapWith(src => decimal.Parse(src)); config.NewConfig() .MapWith(src => src.ToString("R", new CultureInfo("en-us"))); config.NewConfig() .MapWith(src => src == null ? string.Empty : src.Value.ToString("R", new CultureInfo("en-us"))); config.NewConfig() .MapWith(src => string.IsNullOrEmpty(src) ? null : decimal.Parse(src)); config.NewConfig() .MapWith(src => src == Guid.Empty ? string.Empty : src.ToString()); config.NewConfig() .MapWith(src => string.IsNullOrEmpty(src) ? Guid.Empty : Guid.Parse(src)); config.NewConfig() .MapWith(src => string.IsNullOrEmpty(src) ? null : Guid.Parse(src)); config.NewConfig() .MapWith(src => src.ToDateTime()); config.NewConfig() .MapWith(src => src == null ? null : src.ToDateTime()); config.NewConfig() .MapWith(src => Timestamp.FromDateTime(DateTime.SpecifyKind(src, DateTimeKind.Utc))); config.NewConfig() .MapWith(src => src.HasValue ? Timestamp.FromDateTime(DateTime.SpecifyKind(src.Value, DateTimeKind.Utc)) : null); config.NewConfig() .MapWith(src => src.ToTimeSpan()); config.NewConfig() .MapWith(src => src == null ? null : src.ToTimeSpan()); config.NewConfig() .MapWith(src => Duration.FromTimeSpan(src)); config.NewConfig() .MapWith(src => src.HasValue ? Duration.FromTimeSpan(src.Value) : null); config.NewConfig() .MapWith(src => src.HasValue ? src.Value.DateTime : (DateTime?)null); config.Default .UseDestinationValue(member => member.SetterModifier == AccessModifier.None && member.Type.IsGenericType && member.Type.GetGenericTypeDefinition() == typeof(Google.Protobuf.Collections.RepeatedField<>)); config.NewConfig() .MapWith(src => src.ToByteArray()); config.NewConfig() .MapWith(src => Google.Protobuf.ByteString.CopyFrom(src)); // نگاشت وضعیت پرداخت پروتوباف به bool (فقط Success = true) config.NewConfig() .MapWith(src => src == PaymentStatus.Success); } }