Skip to content

Instantly share code, notes, and snippets.

View mesuttalebi's full-sized avatar

Mesut Talebi mesuttalebi

View GitHub Profile
@mesuttalebi
mesuttalebi / Impersonate.cs
Created October 19, 2019 12:56
Imporsonation using Asp.net mvc 5 Identity
[Authorize(Roles = "Administrator")]
public ActionResult Impersonate(string email)
{
var impersonatedUser = UserManager.FindByEmail(email);
var impersonatedIdentity = UserManager.CreateIdentity(impersonatedUser, DefaultAuthenticationTypes.ApplicationCookie);
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = false }, impersonatedIdentity);
return RedirectToAction("Index", "Home");
@mesuttalebi
mesuttalebi / ClientMessageInspectorInjector.cs
Created October 18, 2019 12:23
ClientMessageInspectorInjector
using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
namespace Helper
{
public static class ClientMessageInspectorInjector
{
@mesuttalebi
mesuttalebi / DeleteRange.cs
Created March 12, 2019 11:31
delete range repository
public void DeleteWhere(Expression<Func<T, bool>> filter)
{
var query = DbSet.Where(filter);
string selectSql = query.ToString();
string deleteSql = "DELETE [Extent1] " + selectSql.Substring(selectSql.IndexOf("FROM"));
var internalQuery = query.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance).Where(field => field.Name == "_internalQuery").Select(field => field.GetValue(query)).First();
var objectQuery = internalQuery.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance).Where(field => field.Name == "_objectQuery").Select(field => field.GetValue(internalQuery)).First() as ObjectQuery;
var parameters = objectQuery.Parameters.Select(p => new SqlParameter(p.Name, p.Value)).ToArray();
@mesuttalebi
mesuttalebi / DynamicPredicateBuilder.cs
Created January 29, 2019 04:56
Dynamic Predicate Builder
// TODO: Move to Infrastructıre.
public static class PredicateBuilder
{
public static Expression<Func<T, bool>> True<T>() { return f => true; }
public static Expression<Func<T, bool>> False<T>() { return f => false; }
public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2)
{
var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
namespace AcerPlatformV2.Business.Services
{
public class TransactionService : ITransactionService
{
private IDbContextTransaction _transaction;
private readonly IUnitOfWork _unitOfWork;
public TransactionService(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
@mesuttalebi
mesuttalebi / CustomClaimsPrincipalFactory.cs
Created November 12, 2018 07:06
CustomClaimsPrincipalFactory
// <copyright file="CustomClaimsPrincipalFactory.cs" company="">
// Copyright (c)
// </copyright>
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
using Platform.Business.Interfaces;
using Platform.Domain.Entities;
@mesuttalebi
mesuttalebi / JsonStringModelBinder.cs
Created June 21, 2018 08:33
A ModelBinder to convert a JsonString to List (has dependency on NewtonSoft.Json)
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Newtonsoft.Json;
using System;
using System.Threading.Tasks;
namespace AcerPlatformV2.Presentation.Helpers
{
/// <summary>
/// This model binder resolve a JsonString to A List Of T
/// </summary>
@mesuttalebi
mesuttalebi / Jquery Validator Parse After Ajax Load.js
Created December 17, 2016 10:40
Jquery.validator.unbostrusive.parse form after ajax load
$(document).on('click', 'button.save', function (event) {
$.validator.unobtrusive.parse('#InspectionScopeForm');
});
@mesuttalebi
mesuttalebi / GenericRepository.cs
Last active August 29, 2015 14:22
Generic Repository Interface and class (used in repository pattern)
public class GenericRepository<T> : IRepository<T> where T: class
{
private readonly DbContext _context;
private IDbSet<T> dbSet;
public GenericRepository(DbContext context)
{
_context = context;
}
@mesuttalebi
mesuttalebi / GetAllIncluding()
Created February 25, 2015 14:11
Entity Framework Eager loading data with selective properties. A dynamic way to add context.entities.Include(x=> x.propery1).Include(x=> x.property2)....
public IQueryable<Entity> GetAllIncluding(params Expression<Func<Entity, object>>[] includedProperties)
{
IQueryable<Entity> query = db.Groups;
foreach (var includedProperty in includedProperties)
{
query = query.Include(includedProperty);
}
return query;
}