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(); } }
// ************************************** // 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(); } }
// ************************************** // MyActiveCart // ************************************** public static Cart MyActiveCart() { var userId = Account.User().UserId; using (var ctx = new SongSearchContext()) { return ctx.GetActiveCart(); } }
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; } }
// ************************************** // 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; } } }