using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Security.Claims; using System.Threading.Tasks; namespace Timeline.Services.Mapper { public static class MapperExtensions { public static async Task> MapListAsync(this IMapper mapper, IEnumerable source, IUrlHelper urlHelper, ClaimsPrincipal? user) { var result = new List(); foreach (var s in source) { result.Add(await mapper.MapAsync(s, urlHelper, user)); } return result; } public static Task MapAsync(this IGenericMapper mapper, object source, IUrlHelper urlHelper, ClaimsPrincipal? user) { var method = typeof(IGenericMapper).GetMethod(nameof(IGenericMapper.MapAsync)); var m = method!.MakeGenericMethod(source.GetType(), typeof(TDestination))!; return (Task)m.Invoke(mapper, new object?[] { source, urlHelper, user })!; } public static async Task> MapListAsync(this IGenericMapper mapper, IEnumerable source, IUrlHelper urlHelper, ClaimsPrincipal? user) { var result = new List(); foreach (var s in source) { result.Add(await mapper.MapAsync(s, urlHelper, user)); } return result; } public static async Task> MapListAsync(this IGenericMapper mapper, IEnumerable source, IUrlHelper urlHelper, ClaimsPrincipal? user) { var result = new List(); foreach (var s in source) { result.Add(await mapper.MapAsync(s, urlHelper, user)); } return result; } } }