/// <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) }; }
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); }
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); }