コード例 #1
0
        public static CartMobileSearchCriteria ToSearchCriteria(this CartSearchCriteriaBindingModel model, int userId)
        {
            CartMobileSearchCriteria criteria = CreateSearchCriteria <CartMobileSearchCriteria>(model);

            criteria.UserId = userId;
            criteria.Title  = model.Title;

            return(criteria);
        }
コード例 #2
0
        public IHttpActionResult FetchCard([FromUri] CartSearchCriteriaBindingModel model)
        {
            User user = GetCurrentUser();

            CartMobileSearchCriteria cartMobileSearchCriteria = model.ToSearchCriteria(user.Id);

            QueryResult <CartObject> carts = CartMobileService.Obj.FindNew(cartMobileSearchCriteria);

            var result = new PagingBindingModel <CartIndexBindingModel>()
            {
                Items      = carts.Items.Select(x => x.ToCartObjectIndexBindingModel()).ToList(),
                TotalCount = carts.TotalCount
            };

            return(Ok(result));
        }
コード例 #3
0
        public IHttpActionResult FetchCards([FromUri] CartSearchCriteriaBindingModel model)
        {
            User user = GetCurrentUser();

            CartMobileSearchCriteria cartMobileSearchCriteria = model.ToSearchCriteria(user.Id);

            IQueryResult <Cart> carts = CartMobileService.Obj.Find(cartMobileSearchCriteria);

            var result = new PagingBindingModel <CartIndexBindingModel>()
            {
                Items      = carts.Items.Select(x => x.ToCartIndexBindingModel()).ToList(),
                TotalCount = carts.TotalCount
            };

            foreach (var cart in result.Items.ToList())
            {
                cart.Items = ItemMobileService.Obj.GetItemsByCard(cart.Cart.CartId).Select(x => x.ToCartItemBindingModel(ItemMobileService.Obj.GetById(x.ItemId))).ToList();
                cart.Users = CartOwnerMobileService.Obj.GetUsersByCart(cart.Cart.CartId).Select(x => x.ToUserProfileBindingModel(UserService.Obj.FindById(x.UserId), ImageService.Obj.FindByUserId(x.UserId))).ToList();
            }

            return(Ok(result));
        }
コード例 #4
0
        public IQueryResult <Cart> Find(CartMobileSearchCriteria criterias)
        {
            if (criterias == null)
            {
                throw new ArgumentNullException(nameof(criterias));
            }

            List <CartOwner> carts = CartOwnerMobileService.Obj.GetCartsByUser(criterias.UserId);

            var cartIds = carts.Select(x => x.CartId).ToList();

            IQueryConstraints <Cart> constraints = new QueryConstraints <Cart>()
                                                   .PageAndSort(criterias, x => x.CartId)
                                                   .AndAlso(x => cartIds.Contains(x.CartId))
                                                   .AndAlsoIf(x => x.Title.Contains(criterias.Title), !string.IsNullOrEmpty(criterias.Title));

            IQueryResult <Cart> result = queryRepository.Find(constraints);

            Tracer.Log.EntitiesRetrieved(nameof(Cart), result.Items.Count(), result.TotalCount);

            return(result);
        }
