initial commit
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
namespace Indotalent.ConfigBackEnd.Extensions;
|
||||
|
||||
using Indotalent.Shared.Models;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using System.Text.Json;
|
||||
|
||||
public static class GenericExtensions
|
||||
{
|
||||
public static bool IsNullOrEmpty<T>(this IEnumerable<T>? enumerable)
|
||||
{
|
||||
return enumerable == null || !enumerable.Any();
|
||||
}
|
||||
|
||||
public static T? ToObject<T>(this string json)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(json)) return default;
|
||||
|
||||
return JsonSerializer.Deserialize<T>(json, new JsonSerializerOptions
|
||||
{
|
||||
PropertyNameCaseInsensitive = true
|
||||
});
|
||||
}
|
||||
|
||||
public static string ToJson<T>(this T obj)
|
||||
{
|
||||
return JsonSerializer.Serialize(obj);
|
||||
}
|
||||
|
||||
public static TDestination MapTo<TDestination>(this object source)
|
||||
where TDestination : new()
|
||||
{
|
||||
var json = JsonSerializer.Serialize(source);
|
||||
return JsonSerializer.Deserialize<TDestination>(json) ?? new TDestination();
|
||||
}
|
||||
|
||||
public static string ToCurrency(this decimal value, string culture = "id-ID")
|
||||
{
|
||||
return value.ToString("C0", new System.Globalization.CultureInfo(culture));
|
||||
}
|
||||
|
||||
public static bool IsBetween<T>(this T value, T low, T high) where T : IComparable<T>
|
||||
{
|
||||
return value.CompareTo(low) >= 0 && value.CompareTo(high) <= 0;
|
||||
}
|
||||
|
||||
public static IResult ToApiResponse<T>(this PagedList<T> result)
|
||||
{
|
||||
return Results.Ok(new ApiResponse<List<T>>
|
||||
{
|
||||
IsSuccess = true,
|
||||
StatusCode = 200,
|
||||
Value = result.Value,
|
||||
Pagination = new PaginationMetadata
|
||||
{
|
||||
Count = result.Count,
|
||||
Top = result.Top,
|
||||
Skip = result.Skip
|
||||
},
|
||||
ServerTime = DateTime.UtcNow
|
||||
});
|
||||
}
|
||||
|
||||
public static IResult ToApiResponse<T>(this T? result, string? message = null, int statusCode = 200)
|
||||
{
|
||||
if (result == null)
|
||||
{
|
||||
return Results.NotFound(new ApiResponse<T>
|
||||
{
|
||||
IsSuccess = false,
|
||||
StatusCode = 404,
|
||||
Message = message ?? "Data not found",
|
||||
ServerTime = DateTime.UtcNow
|
||||
});
|
||||
}
|
||||
|
||||
return Results.Ok(new ApiResponse<T>
|
||||
{
|
||||
IsSuccess = true,
|
||||
StatusCode = statusCode,
|
||||
Message = message,
|
||||
Value = result,
|
||||
Pagination = null,
|
||||
ServerTime = DateTime.UtcNow
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user