/// <summary>
       /// return current user's all conversion window
       /// </summary>
       /// <param name="authUser"></param>
       /// <returns></returns>
       public ActionResult List(PagerInfoRequest request, UserModel authUser)
       {
           var linq =  Context.Set<PMessageEntity>().Where(p => p.FromUser == authUser.Id)
                       .GroupBy(p=>p.ToUser)
                       .Select(p=>new {ToUser = p.Key,Id = p.Max(pid=>pid.Id)})
                       .Union(Context.Set<PMessageEntity>().Where(p => p.ToUser == authUser.Id)
                       .GroupBy(p=>p.FromUser)
                       .Select(p=>new {ToUser = p.Key,Id = p.Max(pid=>pid.Id)}))
                       .GroupBy(p=>p.ToUser)
                       .Select(p=>new {Id = p.Max(pid=>pid.Id)});
           var linq2 = linq.Join(Context.Set<PMessageEntity>(),o=>o.Id,i=>i.Id,(o,i)=>i)
                      .Join(Context.Set<UserEntity>(), o => o.FromUser, i => i.Id, (o, i) => new { M = o, F = i })
                      .Join(Context.Set<UserEntity>(), o => o.M.ToUser, i => i.Id, (o, i) => new { M = o.M, F = o.F, T = i });
           int totalCount = linq2.Count();
           int skipCount = request.Page > 0 ? (request.Page - 1) * request.Pagesize : 0;
           linq2 = linq2.OrderByDescending(c => c.M.Id).Skip(skipCount).Take(request.Pagesize);
           var responseData = linq2.ToList().Select(l=>new NewPMessageResponse().FromEntity<NewPMessageResponse>(l.M,
                                          c =>
                                          {
                                             c.FromUserModel=new UserInfoResponse().FromEntity<UserInfoResponse>(l.F);
                                             c.ToUserModel = new UserInfoResponse().FromEntity<UserInfoResponse>(l.T);

                                          }));
           var response = new PagerInfoResponse<NewPMessageResponse>(request.PagerRequest, totalCount)
           {
               Items = responseData.ToList()
           };
           return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<NewPMessageResponse>>(response) };

       }
Esempio n. 2
0
        public ActionResult OrderList(PagerInfoRequest request, UserModel authUser)
        {
            var dbContext = Context;
            var linq = Context.Set<OrderEntity>().Where(o => o.CustomerId == authUser.Id && o.Status == (int)OrderStatus.Shipped);

            var linq2 = linq.GroupJoin(dbContext.Set<OrderItemEntity>().Join(dbContext.Set<BrandEntity>(), o => o.BrandId, i => i.Id, (o, i) => new { OI = o, B = i })
                                        .GroupJoin(dbContext.Set<ResourceEntity>().Where(r => r.SourceType == (int)SourceType.Product && r.Type == (int)ResourceType.Image),
                                                     o => o.OI.ProductId,
                                                     i => i.SourceId,
                                                     (o, i) => new { OI = o.OI,B=o.B, R = i.OrderByDescending(r => r.SortOrder).FirstOrDefault() }),
                                        o => o.OrderNo,
                                        i => i.OI.OrderNo,
                                        (o, i) => new { O = o, R = i })
                              .GroupJoin(dbContext.Set<RMAEntity>(),o=>o.O.OrderNo,i=>i.OrderNo,(o,i)=>new {O=o.O,R=o.R,RMA=i});

            int totalCount = linq2.Count();
            int skipCount = request.Page > 0 ? (request.Page - 1) * request.Pagesize : 0;
            linq2 = linq2.OrderByDescending(l => l.O.CreateDate).Skip(skipCount).Take(request.Pagesize);
            var result = linq2.ToList().Select(l => new MyOrderDetailResponse().FromEntity<MyOrderDetailResponse>(l.O, o =>
            {
                if (l.R == null)
                    return;
                o.Products = l.R.Select(oi => new MyOrderItemDetailResponse().FromEntity<MyOrderItemDetailResponse>(oi.OI, product =>
                {
                    product.ProductResource = new ResourceInfoResponse().FromEntity<ResourceInfoResponse>(oi.R);
                    product.BrandName = oi.B.Name;
                    product.Brand2Name = oi.B.EnglishName;
                }));
                o.RMAs = l.RMA.Select(rma => new MyRMAResponse().FromEntity<MyRMAResponse>(rma));
                     

            }));
            var response = new PagerInfoResponse<MyOrderDetailResponse>(request.PagerRequest, totalCount)
            {
                Items = result.ToList()
            };
            return this.RenderSuccess<PagerInfoResponse<MyOrderDetailResponse>>(r => r.Data = response);

        }
Esempio n. 3
0
        public ActionResult List(PagerInfoRequest request, UserModel authUser)
        {
            var linq = Context.Set<RMAEntity>().Where(r => r.UserId == authUser.Id)
                       .GroupJoin(Context.Set<RMAItemEntity>()
                                    .GroupJoin(Context.Set<ResourceEntity>().Where(res => res.SourceType == (int)SourceType.Product && res.Type == (int)ResourceType.Image)
                                    , o => new { Product = o.ProductId, Color = o.ColorId }
                                    , i => new { Product = i.SourceId, Color = i.ColorId }
                                    , (o, i) => new { R = o, Res = i.OrderByDescending(res2 => res2.SortOrder).FirstOrDefault() })
                                    .GroupJoin(Context.Set<BrandEntity>(), o => o.R.BrandId, i => i.Id, (o, i) => new { R=o.R,Res=o.Res,B=i.FirstOrDefault()})
                       , o => o.RMANo, i => i.R.RMANo, (o, i) => new { R = o, RI = i });
            int totalCount = linq.Count();
            int skipCount = request.Page > 0 ? (request.Page - 1) * request.Pagesize : 0;
            linq = linq.OrderByDescending(l => l.R.CreateDate).Skip(skipCount).Take(request.Pagesize);
            var result = linq.ToList().Select(l => new RMAInfoResponse().FromEntity<RMAInfoResponse>(l.R, o =>
            {
                if (l.RI == null)
                    return;
                o.CanVoid = RMARule.CanVoid(o.Status);
                o.Products = l.RI.ToList().Select(oi => new RMAItemInfoResponse().FromEntity<RMAItemInfoResponse>(oi.R, product =>
                {
                    product.ProductResource = new ResourceInfoResponse().FromEntity<ResourceInfoResponse>(oi.Res);
                    if (oi.B != null)
                    {
                        product.BrandName = oi.B.Name;
                        product.Brand2Name = oi.B.EnglishName;
                    }

                }));
               
            }));
            var response = new PagerInfoResponse<RMAInfoResponse>(request.PagerRequest, totalCount)
            {
                Items = result.ToList()
            };
            return this.RenderSuccess<PagerInfoResponse<RMAInfoResponse>>(r => r.Data = response);
        }