public HabitsController( BaseTranslator <Habit, HabitDto> translator, BaseValidator <Habit> validator, HabitRepository repo, ValidationErrorTranslator errorTranslator) : base("GetHabit", translator, validator, repo, errorTranslator) { }
public HabitCompletionsController( BaseTranslator <HabitCompletion, HabitCompletionDto> translator, BaseValidator <HabitCompletion> validator, HabitCompletionRepository repo, ValidationErrorTranslator errorTranslator) : base("GetHabitCompletion", translator, validator, repo, errorTranslator) { }
public BaseController(string getSingularRouteName, BaseTranslator <TModel, TDto> translator, BaseValidator <TModel> validator, BaseRepository <TModel> repo, ValidationErrorTranslator errorTranslator) { _getSingularRouteName = getSingularRouteName; _validator = validator; _translator = translator; _repo = repo; _errorTranslator = errorTranslator; }
private static TType TranslateProperties <TType>(TType source, TType target, IEnumerable <string> propertiesToTranslate) { if ((source == null) || (target == null)) { return(target); } var properties = source.GetType().GetProperties(); properties.Where(i => i.PropertyType.GetTypeInfo().IsPrimitive || i.PropertyType.GetTypeInfo().IsValueType || BaseTranslator.NonStructPrimitiveTypes.Contains(i.PropertyType)) .Where(i => propertiesToTranslate.Contains(i.Name)).ForEach(property => { property.SetValue(target, BaseTranslator.GetCopy(property.GetValue(source))); }); return(target); }
/// <summary> /// Perform cloning of entity by calling spcified definitions /// </summary> /// <param name="unitOfWork">Unit of work instance for creating requests to DB</param> /// <param name="entity">Instance of entity which will be cloned</param> /// <param name="beforeAddAction">Optional additional action which can be called before entity is added to db set</param> /// <param name="cloningMode"></param> /// <returns>Copy of entity</returns> public TEntity PerformCloning(ITranslationUnitOfWork unitOfWork, TEntity entity, Action <TEntity> beforeAddAction = null, CloningMode cloningMode = CloningMode.Cloning) { this.cloningMode = cloningMode; if (entity == null) { return(null); } this.unitOfWork = unitOfWork; if (this.entitySet == null) { this.entitySet = unitOfWork.GetSet <TEntity>(); } source = entity; if (cloningMode == CloningMode.Cloning) { target = Activator.CreateInstance <TEntity>(); BaseTranslator.TranslateWithExceptions(entity, target, foreignKeys.Select(i => i.Name)); entityPropsDefs.PrimaryKeysDefinition.Where(i => !i.IsPrimaryAndForeign && i.Type == typeof(Guid)).ForEach(i => { target.SetPropertyValue(i.Name, Guid.NewGuid()); }); } CloningDefinition(); if (cloningMode == CloningMode.Cloning) { TranslateProperties(entity, target, foreignKeys.Select(i => i.Name).Except(affectedForeignKeys)); beforeAddAction?.Invoke(target); this.entitySet.Add(target); } if (cloningMode == CloningMode.Cloning || cloningMode == CloningMode.TreeCreating) { unitOfWork.TranslationCloneCache.AddToCachedSet(source, target); } if (cloningMode == CloningMode.Deleting) { this.entitySet.Remove(source); } return(target); }
public TranslatorOptionLookup(BaseTranslator translator) { Name = translator.Name; AccessibleName = translator.AccessibleName; }