Ejemplo n.º 1
0
        public virtual ServiceResult <T> Add(T item)
        {
            var result = Validate(item);

            if (result.HasViolation)
            {
                return(result);
            }
            var editor = item as EditorEntity;

            if (editor != null)
            {
                if (ApplicationContext.CurrentUser != null)
                {
                    editor.CreateBy     = ApplicationContext.CurrentUser.UserID;
                    editor.CreatebyName = ApplicationContext.CurrentUser.UserName;

                    editor.LastUpdateBy     = ApplicationContext.CurrentUser.UserID;
                    editor.LastUpdateByName = ApplicationContext.CurrentUser.UserName;
                }
                editor.CreateDate     = DateTime.Now;
                editor.LastUpdateDate = DateTime.Now;
            }
            CurrentDbSet.Add(item);
            DbContext.SaveChanges();
            return(result);
        }
 public async Task <GameRoom> GetByIdWithIncludedEventAndModeratorsJoinObject(int id)
 {
     return(await CurrentDbSet
            .Include(x => x.Event)
            .ThenInclude(x => x.Moderators)
            .FirstOrDefaultAsync(x => x.Id == id));
 }
Ejemplo n.º 3
0
        public virtual ServiceResult <T> AddRange(params T[] items)
        {
            ServiceResult <T> result = new ServiceResult <T>();

            foreach (var item in items)
            {
                var itemResult = Validate(item);
                if (itemResult.HasViolation)
                {
                    return(itemResult);
                }
                var editor = item as EditorEntity;
                if (editor != null)
                {
                    if (ApplicationContext.CurrentUser != null)
                    {
                        editor.CreateBy     = ApplicationContext.CurrentUser.UserID;
                        editor.CreatebyName = ApplicationContext.CurrentUser.UserName;

                        editor.LastUpdateBy     = ApplicationContext.CurrentUser.UserID;
                        editor.LastUpdateByName = ApplicationContext.CurrentUser.UserName;
                    }
                    editor.CreateDate     = DateTime.Now;
                    editor.LastUpdateDate = DateTime.Now;
                }
            }
            CurrentDbSet.AddRange(items);
            DbContext.SaveChanges();
            return(result);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Assign values to specified property of Model from local DbSet and propagate changes to DGV.
 /// </summary>
 /// <typeparam name="T">Type of Model property</typeparam>
 /// <param name="prop">Name of properrty of Model or Column from dgv</param>
 /// <param name="val">Value</param>
 public void FillDbSetValues <T>(string prop, T val)
 {
     try
     {
         CellValueChanged -= RDataGridView_CellValueChanged;
         foreach (var i in SelectedCells.OfType <DataGridViewCell>().Select(c => c.RowIndex).Where(c => c >= 0).Distinct())
         {
             var m = CurrentDbSet.Where(mm => mm.Id == (int)Rows[i].Cells["Id"].Value).FirstOrDefault();
             if (m == null)
             {
                 continue;
             }
             var setPropValue = m.GetType().GetProperty(prop).GetSetMethod();
             setPropValue.Invoke(m, new object[] { val });
             CurrentDbSet.Update(m);
         }
         SaveChanges();
         Refresh();
         CellValueChanged += RDataGridView_CellValueChanged;
     }
     catch (Exception ex)
     {
         Report.Notify(new RCM.Message(Codes.ERR_UI_WF_FILL_DB_VAL)
         {
             DetailedText = string.Join(Environment.NewLine, prop, ex.Message)
         });
     }
 }
Ejemplo n.º 5
0
        public virtual IList <T> Get(Expression <Func <T, bool> > filter, Pagination pagination)
        {
            pagination.RecordCount = Count(filter);
            IQueryable <T> result;

            if (filter != null)
            {
                result = CurrentDbSet.Where(filter);
            }
            else
            {
                result = CurrentDbSet;
            }
            if (pagination.OrderBy != null || pagination.OrderByDescending != null)
            {
                if (pagination.OrderBy != null)
                {
                    result = result.OrderBy(pagination.OrderBy);
                }
                else
                {
                    result = result.OrderByDescending(pagination.OrderByDescending);
                }
            }
            return(result.Skip(pagination.PageIndex * pagination.PageSize).Take(pagination.PageSize).ToList());
        }
Ejemplo n.º 6
0
 public virtual ServiceResult <T> UpdateRange(params T[] items)
 {
     foreach (var item in items)
     {
         var itemResult = Validate(item);
         if (itemResult.HasViolation)
         {
             return(itemResult);
         }
         var editor = item as EditorEntity;
         if (editor != null)
         {
             if (ApplicationContext.CurrentUser != null)
             {
                 editor.LastUpdateBy     = ApplicationContext.CurrentUser.UserID;
                 editor.LastUpdateByName = ApplicationContext.CurrentUser.UserName;
             }
             editor.LastUpdateDate = DateTime.Now;
         }
     }
     CurrentDbSet.UpdateRange(items);
     if (!isWaitingSave)
     {
         SaveChanges();
     }
     return(new ServiceResult <T>());
 }
Ejemplo n.º 7
0
        public void UpdateDesign(LayoutEntity item)
        {
            CurrentDbSet.Attach(item);
            DbContext.Entry(item).Property(m => m.ContainerClass).IsModified = true;
            DbContext.SaveChanges();

            if (item.Zones != null)
            {
                var zones = ZoneService.Get(m => m.LayoutId == item.ID);

                item.Zones.Where(m => zones.All(n => n.ID != m.ID)).Each(m =>
                {
                    m.LayoutId = item.ID;
                    ZoneService.Add(m);
                });
                item.Zones.Where(m => zones.Any(n => n.ID == m.ID)).Each(m =>
                {
                    m.LayoutId = item.ID;
                    ZoneService.Update(m);
                });
                zones.Where(m => item.Zones.All(n => n.ID != m.ID)).Each(m => ZoneService.Remove(m.ID));
            }
            if (item.Html != null)
            {
                LayoutHtmlService.Remove(m => m.LayoutId == item.ID);
                item.Html.Each(m =>
                {
                    m.LayoutId = item.ID;
                    LayoutHtmlService.Add(m);
                });
            }
        }
Ejemplo n.º 8
0
        public Task <List <FileData> > GetByGroup(string shopId, string groupId, out int total, int pageSize = 20, int pageIndex = 1)
        {
            total = 0;

            if (!string.IsNullOrEmpty(groupId) && groupId != "-1")
            {
                return(GetPageAsync(f => f.GroupId == groupId && f.ShopId == shopId, f => f.VersionDateTime, pageIndex, pageSize, out total));
            }
            else
            {
                StringBuilder sqlBuilder = new StringBuilder();
                sqlBuilder.Append(" SELECT * FROM FileData WHERE NOT EXISTS ");
                sqlBuilder.Append(" (SELECT GroupId FROM FileGroup WHERE FileGroup.Id = FileData.GroupId AND FileGroup.ShopId = @shopId) ");
                sqlBuilder.Append(" AND FileData.ShopId = @shopId ");

                List <MySqlParameter> sqlParams = new List <MySqlParameter>();
                sqlParams.Add(new MySqlParameter("shopId", shopId));

                total = CurrentDbSet.FromSql(sqlBuilder.ToString(), sqlParams.ToArray()).CountAsync().Result;

                sqlBuilder.Append(" ORDER BY FileData.VersionDateTime DESC ");
                sqlBuilder.Append($" LIMIT {(pageIndex - 1) * pageSize}, {pageSize} ");

                return(CurrentDbSet.FromSql(sqlBuilder.ToString(), sqlParams.ToArray()).ToListAsync());
            }
        }
 public async Task <Event> GetByIdWithIncludedRoomsAndMatches(string id) =>
 await CurrentDbSet
 .Include(x => x.Rooms)
 .ThenInclude(x => x.Matches)
 .Include(x => x.Rooms)
 .ThenInclude(x => x.SportType)
 .FirstOrDefaultAsync(x => x.Id == id);
        public async Task <bool> DeleteAndAddSKU(List <GoodInfoSKU> skuList)
        {
            bool res = false;

            using (IDbContextTransaction transaction = Database.BeginTransaction(IsolationLevel.ReadCommitted))
            {
                try
                {
                    List <GoodInfoSKU> removeList = await CurrentDbSet
                                                    .Where(sku => sku.ShopId == skuList[0].ShopId && sku.GoodInfoId == skuList[0].GoodInfoId)
                                                    .ToListAsync();

                    CurrentDbSet.RemoveRange(removeList);
                    await CurrentDbSet.AddRangeAsync(skuList);

                    SaveChanges();
                    transaction.Commit();
                    res = true;
                }
                catch
                {
                    transaction.Rollback();
                    res = false;
                }
            }

            return(res);
        }
        public async Task <PageDataDTO <List <Order> > > GetByFilter(string shopId, string menberId, int orderStatus, int pageSize, int pageIndex)
        {
            IQueryable <Order> query = CurrentDbSet.Where(c => c.ShopId == shopId);

            if (!string.IsNullOrEmpty(menberId))
            {
                query = query.Where(c => c.MemberId == menberId);
            }

            if (orderStatus >= 0 && orderStatus <= 5)
            {
                query = query.Where(c => c.OrderStatus == orderStatus);
            }

            int count = await query.CountAsync();

            if (pageSize > 0)
            {
                query = query.Skip(pageSize * (pageIndex - 1)).Take(pageSize);
            }

            return(new PageDataDTO <List <Order> >
            {
                Total = count,
                Data = await query.OrderBy(g => g.CreateTime).ToListAsync()
            });
        }
Ejemplo n.º 12
0
        public virtual ServiceResult <T> Update(T item, bool saveImmediately = true)
        {
            var result = Validate(item);

            if (result.HasViolation)
            {
                return(result);
            }
            var editor = item as EditorEntity;

            if (editor != null)
            {
                if (ApplicationContext.CurrentUser != null)
                {
                    editor.LastUpdateBy     = ApplicationContext.CurrentUser.UserID;
                    editor.LastUpdateByName = ApplicationContext.CurrentUser.UserName;
                }
                editor.LastUpdateDate = DateTime.Now;
            }
            CurrentDbSet.Update(item);
            if (saveImmediately)
            {
                DbContext.SaveChanges();
            }
            return(result);
        }
Ejemplo n.º 13
0
        public PageEntity GetByPath(string path, bool isPreView)
        {
            if (path != "/" && path.EndsWith("/"))
            {
                path = path.Substring(0, path.Length - 1);
            }
            if (path == "/")
            {
                path = "/index";
            }
            if (!path.StartsWith("~"))
            {
                path = "~" + path;
            }
            var result = CurrentDbSet.AsNoTracking()
                         .Where(m => m.Url == path && m.IsPublishedPage == !isPreView)
                         .OrderByDescending(m => m.PublishDate)
                         .FirstOrDefault();

            //if (result != null && result.ExtendFields != null)
            //{
            //    /*!
            //     * http://www.zkea.net/
            //     * Copyright 2017 ZKEASOFT
            //     * http://www.zkea.net/licenses
            //     */
            //    ((List<ExtendFieldEntity>)result.ExtendFields).Add(new ExtendFieldEntity { Title = "meta_support", Value = "ZKEASOFT" });
            //}
            return(result);
        }
        public void Save(T entity)
        {
            //TODO: provisório tentar achar uma forma mais eficiente para colocar no contexto, se for uma importação
            if (entity.Id == 0)
            {
                CurrentDbSet.Add(entity);
            }
            else
            {
                var entry = GetDbContext.ChangeTracker.Entries().FirstOrDefault(x => ((ILGTEntity)x.Entity).Id == entity.Id);
                if (entry != null)
                {
                    var concretType      = entity.GetType();
                    var propertysToClone = concretType.GetProperties().Where(x => !x.PropertyType.IsNested && x.CanWrite).ToList();

                    foreach (var p in propertysToClone)
                    {
                        p.SetValue(entry.Entity, p.GetValue(entity, new object[0]), new object[0]);
                    }
                }
                else
                {
                    GetDbContext.Entry(entity).State = EntityState.Modified;
                }
            }
            this.SaveChanges();
        }
Ejemplo n.º 15
0
        public void SaveSort(SectionContent content)
        {
            var contentPart = content.ToContent();

            CurrentDbSet.Attach(contentPart);
            DbContext.Entry(contentPart).Property(n => n.Order).IsModified = true;
            DbContext.SaveChanges();
        }
Ejemplo n.º 16
0
 public virtual void RemoveRange(params T[] items)
 {
     CurrentDbSet.RemoveRange(items);
     if (!isWaitingSave)
     {
         SaveChanges();
     }
 }
Ejemplo n.º 17
0
 public virtual void Remove(Expression <Func <T, bool> > filter)
 {
     CurrentDbSet.RemoveRange(CurrentDbSet.Where(filter));
     if (!isWaitingSave)
     {
         SaveChanges();
     }
 }
Ejemplo n.º 18
0
 public virtual void Remove(T item)
 {
     CurrentDbSet.Remove(item);
     if (!isWaitingSave)
     {
         SaveChanges();
     }
 }
 public async Task <Match> GetMatchWithIncludedRoomEventModeratorsJoinObject(string id)
 {
     return(await CurrentDbSet
            .Include(x => x.Room)
            .ThenInclude(x => x.Event)
            .ThenInclude(x => x.Moderators)
            .FirstOrDefaultAsync(x => x.Id == id));
 }
Ejemplo n.º 20
0
 public virtual IEnumerable <T> Get(Expression <Func <T, bool> > filter)
 {
     if (filter == null)
     {
         return(GetAll());
     }
     return(CurrentDbSet.Where(filter));
 }
Ejemplo n.º 21
0
 public virtual void Remove(T item, bool saveImmediately = true)
 {
     CurrentDbSet.Remove(item);
     if (saveImmediately)
     {
         DbContext.SaveChanges();
     }
 }
Ejemplo n.º 22
0
 public virtual int Count(Expression <Func <T, bool> > filter)
 {
     if (filter != null)
     {
         return(CurrentDbSet.Where(filter).Count());
     }
     return(CurrentDbSet.Count());
 }
        /// <summary>
        /// 添加商品信息
        /// </summary>
        /// <param name="goodInfo">基本信息</param>
        /// <param name="goodInfoExtensions">扩展信息</param>
        public async Task <DataResult> AddGoodInfo(GoodInfo goodInfo, GoodInfoExtensions goodInfoExtensions, List <GoodInfoSKU> skuList)
        {
            ShopInfoExtensions shopInfoExtensions = await shopInfoExtensionsDbSet.FirstOrDefaultAsync(sh => sh.ShopId == goodInfo.ShopId);

            int goodCount = await CurrentDbSet.CountAsync(gr => gr.ShopId == goodInfo.ShopId);

            if (goodCount >= shopInfoExtensions.LimitGoodNum)
            {
                return new DataResult {
                           Code = DataResultCode.Fail, Message = $"最多只能拥有{shopInfoExtensions.LimitGoodNum}个商品!"
                }
            }
            ;


            using (IDbContextTransaction transaction = Database.BeginTransaction(IsolationLevel.ReadCommitted))
            {
                try
                {
                    await CurrentDbSet.AddAsync(goodInfo);

                    await goodInfoExtensionsDbSet.AddAsync(goodInfoExtensions);

                    await goodInfoSKUDbSet.AddRangeAsync(skuList);

                    string sql    = $"update ShopInfoExtensions set GoodDataVersion = @newVersion where shopId = @shopId and GoodDataVersion = @oldVersion";
                    int    result = this.Database.ExecuteSqlCommand(sql, new[]
                    {
                        new MySqlParameter("newVersion", Guid.NewGuid().ToString("N")),
                        new MySqlParameter("oldVersion", shopInfoExtensions.GoodDataVersion),
                        new MySqlParameter("shopId", shopInfoExtensions.ShopId),
                    });

                    if (result <= 0)
                    {
                        transaction.Rollback();
                        return(new DataResult {
                            Code = DataResultCode.Fail, Message = "添加失败,请重试!"
                        });
                    }

                    SaveChanges();
                    transaction.Commit();
                }
                catch
                {
                    transaction.Rollback();
                    return(new DataResult {
                        Code = DataResultCode.Fail, Message = "添加失败,请重试!"
                    });
                }
            }

            return(new DataResult {
                Code = DataResultCode.Success, Message = "添加成功!"
            });
        }
Ejemplo n.º 24
0
        /// <summary>
        /// 根据省份获取城市
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        public PagerEntity <AreaEntity> QueryCityByProvinceAsync(string Id)
        {
            var entity = CurrentDbSet.Where(it => it.ParentId == Id);

            return(new PagerEntity <AreaEntity>
            {
                Entity = entity.ToList()
            });
        }
Ejemplo n.º 25
0
        public IEnumerable <ZoneEntity> GetZonesByPageId(string pageId)
        {
            var page = PageService.Get(pageId);

            using (var layoutService = _serviceProvder.GetService <ILayoutService>())
            {
                var layout = layoutService.Get(page.LayoutId);
                return(CurrentDbSet.Where(m => m.LayoutId == layout.ID).OrderBy(m => m.ID).ToList());
            }
        }
        /// <summary>
        ///     DeleteSession
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <returns></returns>
        public long DeleteSession(long userId)
        {
            var exists = GetSession(userId);

            if (exists == null)
            {
                return(-1);
            }

            return(CurrentDbSet.Remove(exists).Id);
        }
Ejemplo n.º 27
0
 public virtual IEnumerable <T> Get(Expression <Func <T, bool> > filter, Pagination pagination)
 {
     pagination.RecordCount = Count(filter);
     if (filter != null)
     {
         return(CurrentDbSet.Where(filter).Skip(pagination.PageIndex * pagination.PageSize).Take(pagination.PageSize));
     }
     else
     {
         return(CurrentDbSet.Skip(pagination.PageIndex * pagination.PageSize).Take(pagination.PageSize));
     }
 }
Ejemplo n.º 28
0
        /// <summary>
        ///     Creates new user and Person Record and returns auto-generated UserId
        /// </summary>
        /// <param name="newUser">The new user.</param>
        /// <returns></returns>
        /// <exception cref="System.NotImplementedException"></exception>
        public int CreateNewUser(User newUser)
        {
            var result = -1;

            var added = CurrentDbSet.Add(newUser);

            if (!added.IsNull())
            {
                result = CurrentDbContext.SaveChanges();
            }

            return(result);
        }
Ejemplo n.º 29
0
        public virtual void Add(T item)
        {
            var editor = item as EditorEntity;

            if (editor != null && ApplicationContext.CurrentUser != null)
            {
                editor.CreateBy     = ApplicationContext.CurrentUser.UserID;
                editor.CreatebyName = ApplicationContext.CurrentUser.UserName;
                editor.CreateDate   = DateTime.Now;
            }
            CurrentDbSet.Add(item);
            DbContext.SaveChanges();
        }
Ejemplo n.º 30
0
 public void Remove(Model m)
 {
     try
     {
         CurrentDbSet.Remove(m);
     }
     catch (Exception ex)
     {
         Report.Notify(new RCM.Message(Codes.ERR_DB_REMOVE)
         {
             DetailedText = ex.ToString()
         });
     }
 }