/// <summary> /// return all support shipping area /// </summary> /// <returns></returns> public ActionResult SupportShipments() { var linq = Context.Set<CityEntity>().Where(p => p.Status == (int)DataStatus.Normal && p.IsProvince == true) .GroupJoin(Context.Set<CityEntity>().Where(p => p.Status == (int)DataStatus.Normal && p.IsCity.HasValue && p.IsCity.Value == true) .GroupJoin(Context.Set<CityEntity>().Where(p => p.Status == (int)DataStatus.Normal && p.IsProvince == false && p.IsCity.Value == false), o => o.Id, i => i.ParentId, (o, i) => new { C=o,D =i}), o => o.Id, i => i.C.ParentId, (o, i) => new { P = o, C = i }); var result = linq.ToList() .Select(l => new GetShipCityDetailResponse().FromEntity<GetShipCityDetailResponse>(l.P, r => { r.ProvinceName = l.P.Name; r.Cities = l.C.Select(c => new ShipCityModel() { Id = c.C.Id, CityName = c.C.Name, Districts = c.D.Select(d=>new ShipDistrictModel(){ Id = d.Id, DistrictName = d.Name, ZipCode = d.ZipCode }) }); })); var response = new PagerInfoResponse<GetShipCityDetailResponse>(new PagerRequest(), result.Count()) { Items = result.ToList() }; return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<GetShipCityDetailResponse>>(response) }; }
/// <summary> /// return all payment methods /// </summary> /// <returns></returns> public ActionResult Payments() { var result = Context.Set<PaymentMethodEntity>().Where(p => p.Status == (int)DataStatus.Normal) .ToList() .Select(p => new PaymentResponse().FromEntity<PaymentResponse>(p)); var response = new PagerInfoResponse<PaymentResponse>(new PagerRequest(), result.Count()) { Items = result.ToList() }; return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<PaymentResponse>>(response) }; }
public RestfulResult My(UserModel authUser) { var linq = _customerRepo.Context.Set<ShippingAddressEntity>() .Where(s => s.Status != (int)DataStatus.Deleted && s.UserId == authUser.Id) .OrderByDescending(s => s.UpdateDate) .Take(10).ToList() .Select(s => new SelfAddressResponse().FromEntity<SelfAddressResponse>(s)); var response = new PagerInfoResponse<SelfAddressResponse>(new PagerRequest(), linq.Count()) { Items = linq.ToList() }; return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<SelfAddressResponse>>(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); }
/// <summary> /// return request tag's available properties /// </summary> /// <param name="request"></param> /// <param name="authUser"></param> /// <returns></returns> public ActionResult Property(TagGetRequest request, UserModel authUser) { var linq = Context.Set<CategoryPropertyEntity>().Where(c => c.CategoryId == request.TagId && c.Status == (int)DataStatus.Normal) .GroupJoin(Context.Set<CategoryPropertyValueEntity>().Where(pv => pv.Status == (int)DataStatus.Normal), o => o.Id, i => i.PropertyId, (o, i) => new { P = o, PV = i }) .OrderByDescending(p => p.P.SortOrder); var result = linq.ToList() .Select(l => new TagPropertyDetailResponse().FromEntity<TagPropertyDetailResponse>(l.P, p => { p.PropertyId = l.P.Id; p.PropertyName = l.P.PropertyDesc; p.Values = l.PV.Select(pv => new TagPropertyValueDetailResponse() { ValueId = pv.Id, ValueName =pv.ValueDesc }); })); var response = new PagerInfoResponse<TagPropertyDetailResponse>(new PagerRequest(), result.Count()) { Items = result.ToList() }; return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<TagPropertyDetailResponse>>(response) }; }
public ActionResult List(StoreCouponListRequest request, int? authuid, UserModel authUser) { request.AuthUid = authuid.Value; request.AuthUser = authUser; if (request == null) return new RestfulResult { Data = new ExecuteResult<StoreCouponListRequest>(null) }; var linq = _storecouponRepo.Get(c => c.UserId == authUser.Id && c.Status != (int)CouponStatus.Deleted); if (request.Type.HasValue) { switch (request.Type.Value) { case CouponRequestType.Used: linq = linq.Where(c => c.Status == (int)CouponStatus.Used); break; case CouponRequestType.Expired: linq = linq.Where(c => c.Status != (int)CouponStatus.Used && c.ValidEndDate.HasValue && c.ValidEndDate.Value < DateTime.Now); break; case CouponRequestType.UnUsed: linq = linq.Where(c => c.Status != (int)CouponStatus.Used && c.ValidEndDate.HasValue && c.ValidEndDate.Value >= DateTime.Now); break; } } int totalCount = linq.Count(); int skipCount = request.Page > 0 ? (request.Page - 1) * request.Pagesize : 0; linq = linq.OrderByDescending(c => c.CreateDate).Skip(skipCount).Take(request.Pagesize); var linq2 = linq.Join(_storeproRepo.GetAll(), o => o.StorePromotionId, i => i.Id, (o, i) => new { SC = o, SP = i }); var responseData = from l in linq2.ToList() select new StoreCouponDetailResponse().FromEntity<StoreCouponDetailResponse>(l.SC, c => { c.Promotion = new StorePromotionDetailResponse().FromEntity<StorePromotionDetailResponse>(l.SP); }); var response = new PagerInfoResponse<StoreCouponDetailResponse>(request.PagerRequest, totalCount) { Items = responseData.ToList() }; return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<StoreCouponDetailResponse>>(response) }; }
public RestfulResult My(MyOrderRequest request, UserModel authUser) { var dbContext = Context; var onGoStatus = new int[]{ (int)OrderStatus.Paid, (int)OrderStatus.PreparePack, (int)OrderStatus.Shipped, (int)OrderStatus.PassConfirmed }; var linq = Context.Set<OrderEntity>().Where(o=>o.CustomerId == authUser.Id); switch(request.Type) { case OrderRequestType.WaitForPay: linq = linq.Where(o => o.Status == (int)OrderStatus.Create); break; case OrderRequestType.OnGoing: linq = linq.Where(o => onGoStatus.Any(status => status == o.Status)); break; case OrderRequestType.Complete: linq = linq.Where(o=>o.Status==(int)OrderStatus.CustomerReceived || o.Status==(int)OrderStatus.CustomerRejected); break; case OrderRequestType.Void: linq = linq.Where(o=>o.Status == (int)OrderStatus.Void); break; } 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 => new { P = o.OI.ProductId, PC = o.OI.ColorValueId }, i => new { P = i.SourceId, PC = i.ColorId }, (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 }); 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; })); })); var response = new PagerInfoResponse<MyOrderDetailResponse>(request.PagerRequest, totalCount) { Items = result.ToList() }; return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<MyOrderDetailResponse>>(response) }; }
/// <summary> /// return the conversation list current user with the query user /// </summary> /// <param name="request"></param> /// <param name="authUser"></param> /// <returns></returns> public ActionResult Conversation(GetConversationRequest request, UserModel authUser) { var linq = Context.Set<PMessageEntity>().Where(p=>(p.FromUser==authUser.Id && p.ToUser==request.UserId) || (p.FromUser==request.UserId && p.ToUser==authUser.Id)) .Where(p=>request.LastConversationId==0 || (request.LastConversationId>0 && p.Id>request.LastConversationId) ) .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 = linq.Count(); int skipCount = request.Page > 0 ? (request.Page - 1) * request.Pagesize : 0; int pageSize = request.Pagesize; if (request.LastConversationId > 0) { skipCount = 0; pageSize = totalCount; } linq = linq.OrderByDescending(c => c.M.Id).Skip(skipCount).Take(pageSize); var responseData = linq.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) }; }
/// <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 My(MyCommentListRequest request, int? authuid, UserModel authUser) { request.AuthUser = authUser; var comments = _commentRepo.Get(c => c.Status != (int)DataStatus.Deleted).OrderByDescending(c => c.CreatedDate) .GroupJoin(_resourceRepo.Get(r => r.Status != (int)DataStatus.Deleted && r.SourceType == (int)SourceType.CommentAudio), o => o.Id, i => i.SourceId, (o, i) => new { C = o, Aud = i.FirstOrDefault() }) .GroupJoin(_customerRepo.Get(cu => cu.Status != (int)DataStatus.Deleted), o => o.C.User_Id, i => i.Id, (o, i) => new { C = o.C, Aud = o.Aud, U = i.FirstOrDefault() }) .GroupJoin(_customerRepo.Get(cu => cu.Status != (int)DataStatus.Deleted), o => o.C.ReplyUser, i => i.Id, (o, i) => new { C = o.C, Aud = o.Aud, U = o.U, RU = i.FirstOrDefault() }); var dbContext = _commentRepo.Context; var linq = (from c2 in dbContext.Set<CommentEntity>() let products = dbContext.Set<ProductEntity>().Where(p=>p.Status!=(int)DataStatus.Deleted && p.RecommendUser ==authUser.Id) let promotions = dbContext.Set<PromotionEntity>().Where(p=>p.Status!=(int)DataStatus.Deleted && p.RecommendUser == authUser.Id) where (c2.User_Id == authUser.Id && c2.Status != (int)DataStatus.Deleted) || products.Any(p=>c2.SourceId == p.Id && c2.SourceType==(int)SourceType.Product) || promotions.Any(p=>c2.SourceId == p.Id && c2.SourceType == (int)SourceType.Promotion) select new { SourceId = c2.SourceId, SourceType = c2.SourceType }).Distinct() .GroupJoin(comments, o => new { SourceType = o.SourceType, SourceId = o.SourceId }, i => new { SourceType = i.C.SourceType, SourceId = i.C.SourceId }, (o, i) => new { SourceType = o.SourceType, SourceId = o.SourceId, Comment = i.OrderByDescending(c=>c.C.CreatedDate).FirstOrDefault() }); int totalCount = linq.Count(); int skipCount = request.Page > 0 ? (request.Page - 1) * request.Pagesize : 0; linq = linq.OrderByDescending(c => c.Comment.C.CreatedDate).Skip(skipCount).Take(request.Pagesize); var responseData = from l in linq.ToList() select new MyCommentInfoResponse().FromEntity<MyCommentInfoResponse>(l.Comment.C, c => { //c.SourceId = l.SourceId; // c.SourceType = l.SourceType; c.CommentUser = new UserInfoResponse().FromEntity<UserInfoResponse>(l.Comment.U); c.ReplyUserName = l.Comment.RU == null ? string.Empty : l.Comment.RU.Nickname; c.Resource = new ResourceInfoResponse().FromEntity<ResourceInfoResponse>(l.Comment.Aud); }); var response = new PagerInfoResponse<MyCommentInfoResponse>(request.PagerRequest, totalCount) { Items = responseData.ToList() }; return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<MyCommentInfoResponse>>(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); }
/// <summary> /// return all support rma reasons /// </summary> /// <returns></returns> public ActionResult SupportRMAReasons() { var linq = Context.Set<RMAReasonEntity>().Where(p => p.Status == (int)DataStatus.Normal) .Select(l => new RMAReasonResponse { Reason = l.Reason, Id = l.Id }); var response = new PagerInfoResponse<RMAReasonResponse>(new PagerRequest(), linq.Count()) { Items = linq.ToList() }; return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<RMAReasonResponse>>(response) }; }
/// <summary> /// return all supported invoice detail /// </summary> /// <returns></returns> public ActionResult SupportInvoiceDetails() { var invoices = new List<dynamic>(); invoices.Add(new { id = 1, name="礼品"}); invoices.Add(new { id = 2, name = "日用品" }); invoices.Add(new { id = 3, name = "买什么开什么" }); var response = new PagerInfoResponse<dynamic>(new PagerRequest(), invoices.Count()) { Items = invoices.ToList() }; return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<dynamic>>(response) }; }
/// <summary> /// return all preconfigured messages /// </summary> /// <returns></returns> public ActionResult Messages() { var linq = Context.Set<ConfigMsgEntity>() .Where(c => c.Channel == "iphone") .ToList() .Select(l => new GetMessageDetailReponse() { Key =l.MKey, Message = l.Message }); var response = new PagerInfoResponse<GetMessageDetailReponse>(new PagerRequest(), linq.Count()) { Items = linq.ToList() }; return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<GetMessageDetailReponse>>(response) }; }
/// <summary> /// return all support ship vias /// </summary> /// <returns></returns> public ActionResult SupportShipvias() { var linq = Context.Set<ShipViaEntity>().Where(p => p.Status == (int)DataStatus.Normal) .Select(l => new ShipViaResponse { Name = l.Name, Id = l.Id, IsOnline = l.IsOnline??false }); var response = new PagerInfoResponse<ShipViaResponse>(new PagerRequest(), linq.Count()) { Items = linq.ToList() }; return new RestfulResult { Data = new ExecuteResult<PagerInfoResponse<ShipViaResponse>>(response) }; }