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

        }
Example #4
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);

        }
Example #5
0
 /// <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) };
                            

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