Files
moadiran/Back/Common/ExtentionMethods.cs
mmrbnjd 505adf6ab2 ...
2025-01-23 02:44:11 +03:30

139 lines
5.9 KiB
C#

using Microsoft.EntityFrameworkCore;
using static Back.Common.ExclusiveAttribute;
using System.ComponentModel.DataAnnotations;
using System.Data;
using System.Globalization;
using System.Reflection;
using System.Security.Cryptography;
using Shared.DTOs;
namespace Back.Common
{
public static class ExtentionMethods
{
public static List<T> Clone<T>(this IList<T> listToClone) where T : ICloneable
{
return listToClone.Select(item => (T)item.Clone()).ToList();
}
public static string GetEnumDisplayName(this Enum enumType)
{
return enumType.GetType().GetMember(enumType.ToString())
.First()
.GetCustomAttribute<DisplayAttribute>()
.Name;
}
public static string GetEnumHexColor(this Enum enumType)
{
return enumType.GetType().GetMember(enumType.ToString())
.First()
.GetCustomAttribute<ColorAttribute>()
._ColorHex;
}
public static string encrypted(this string txt)
{
HashAlgorithm hash = new MD5CryptoServiceProvider();
var bytes = System.Text.Encoding.UTF8.GetBytes(txt);
var hashedBytes = hash.ComputeHash(bytes);
string res = BitConverter.ToString(hashedBytes).Replace("-", string.Empty);
return res;
}
public static string ConvertMiladiToShamsi(this DateTime date)
{
PersianCalendar PersianCal = new PersianCalendar();
return PersianCal.GetYear(date).ToString("0000") +
PersianCal.GetMonth(date).ToString("00") +
PersianCal.GetDayOfMonth(date).ToString("00")
;
}
public static string ConvertMiladiToShamsiAndGetYearMonth(this DateTime date)
{
PersianCalendar PersianCal = new PersianCalendar();
return
PersianCal.GetYear(date).ToString("0000") +
PersianCal.GetMonth(date).ToString("00");
}
public static string ConvertMiladiToShamsiByTime(this DateTime date)
{
PersianCalendar PersianCal = new PersianCalendar();
return PersianCal.GetYear(date).ToString("0000") +
PersianCal.GetMonth(date).ToString("00") +
PersianCal.GetDayOfMonth(date).ToString("00") +
date.Hour.ToString("00") + date.Minute.ToString("00") + date.Second.ToString("00")
;
}
public static string ShamciToFormatShamci(this string str)
{
if (string.IsNullOrEmpty(str)) return "";
return str.Substring(0, 4) + "/" + str.Substring(4, 2) + "/" + str.Substring(6, 2);
}
public static DateTime ToMiladi(this string value)
{
PersianCalendar p = new PersianCalendar();
return p.ToDateTime(Convert.ToInt32(value.Substring(0, 4)), Convert.ToInt32(value.Substring(4, 2)), Convert.ToInt32(value.Substring(6, 2)), DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond);
}
public static DateTime ToMiladiByTime(this string value)
{
PersianCalendar p = new PersianCalendar();
return p.ToDateTime(Convert.ToInt32(value.Substring(0, 4)), Convert.ToInt32(value.Substring(4, 2)), Convert.ToInt32(value.Substring(6, 2)), Convert.ToInt32(value.Substring(8, 2)), Convert.ToInt32(value.Substring(10, 2)), Convert.ToInt32(value.Substring(12, 2)), 0);
}
public static async Task<PagingDto<T>> Paging<T>(this IQueryable<T> values, int pageId, int take)
{
if (/*values.Count()<1000 && */pageId == 0 && take == 0)
{
return new PagingDto<T>(values.Count(), 1, await values.ToListAsync());
}
else
{
int skip = (pageId - 1) * take;
int rowCount = values.Count();
int PageCount = rowCount % take == 0 ? rowCount / take : rowCount / take + 1;
return new PagingDto<T>(rowCount, PageCount, await values.Skip(skip).Take(take).ToListAsync());
}
}
public static async Task<PagingDto<T>> Paging<T>(this IEnumerable<T> values, int pageId, int take)
{
if (/*values.Count()<1000 && */pageId == 0 && take == 0)
{
return new PagingDto<T>(values.Count(), 1, values.ToList());
}
else
{
int skip = (pageId - 1) * take;
int rowCount = values.Count();
int PageCount = rowCount % take == 0 ? rowCount / take : rowCount / take + 1;
return new PagingDto<T>(rowCount, PageCount, values.Skip(skip).Take(take).ToList());
}
}
public static System.Linq.Expressions.Expression<Func<TEntity, bool>> GetFunc<TEntity>(string Fild, string Value)
{
Type type = typeof(TEntity);
// System.Linq.Expressions.Expression<Func<TEntity, bool>> convert = s => type.GetProperty(Fild) != null && s.GetType().GetProperty(Fild).GetValue(s) == Value;
return Entity => type.GetProperty(Fild) != null && Entity.GetType().GetProperty(Fild).GetValue(Entity) == Value;
}
public static DataTable ConvertStringBase64toDataTable(this string value, string SheetName = null)
{
//try
//{
// MemoryStream stream1 = new MemoryStream(Convert.FromBase64String(value));
// WorkBook workbook = WorkBook.Load(stream1);
// WorkSheet sheet = SheetName == null ? workbook.DefaultWorkSheet : workbook.GetWorkSheet(SheetName);
// return sheet.ToDataTable(true);
//}
//catch (Exception)
//{
return new DataTable();
// }
}
}
}