コード例 #5
0
        public QueryResult <CartObject> FetchCards(CartMobileSearchCriteria criteria)
        {
            List <CartObjectDB> carts = new List <CartObjectDB>();

            try
            {
                using (SqlConnection connect = new SqlConnection(ConfigurationManager.ConnectionStrings["CnnStr1"].ConnectionString))
                {
                    using (SqlCommand command = new SqlCommand())
                    {
                        command.CommandText = @"SELECT c.CartId, c.Title, c.Notes, c.Date, c.Status, co.CartIndex, i.ItemId, i.Title as itemTitle, ci.Status as itemStatus,u.Id as userId, u.Name, u.Email,u.Mobile,u.EmailConfirmed, co.AccessLevel, img.ImageId
FROM Carts as c
INNER JOIN CartOwners AS co ON c.CartId = co.CartId 
LEFT JOIN CartItems AS ci ON ci.CartId = c.CartId
LEFT JOIN Items AS i ON i.ItemId = ci.ItemId
LEFT JOIN Users AS u ON u.Id = co.UserId
LEFT JOIN Images AS img ON img.UserId = u.Id
Where c.CartId IN (
	SELECT cc.CartId FROM Carts AS cc
	INNER JOIN CartOwners AS co ON cc.CartId = co.CartId
	WHERE co.UserId = @UserId AND (@Title is null or cc.Title LIKE '%'+@Title+'%')
	ORDER BY co.CartIndex DESC
	OFFSET @PageSize * (@PageNumber - 1) ROWS
	FETCH NEXT @PageSize ROWS ONLY
)
ORDER BY co.CartIndex DESC";

                        command.Connection = connect;
                        command.Parameters.Add("Title", SqlDbType.VarChar).Value = (object)criteria.Title ?? DBNull.Value;
                        command.Parameters.Add("UserId", SqlDbType.Int).Value    = criteria.UserId;

                        command.Parameters.Add("PageSize", SqlDbType.Int).Value   = criteria.PageSize;
                        command.Parameters.Add("PageNumber", SqlDbType.Int).Value = criteria.PageNumber;
                        connect.Open();

                        using (SqlDataReader dr = command.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                CartObjectDB cart = new CartObjectDB();

                                cart.CartId     = (int)dr["CartId"];
                                cart.Title      = dr["Title"].ToString();
                                cart.Notes      = dr["Notes"].ToString();
                                cart.CartStatus = (int)dr["Status"];
                                cart.Date       = dr["Date"] == DBNull.Value ? null : (DateTime?)dr["Date"];
                                cart.CartIndex  = (double)dr["CartIndex"];

                                cart.ItemId     = dr["ItemId"] == DBNull.Value ? null : (int?)dr["ItemId"];
                                cart.ItemTitle  = dr["itemTitle"] == DBNull.Value ? null : dr["itemTitle"].ToString();
                                cart.ItemStatus = dr["itemStatus"] == DBNull.Value ? null : (int?)dr["itemStatus"];

                                cart.UserId      = (int)dr["userId"];
                                cart.Name        = dr["Name"] == DBNull.Value ? null : dr["Name"].ToString();
                                cart.Email       = dr["Email"].ToString();
                                cart.Mobile      = dr["Mobile"] == DBNull.Value ? null : dr["Mobile"].ToString();
                                cart.IsConfirmed = (bool)dr["EmailConfirmed"];
                                cart.AccessLevel = (int)dr["AccessLevel"];
                                cart.PhotoId     = dr["ImageId"] == DBNull.Value ? null : (int?)dr["ImageId"];

                                carts.Add(cart);
                            }
                        }
                    }
                }

                var returnedCarts = carts.Where(x => x.CartStatus == (int)CartStatus.NotArchived).GroupBy(x => x.CartId).Select(cart => new CartObject
                {
                    CartId    = cart.FirstOrDefault().CartId,
                    Title     = cart.FirstOrDefault().Title,
                    CartIndex = cart.FirstOrDefault().CartIndex,
                    Date      = cart.FirstOrDefault().Date,
                    Notes     = cart.FirstOrDefault().Notes,

                    Users = cart.GroupBy(y => y.UserId).Select(user => new UserObject
                    {
                        UserId      = user.FirstOrDefault().UserId,
                        Name        = user.FirstOrDefault().Name,
                        Email       = user.FirstOrDefault().Email,
                        IsConfirmed = user.FirstOrDefault().IsConfirmed,
                        AccessLevel = (AccessLevel)user.FirstOrDefault().AccessLevel,
                        Mobile      = user.FirstOrDefault().Mobile,
                        PhotoId     = user.FirstOrDefault().PhotoId
                    }).ToList(),

                    Items = cart.GroupBy(y => y.UserId).Select(user => user.Select(item => new CartItemObject
                    {
                        ItemId = item?.ItemId,
                        Title  = item?.ItemTitle,
                        Status = (ItemStatus?)item.ItemStatus
                    })).FirstOrDefault().ToList()
                }).ToList();

                int totalCount = CalculateTotalCount(criteria.UserId);

                return(new QueryResult <CartObject>(returnedCarts, totalCount));
            }

            catch (Exception ex)
            {
                return(null);
            }
        }
コード例 #6
0
 public QueryResult <CartObject> FindNew(CartMobileSearchCriteria criterias)
 {
     return(cartRepository.FetchCards(criterias));
 }