Exemple #1
0
 public HabitsController(
     BaseTranslator <Habit, HabitDto> translator,
     BaseValidator <Habit> validator,
     HabitRepository repo,
     ValidationErrorTranslator errorTranslator) :
     base("GetHabit", translator, validator, repo, errorTranslator)
 {
 }
Exemple #2
0
 public HabitCompletionsController(
     BaseTranslator <HabitCompletion, HabitCompletionDto> translator,
     BaseValidator <HabitCompletion> validator,
     HabitCompletionRepository repo,
     ValidationErrorTranslator errorTranslator) :
     base("GetHabitCompletion", translator, validator, repo, errorTranslator)
 {
 }
Exemple #3
0
 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;
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
 public TranslatorOptionLookup(BaseTranslator translator)
 {
     Name           = translator.Name;
     AccessibleName = translator.AccessibleName;
 }