예제 #1
0
        public static void AddToMyActiveCart(int[] contentIds)
        {
            // Check if open cart exists and if needed create new cart
            using (var ctx = new SongSearchContext()) {
                var cart = ctx.GetActiveCart() ?? EmptyCart();

                if (cart.CartId == 0) { ctx.Carts.AddObject(cart); }

                if (cart.Contents.Count() + contentIds.Count() > 100) {
                    throw new ArgumentOutOfRangeException("You cart already contains the maximum number of items (100)");
                }

                var contents = ctx.Contents.Where(c => contentIds.Contains(c.ContentId)).ToList();

                foreach (var contentId in contentIds) {
                    if (!cart.Contents.Any(i => i.ContentId == contentId)) {
                        var content = contents.SingleOrDefault(c => c.ContentId == contentId);
                        if (content == null) {
                            throw new ArgumentException(SystemErrors.ItemDoesNotExist);
                        }
                        cart.Contents.Add(content);
                    }
                }

                ctx.SaveChanges();
            }
        }
예제 #2
0
        // **************************************
        // AddToMyActiveCart
        // **************************************
        public static void AddToMyActiveCart(int contentId)
        {
            using (var ctx = new SongSearchContext()) {
                var content = ctx.Contents.SingleOrDefault(c => c.ContentId == contentId);
                if (content == null) {
                    throw new ArgumentException(SystemErrors.ItemDoesNotExist);
                }

                // Check if open cart exists and if needed create new cart
                var cart = ctx.GetActiveCart() ?? EmptyCart();

                if (cart != null) {
                    if (cart.Contents.Any(i => i.ContentId == contentId)) {
                        return;
                    }
                } else {
                    cart = EmptyCart();
                    ctx.Carts.AddObject(cart);
                }
                if (cart.Contents.Count() < 100) {
                    cart.Contents.Add(content);
                } else {
                    throw new ArgumentOutOfRangeException("You cart already contains the maximum number of items (100)");
                }
                ctx.SaveChanges();
            }
        }
예제 #3
0
 // **************************************
 // MyActiveCart
 // **************************************
 public static Cart MyActiveCart()
 {
     var userId = Account.User().UserId;
     using (var ctx = new SongSearchContext()) {
         return ctx.GetActiveCart();
     }
 }
예제 #4
0
        public static void RemoveFromMyActiveCart(int[] contentIds)
        {
            using (var ctx = new SongSearchContext()) {
                var cart = ctx.GetActiveCart();

                if (cart != null) {
                    foreach (var contentId in contentIds) {
                        var content = cart.Contents.Where(c => c.ContentId == contentId).SingleOrDefault();
                        if (content != null) {
                            cart.Contents.Remove(content);
                        }
                    }

                    ctx.SaveChanges();

                }

                cart = null;
            }
        }
예제 #5
0
        // **************************************
        // CompressMyActiveCart
        // **************************************
        public static void CompressMyActiveCart(string userArchiveName = null, IList<ContentUserDownloadable> contentNames = null)
        {
            using (var ctx = new SongSearchContext()) {
                var cart = ctx.GetActiveCart();

                if (cart != null && cart.Contents.Count() > 0) {
                    string zipName = cart.ArchiveDownloadName(userArchiveName);
                    cart.ArchiveName = zipName;

                    CompressCart(cart.CartId, contentNames);

                    cart.MarkAsCompressed();

                    ctx.SaveChanges();

                    SessionService.Session().SessionUpdate(cart.CartId, "ProcessingCartId");
                    cart = null;
                }
            }
        }