Exemplo n.º 1
0
        private static void DeleteFromDb(object entity)
        {
            var type = EntityMapper.TypeOf(entity);

            DB.Context.GetTable(type).DeleteOnSubmit(entity);
            DB.Context.SubmitChanges();
        }
Exemplo n.º 2
0
        private static void InsertToDb(object entity)
        {
            var type = EntityMapper.TypeOf(entity);

            DB.Context.GetTable(type).InsertOnSubmit(entity);
            DB.Context.SubmitChanges();
        }
Exemplo n.º 3
0
            private IEnumerable <object> GetCollectionOf(Entity type)
            {
                var t = EntityMapper.TypeOf(type);
                // next is like
                // Users =
                // (from e in DB.Context.Users.ToList()
                // where uc.CanRetrieve(e)
                // select e).ToList();

                var queryable = DB.Context.GetType().GetProperty(EntityMapper.CollectionName(type)).GetValue(DB.Context, null);
                var pe        = Expression.Parameter(t, "p");

                var selector   = Expression.Lambda(pe, pe);
                var selectCall = Expression.Call(typeof(Queryable), "Select", new[] { t, t }, Expression.Constant(queryable), selector);

                var select = Expression.Lambda(selectCall).Compile();
                var all    = select.DynamicInvoke();
                var list   = MakeGenericList(type, all);

                // filter by right
                var canCall   = Expression.Call(Expression.Constant(uc), typeof(UserController).GetMethod("CanRetrieve"), pe);
                var predicate = Expression.Lambda(canCall, pe);
                var whereCall = Expression.Call(typeof(Enumerable), "Where", new[] { t }, Expression.Constant(list), predicate);

                dynamic result   = Expression.Lambda(whereCall).Compile().DynamicInvoke();
                var     filtered = Enumerable.ToList(result);

                return(filtered);
            }
Exemplo n.º 4
0
        private static object MakeGenericList(Entity item, object initData = null)
        {
            var d1 = typeof(List <>);

            Type[] typeArgs = { EntityMapper.TypeOf(item) };
            var    makeme   = d1.MakeGenericType(typeArgs);

            return(initData == null?
                   Activator.CreateInstance(makeme) :
                       Activator.CreateInstance(makeme, initData));
        }
Exemplo n.º 5
0
        /// <summary>
        /// Создает сущность.
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public object Create(Entity type)
        {
            var T      = EntityMapper.TypeOf(type);
            var entity = Activator.CreateInstance(T);

            switch (type)
            {
            //case Entity.Settlement:
            //    break;
            case Entity.Street:
                ((Street)entity).Settlement = Current.Settlement ?? null;
                ((Street)entity).StreetType = Current.StreetType ?? null;
                break;

            case Entity.House:
                ((House)entity).Street = Current.Street ?? null;
                break;

            case Entity.Flat:
                ((Flat)entity).House    = Current.House ?? null;
                ((Flat)entity).FlatType = Current.FlatType ?? null;
                break;

            //case Entity.StreetType:
            //    break;
            //case Entity.FlatType:
            //    break;
            case Entity.Meter:
                ((Meter)entity).MeterType    = Current.MeterType ?? null;
                ((Meter)entity).Registration = Current.Registration ?? null;
                break;

            //case Entity.MeterType:
            //    break;
            case Entity.Reading:
                ((Reading)entity).Meter = Current.Meter ?? null;
                ((Reading)entity).Date  = DateTime.Today;
                break;

            case Entity.Payment:
                ((Payment)entity).Registration = Current.Registration ?? null;
                ((Payment)entity).Service      = Current.Service ?? null;
                ((Payment)entity).Date         = DateTime.Today;
                ((Payment)entity).TargetMonth  = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
                break;

            case Entity.Rate:
                ((Rate)entity).BeginDate = DateTime.Today;
                break;

            //case Entity.Benefit:
            //    break;
            case Entity.Service:
                ((Service)entity).ServiceType = Current.ServiceType ?? null;
                break;

            //case Entity.ServiceType:
            //    break;
            //case Entity.Unit:
            //    break;
            case Entity.Registration:
                ((Registration)entity).PaymentStartDate = DateTime.Today;
                ((Registration)entity).Flat             = Current.Flat ?? null;
                ((Registration)entity).Payer            = Current.Payer ?? null;
                break;

            case Entity.Payer:
                ((Payer)entity).User = Current.User ?? null;
                ((Payer)entity).Sex  = 1;    // male
                if (!uc.IsAdminLoggedIn)
                {
                    ((Payer)entity).User = uc.CurrentUser;
                }
                break;

            case Entity.User:
                ((User)entity).Salt        = PasswordMaker.GenerateSalt();
                ((User)entity).UserGroupID = (byte)uc.GetRegularUserGroup();
                break;
                //case Entity.UserGroup:
                //    break;
            }

            return(entity);
        }