public async Task CheckPurchaseDeliveryFailed()
        {
            ShoppingCart            shoppingCart     = new ShoppingCart(testUser);
            HashSet <ProductInCart> product_quantity = new HashSet <ProductInCart>();
            Guid       storeId       = Guid.NewGuid();
            string     clientPhone   = "0544444444";
            Address    clientAddress = new Address("1", "1", "1", "1", "1");
            CreditCard card          = new CreditCard("1", "1", "1", "1", "1", "1");
            Product    product1      = new Product(new Guid(), 10, 10, 10);
            Product    product2      = new Product(new Guid(), 20, 20, 20);

            product_quantity.Add(new ProductInCart(product1, 1));
            product_quantity.Add(new ProductInCart(product2, 2));
            DeliveryStatus        deliveryStatus  = new DeliveryStatus(Guid.NewGuid().ToString(), testUser.Username, storeId, "storeName", false);
            PaymentStatus         paymentStatus   = new PaymentStatus(Guid.NewGuid().ToString(), testUser.Username, storeId, true);
            Mock <ShoppingBasket> shoppingBasket1 = new Mock <ShoppingBasket>();

            shoppingBasket1.Setup(sb => sb.GetDictionaryProductQuantity()).Returns(product_quantity);
            TransactionStatus transactionStatus = new TransactionStatus("Testusername", storeId, paymentStatus, deliveryStatus, shoppingBasket1.Object, true);
            PurchaseStatus    purchaseStatus    = new PurchaseStatus(true, transactionStatus, storeId);

            Mock <Store> store1 = new Mock <Store>();

            store1.Setup(s => s.Purchase(It.IsAny <ShoppingBasket>(), It.IsAny <string>(), It.IsAny <Address>(), It.IsAny <CreditCard>())).Returns(Task.FromResult(purchaseStatus));
            shoppingBasket1.Setup(basket => basket.GetStore()).Returns(store1.Object);
            shoppingCart.ShoppingBaskets.Add(shoppingBasket1.Object);
            var v1 = await shoppingCart.Purchase(card, clientPhone, clientAddress);

            Assert.AreEqual(false, v1.Status);
        }
예제 #2
0
        public void OnPurchaseStatus(PurchaseStatus status) // IPurchaseListener
        {
            // called from app-store thread -> do not update views (use UI thread instead)

            switch (status)
            {
            case PurchaseStatus.Connected:
                Log("OnStatusUpdate Connected");
                LogPurchases();
                break;

            case PurchaseStatus.Disconnected:
                Log("OnStatusUpdate Disconnected");
                break;

            case PurchaseStatus.Purchased:
                Log("OnStatusUpdate Purchased");
                break;

            case PurchaseStatus.Consumed:
                Log("OnStatusUpdate Consumed");
                break;

            case PurchaseStatus.Cancelled:
                Log("OnStatusUpdate Cancelled");
                break;

            default:
                break;
            }
        }
예제 #3
0
 void NotifyListener(PurchaseStatus status)
 {
     if (listener != null)
     {
         listener.OnPurchaseStatus(status);
     }
 }
예제 #4
0
        protected virtual PurchaseStatus CanPurchase(UserInfo info, int amount = 1)
        {
            if (this.CostCredits * amount > info.Wallet.Credits &&
                this.CostActivityPoints * amount > info.Wallet.GetActivityPoints(this.ActivityPointsType))
            {
                return(PurchaseStatus.NotEnoughCredits);
            }
            else if (!info.Subscription.HasLevel(this.ClubLevel))
            {
                return(PurchaseStatus.InvalidSubscription);
            }
            else
            {
                foreach (CatalogProduct product in this.Products)
                {
                    PurchaseStatus status = product.CanPurchase(amount);
                    if (status != PurchaseStatus.Ok)
                    {
                        return(status);
                    }
                }
            }

            return(PurchaseStatus.Ok);
        }
예제 #5
0
        void DownloadPackage()
        {
            AssetStoreAsset.PreviewInfo item = m_Asset.previewInfo;
            m_Purchasing          = PurchaseStatus.Downloading;
            item.downloadProgress = 0;
            item.buildProgress    = -1f;

            AssetStoreContext.Download(m_Asset.packageID.ToString(), item.packageUrl, item.encryptionKey, item.packageName,
                                       item.publisherName, item.categoryName, delegate(string id, string status, int bytes, int total) {
                if (this == null)
                {
                    return;                   // aborted
                }
                item.downloadProgress = -1f;
                if (status != "ok")
                {
                    Debug.LogErrorFormat("Error downloading package {0} ({1})", item.packageName, id);
                    Debug.LogError(status);
                    Close();
                    return;
                }

                if (m_Asset == null || m_Purchasing != PurchaseStatus.Downloading || id != m_Asset.packageID.ToString())
                {
                    // Aborted
                    Close();
                }

                if (!AssetStoreContext.OpenPackageInternal(id))
                {
                    Debug.LogErrorFormat("Error importing package {0} ({1})", item.packageName, id);
                }
                Close();
            });
        }
예제 #6
0
        // TODO Make extraData optional
        public bool Purchase(Habbo user, CatalogOffer offer, string extraData, int amount)
        {
            if (offer == null)
            {
                return(false);
            }

            PurchaseStatus purchaseStatus = offer.Purchase(user.Info, amount);

            switch (purchaseStatus)
            {
            case PurchaseStatus.Ok:
                DeliverOffer(user, offer, extraData);
                return(true);

            case PurchaseStatus.LimitedSoldOut:
                user.Router.GetComposer <CatalogLimitedItemSoldOutMessageComposer>().Compose(user);
                break;

            case PurchaseStatus.InvalidSubscription:
                user.Router.GetComposer <CataloguePurchaseNotAllowed>().Compose(user, CataloguePurchaseNotAllowed.ErrorCode.Not_HC);
                break;

            case PurchaseStatus.NotEnoughCredits:
            default:
                user.Router.GetComposer <CatalogPurchaseErrorMessageComposer>().Compose(user, CatalogPurchaseErrorMessageComposer.ErrorCode.Generic);
                break;
            }
            return(false);
        }
예제 #7
0
 public AlbumForUser(User user, Album album, PurchaseStatus status, MediaType mediaType, int rating)
     : this()
 {
     User = user;
     Album = album;
     PurchaseStatus = status;
     MediaType = mediaType;
     Rating = rating;
 }
예제 #8
0
 public AlbumForUser(User user, Album album, PurchaseStatus status, MediaType mediaType, int rating)
     : this()
 {
     User           = user;
     Album          = album;
     PurchaseStatus = status;
     MediaType      = mediaType;
     Rating         = rating;
 }
예제 #9
0
        public void UpdateAlbumForUser(int userId, int albumId, PurchaseStatus status,
                                       MediaType mediaType, int rating)
        {
            PermissionContext.VerifyPermission(PermissionToken.EditProfile);

            repository.HandleTransaction(session => {
                var albumForUser = session.OfType <AlbumForUser>().Query()
                                   .FirstOrDefault(a => a.Album.Id == albumId && a.User.Id == userId);

                // Delete
                if (albumForUser != null && status == PurchaseStatus.Nothing && rating == 0)
                {
                    session.AuditLogger.AuditLog(string.Format("deleting {0} for {1}",
                                                               entryLinkFactory.CreateEntryLink(albumForUser.Album), albumForUser.User));

                    NHibernateUtil.Initialize(albumForUser.Album.CoverPictureData);

                    albumForUser.Delete();
                    session.Delete(albumForUser);
                    session.Update(albumForUser.Album);

                    // Add
                }
                else if (albumForUser == null && (status != PurchaseStatus.Nothing || rating != 0))
                {
                    var user  = session.Load(userId);
                    var album = session.OfType <Album>().Load(albumId);

                    NHibernateUtil.Initialize(album.CoverPictureData);
                    albumForUser = user.AddAlbum(album, status, mediaType, rating);
                    session.Save(albumForUser);
                    session.Update(album);

                    session.AuditLogger.AuditLog(string.Format("added {0} for {1}", entryLinkFactory.CreateEntryLink(album), user));

                    // Update
                }
                else if (albumForUser != null)
                {
                    albumForUser.MediaType      = mediaType;
                    albumForUser.PurchaseStatus = status;
                    session.Update(albumForUser);

                    if (albumForUser.Rating != rating)
                    {
                        albumForUser.Rating = rating;
                        albumForUser.Album.UpdateRatingTotals();
                        NHibernateUtil.Initialize(albumForUser.Album.CoverPictureData);
                        session.Update(albumForUser.Album);
                    }

                    session.AuditLogger.AuditLog(string.Format("updated {0} for {1}",
                                                               entryLinkFactory.CreateEntryLink(albumForUser.Album), albumForUser.User));
                }
            });
        }
예제 #10
0
        public int UpdateStatus(int id, PurchaseStatus status)
        {
            var setting = _context.Purchase.First(x => x.Id == id);

            setting.Status = (int)status;

            _context.Purchase.Update(setting);
            _context.SaveChanges();
            return(setting.Id);
        }
예제 #11
0
 public Purchase(string email, decimal amount, string currency, Address address, List <Product> products)
 {
     Status   = PurchaseStatus.New;
     Date     = DateTime.UtcNow;
     Email    = email;
     Amount   = amount;
     Currency = currency;
     Address  = address;
     Products = products;
 }
예제 #12
0
    public void changePurchaseStatus(PurchaseStatus newStatus)
    {
        switch (newStatus)
        {
        case PurchaseStatus.NO_ITEM_SELECTED: {
            CancelInvoke("checkForPurchaseStatusChange");
            PurchaseItemFields.SetActive(false);
            PurchaseActionButton.gameObject.SetActive(true);
            PurchaseScreenSpinner.SetActive(false);
            PurchaseActionText.text  = "Return";
            PurchaseStatusField.text = "No Item Selected";
            PurchasePromptText.text  = "No item is currently selected.";
        } break;

        case PurchaseStatus.CREATING_PURCHASE: {
            PurchaseItemFields.SetActive(true);
            PurchaseActionButton.gameObject.SetActive(false);
            PurchaseScreenSpinner.SetActive(true);
            PurchaseStatusField.text = "Creating Purchase...";
            PurchasePromptText.text  = "Please wait while the purchase is being set up for the following item:";
        } break;

        case PurchaseStatus.CHECKOUT_READY: {
            PurchaseItemFields.SetActive(true);
            PurchaseActionButton.gameObject.SetActive(true);
            PurchaseScreenSpinner.SetActive(false);
            PurchaseActionText.text  = "Checkout";
            PurchaseStatusField.text = "Checkout Ready";
            PurchasePromptText.text  = "Please click the 'Checkout' button to complete the purchase for this item with PayPal:";
            CancelInvoke("checkForPurchaseStatusChange");
        } break;

        case PurchaseStatus.WAITING: {
            PurchaseItemFields.SetActive(true);
            PurchaseActionButton.gameObject.SetActive(true);
            PurchaseScreenSpinner.SetActive(true);
            PurchaseActionText.text  = "Cancel";
            PurchaseStatusField.text = "Waiting";
            PurchasePromptText.text  = "A Paypal tab has been opened in your web browser to complete the purchase for the following item:";
        } break;

        case PurchaseStatus.COMPLETE: {
            PurchaseItemFields.SetActive(true);
            PurchaseActionButton.gameObject.SetActive(false);
            PurchaseScreenSpinner.SetActive(false);
            PurchaseStatusField.text = "Purchase Completed!";
            PurchasePromptText.text  = "Purchase complete!";
            CancelInvoke("checkForPurchaseStatusChange");
            DialogScreenActions.INSTANCE.setContextPurchaseSuccess();
            DialogScreenActions.INSTANCE.ShowDialogScreen();
        } break;
        }

        currentPurchaseStatus = newStatus;
    }
예제 #13
0
 public void OnDisable()
 {
     AssetStoreAsset.PreviewInfo info = m_Asset == null ? null : m_Asset.previewInfo;
     if (info != null)
     {
         info.downloadProgress = -1f;
         info.buildProgress    = -1;
     }
     AssetStoreUtils.UnRegisterDownloadDelegate(this);
     m_Purchasing = PurchaseStatus.Init;
 }
예제 #14
0
        void PurchaseSuccessGUI()
        {
            AssetStoreAsset.PreviewInfo item = m_Asset.previewInfo;
            GUILayout.BeginHorizontal();
            GUILayout.Space(5);
            GUILayout.Label(s_AssetStoreLogo, GUIStyle.none, GUILayout.ExpandWidth(false));
            GUILayout.BeginVertical();
            GUILayout.Label("Purchase completed succesfully", EditorStyles.boldLabel);
            GUILayout.Label("You will receive a receipt in your email soon.");

            bool  hasMessage = m_Message != null && m_Message != "";
            float newHeight  = kStandardHeight + (hasMessage ? 20 : 0);

            if (newHeight != position.height)
            {
                position = new Rect(position.x, position.y, position.width, newHeight);
            }

            if (hasMessage)
            {
                GUILayout.Label(m_Message, EditorStyles.wordWrappedLabel);
            }

            GUILayout.Label("Package: " + item.packageName, EditorStyles.wordWrappedLabel);

            GUILayout.EndVertical();
            GUILayout.Space(5);
            GUILayout.EndHorizontal();

            GUILayout.FlexibleSpace();

            GUILayout.BeginHorizontal();
            GUILayout.Space(8);

            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Close"))
            {
                UsabilityAnalytics.Track(string.Format("/AssetStore/PurchaseOk/{0}/{1}", m_Asset.packageID, m_Asset.id));
                m_Asset = null;
                this.Close();
            }
            GUILayout.Space(5);
            if (GUILayout.Button("Import package"))
            {
                UsabilityAnalytics.Track(string.Format("/AssetStore/PurchaseOkImport/{0}/{1}", m_Asset.packageID, m_Asset.id));
                m_BuildAttempts = 1;
                m_Asset.previewInfo.buildProgress = 0f;
                m_Purchasing = PurchaseStatus.StartBuild;
            }
            GUILayout.Space(5);
            GUILayout.EndHorizontal();

            GUILayout.Space(5);
        }
예제 #15
0
        void BuildPackage()
        {
            AssetStoreAsset.PreviewInfo item = m_Asset.previewInfo;
            if (item == null)
            {
                return;
            }

            if (m_BuildAttempts++ > kMaxPolls)
            {
                EditorUtility.DisplayDialog("Building timed out", "Timed out during building of package", "Close");
                Close();
                return;
            }

            item.downloadProgress = -1f;
            m_Purchasing          = PurchaseStatus.Building;

            AssetStoreClient.BuildPackage(m_Asset, delegate(BuildPackageResult result) {
                if (this == null)
                {
                    return;                   // aborted
                }
                if (result.error != null)
                {
                    Debug.Log(result.error);
                    if (EditorUtility.DisplayDialog("Error building package",
                                                    "The server was unable to build the package. Please re-import.",
                                                    "Ok"))
                    {
                        Close();
                    }
                    return;
                }

                if (m_Asset == null || m_Purchasing != PurchaseStatus.Building || result.packageID != m_Asset.packageID)
                {
                    // Aborted
                    Close();
                }

                string url = result.asset.previewInfo.packageUrl;
                if (url != null && url != "")
                {
                    DownloadPackage();
                }
                else
                {
                    // Retry since package is not done building on server
                    m_Purchasing = PurchaseStatus.StartBuild;
                }
                Repaint();
            });
        }
예제 #16
0
        public override PurchaseStatus CanPurchase(int amount)
        {
            // TODO Is an amount > 1 even allowed here?
            PurchaseStatus status = base.CanPurchase(amount);

            if (LimitedItemsLeft < amount)
            {
                status = PurchaseStatus.LimitedSoldOut;
            }

            return(status);
        }
예제 #17
0
        public virtual PurchaseStatus Purchase(UserInfo user, int amount = 1)
        {
            PurchaseStatus status = CanPurchase(user, amount);

            if (status == PurchaseStatus.Ok)
            {
                user.Wallet.Credits -= this.CostCredits * amount;
                user.Wallet.SubstractActivityPoints(this.ActivityPointsType, this.CostActivityPoints * amount);
            }

            return(status);
        }
예제 #18
0
파일: User.cs 프로젝트: rijuntun/vocadb
        /// <summary>
        /// Add album to user collection.
        /// </summary>
        /// <param name="album">Album to be added. Cannot be null.</param>
        /// <param name="status">Purchase status.</param>
        /// <param name="mediaType">Media type.</param>
        /// <param name="rating">Rating.</param>
        /// <returns>Album link. Cannot be null.</returns>
        public virtual AlbumForUser AddAlbum(Album album, PurchaseStatus status, MediaType mediaType, int rating)
        {
            ParamIs.NotNull(() => album);

            var link = new AlbumForUser(this, album, status, mediaType, rating);

            AllAlbums.Add(link);
            album.UserCollections.Add(link);
            album.UpdateRatingTotals();

            return(link);
        }
예제 #19
0
        public PurchaseStatus BuyTicket(string userId, params int[] tmeventSeatId)
        {
            PurchaseStatus result = PurchaseStatus.PurchaseSucsess;

            // find price
            decimal price = 0;
            List <TMEventSeatDto> seats = _tmeventAreaService.GetTMEventSeatsByIds(tmeventSeatId)
                                          .Where(s => s.State == SeatState.Free).ToList();

            if (seats.Count == 0)
            {
                return(PurchaseStatus.NotRelevantSeats);
            }

            tmeventSeatId = seats.Select(s => s.Id).ToArray();

            List <int> areasId = seats.Select(s => s.TMEventAreaId).Distinct().ToList();

            areasId.ForEach(a => price += _tmeventAreaService.GetTMEventAreaPrice(a));

            // check sufficiency user balance
            if (_userService.IsBaslanceEnough(userId, price))
            {
                // to do make one transaction
                foreach (var item in tmeventSeatId)
                {
                    result = BuyTicket(userId, item);
                    if (result == PurchaseStatus.Wait)
                    {
                        break;
                    }
                }

                if (result == PurchaseStatus.Wait)
                {
                    foreach (var item in tmeventSeatId)
                    {
                        _tmeventAreaService.SetTMEventSeatState(item, SeatState.Free);
                    }
                }
                else
                {
                    // pay money
                    _userService.MakePurchase(userId, price);
                }
            }
            else
            {
                return(PurchaseStatus.NotEnothMoney);
            }

            return(result);
        }
예제 #20
0
 private void BuildPackage()
 {
     AssetStoreAsset.PreviewInfo previewInfo = this.m_Asset.previewInfo;
     if (previewInfo != null)
     {
         if (this.m_BuildAttempts++ > 150)
         {
             EditorUtility.DisplayDialog("Building timed out", "Timed out during building of package", "Close");
             base.Close();
         }
         else
         {
             previewInfo.downloadProgress = -1f;
             this.m_Purchasing            = PurchaseStatus.Building;
             AssetStoreClient.BuildPackage(this.m_Asset, delegate(BuildPackageResult result) {
                 if (this != null)
                 {
                     if (result.error != null)
                     {
                         Debug.Log(result.error);
                         if (EditorUtility.DisplayDialog("Error building package", "The server was unable to build the package. Please re-import.", "Ok"))
                         {
                             base.Close();
                         }
                     }
                     else
                     {
                         if (((this.m_Asset == null) || (this.m_Purchasing != PurchaseStatus.Building)) || (result.packageID != this.m_Asset.packageID))
                         {
                             base.Close();
                         }
                         string packageUrl = result.asset.previewInfo.packageUrl;
                         if ((packageUrl != null) && (packageUrl != string.Empty))
                         {
                             this.DownloadPackage();
                         }
                         else
                         {
                             this.m_Purchasing = PurchaseStatus.StartBuild;
                         }
                         base.Repaint();
                     }
                 }
             });
         }
     }
 }
		public static IQueryable<AlbumForUser> WhereHasCollectionStatus(this IQueryable<AlbumForUser> query, PurchaseStatus[] statuses) {
			
			if (statuses == null || !statuses.Any())
				return query;

			if (statuses.Length == 1) {
				
				var s = statuses[0];
				return query.Where(a => a.PurchaseStatus == s);

			} else {
				
				return query.Where(a => statuses.Contains(a.PurchaseStatus));

			}

		}
예제 #22
0
        public ActionResult BuyTicket(TMEventSeatIdViewModel model)
        {
            if (model == null)
            {
                return(HttpNotFound());
            }

            if (model.SeatsId == null || model.SeatsId.Length == 0)
            {
                ModelState.AddModelError("", "Chouse seats");
                return(View(model));
            }

            int[] seatsId = SeatsChousenToValid(model.SeatsId);

            // real loggic
            if (seatsId.Length > 0)
            {
                PurchaseStatus result =
                    _purchaceService.BuyTicket(User.Identity.GetUserId(), seatsId);

                switch (result)
                {
                case PurchaseStatus.PurchaseSucsess:
                    return(Redirect("Index"));

                case PurchaseStatus.NotEnothMoney:
                    ModelState.AddModelError("", "You has not enoth money. Top up balance"); break;

                case PurchaseStatus.Wait:
                    ModelState.AddModelError("", "Some one else buy seats now"); break;

                case PurchaseStatus.NotRelevantSeats:
                    ModelState.AddModelError("", "Seats olready chousen or not exist"); break;

                default:
                    ModelState.AddModelError("", "something wrong"); break;
                }
            }
            else
            {
                ModelState.AddModelError("", "Validate error");
            }

            return(View(model));
        }
예제 #23
0
        public ActionResult ReturnTicket(int seatsId = 0)
        {
            PurchaseStatus result =
                _purchaceService.ReturnTicket(User.Identity.GetUserId(), seatsId);

            switch (result)
            {
            case PurchaseStatus.ReturnTicketSucsess:
                return(Redirect("Index"));

            case PurchaseStatus.ReturnTicketFailWithPastEvent:
                ModelState.AddModelError("", "Event is olready in past. You cant't return tiket"); break;

            default:
                ModelState.AddModelError("", "something wrong"); break;
            }

            return(RedirectToAction("Index"));
        }
예제 #24
0
        public async Task CheckNotEnoghtProductQuantityPurchase()
        {
            HashSet <ProductInCart> product_quantity = new HashSet <ProductInCart>(); string clientPhone = "0544444444";
            Address    address  = new Address("1", "1", "1", "1", "1");
            CreditCard card     = new CreditCard("1", "1", "1", "1", "1", "1");
            Product    product1 = new Product(new Guid(), "1", 10, 10, 10, "category");
            Product    product2 = new Product(new Guid(), "2", 20, 20, 20, "category");

            product_quantity.Add(new ProductInCart(product1, 11));
            product_quantity.Add(new ProductInCart(product2, 22));
            Store store         = new Store("testStore", card, address);

            store.UpdateProduct(product1);
            store.UpdateProduct(product2);
            shoppingBasket.Product_quantity = product_quantity;
            PurchaseStatus purchaseStatus = await store.Purchase(shoppingBasket, clientPhone, address, card);

            Assert.AreEqual(false, purchaseStatus.PreConditions);
        }
        public ActionResult Create(PurchaseStatus purchaseStatus)
        {
            if (ModelState.IsValid)
            {
                db.PurchaseStatus.
                Add(purchaseStatus);

                var response = DBHelpers.SaveChanges(db);

                if (response.Succeeded)
                {
                    return(RedirectToAction("Index"));
                }

                ModelState.AddModelError(
                    string.Empty, response.Message);
            }

            return(View(purchaseStatus));
        }
예제 #26
0
        public async Task CheckLegalPurchaseAsync()
        {
            HashSet <ProductInCart> product_quantity = new HashSet <ProductInCart>();
            string     clientPhone = "0544444444";
            Address    address     = new Address("1", "1", "1", "1", "1");
            CreditCard card        = new CreditCard("1", "1", "1", "1", "1", "1");
            Product    product1    = new Product(new Guid(), "1", 10, 10, 10, "category");
            Product    product2    = new Product(new Guid(), "2", 20, 20, 20, "category");

            product_quantity.Add(new ProductInCart(product1, 1));
            product_quantity.Add(new ProductInCart(product2, 2));
            shoppingBasket.Product_quantity = product_quantity;
            Store store = new Store("testStore", card, address);

            store.Founder = Founder.makeFounder(new MemberState("userTest"), store);
            store.UpdateProduct(product1);
            store.UpdateProduct(product2);
            PurchaseStatus purchaseStatus = await store.Purchase(shoppingBasket, clientPhone, address, card);

            Assert.AreEqual(true, purchaseStatus.TransactionStatus.Status);
        }
예제 #27
0
        public static int GetPurchasesStatus(string description, CenECommerceContext db)
        {
            var purchaseStatus =
                db.PurchaseStatus.
                Where(ps => ps.Description == description).
                FirstOrDefault();

            if (purchaseStatus == null)
            {
                purchaseStatus =
                    new PurchaseStatus
                {
                    Description = description,
                };

                db.PurchaseStatus.Add(purchaseStatus);

                db.SaveChanges();
            }

            return(purchaseStatus.PurchaseStatusId);
        }
예제 #28
0
        public void OnPurchaseStatus(PurchaseStatus status) // IPurchaseListener
        {
            // called from app-store thread -> do not update views (use UI thread instead)

            switch (status)
            {
            case PurchaseStatus.Connected:
                Log("appstore connected");
                LogPurchases();
                break;

            case PurchaseStatus.Disconnected:
                Log("appstore disconnected");
                Dispose();
                break;

            case PurchaseStatus.Purchased:
                Log("appstore purchased");
                Analytics.TrackPurchase(Analytics.EVENT_PURCHASE_SUCCESS);
                Dispose();
                break;

            case PurchaseStatus.Consumed:
                Log("appstore *** error *** consumed ***"); // should never happen
                break;

            case PurchaseStatus.Cancelled:
                Log("appstore cancelled");
                Analytics.TrackPurchase(Analytics.EVENT_PURCHASE_CANCEL);
                Dispose();
                break;

            default:
                Dispose();
                break;
            }
        }
        public ProductPrice(XmlElement node) : base(node)
        {
            foreach (XmlElement propertyNode in node.ChildNodes)
            {
                switch (propertyNode.Name)
                {
                case "productId":
                    this._ProductId = propertyNode.InnerText;
                    continue;

                case "productType":
                    this._ProductType = (TransactionType)StringEnum.Parse(typeof(TransactionType), propertyNode.InnerText);
                    continue;

                case "price":
                    this._Price = ObjectFactory.Create <Price>(propertyNode);
                    continue;

                case "purchaseStatus":
                    this._PurchaseStatus = (PurchaseStatus)StringEnum.Parse(typeof(PurchaseStatus), propertyNode.InnerText);
                    continue;
                }
            }
        }
예제 #30
0
 public void UpdateAlbumForUser(int albumid, PurchaseStatus collectionStatus, MediaType mediaType, int rating)
 {
     Service.UpdateAlbumForUser(LoggedUserId, albumid, collectionStatus, mediaType, rating);
 }
예제 #31
0
 public EditCollectionDialogViewModel(PurchaseStatus purchaseStatus, MediaType mediaType)
 {
     PurchaseStatus = purchaseStatus;
     MediaType      = mediaType;
 }
예제 #32
0
 public string PostAlbumStatus(int albumId, PurchaseStatus collectionStatus, MediaType mediaType, int rating)
 {
     queries.UpdateAlbumForUser(permissionContext.LoggedUserId, albumId, collectionStatus, mediaType, rating);
     return "OK";
 }
        public PPVItemPriceDetails(XmlElement node) : base(node)
        {
            foreach (XmlElement propertyNode in node.ChildNodes)
            {
                switch (propertyNode.Name)
                {
                case "ppvModuleId":
                    this._PpvModuleId = propertyNode.InnerText;
                    continue;

                case "isSubscriptionOnly":
                    this._IsSubscriptionOnly = ParseBool(propertyNode.InnerText);
                    continue;

                case "price":
                    this._Price = ObjectFactory.Create <Price>(propertyNode);
                    continue;

                case "fullPrice":
                    this._FullPrice = ObjectFactory.Create <Price>(propertyNode);
                    continue;

                case "purchaseStatus":
                    this._PurchaseStatus = (PurchaseStatus)StringEnum.Parse(typeof(PurchaseStatus), propertyNode.InnerText);
                    continue;

                case "subscriptionId":
                    this._SubscriptionId = propertyNode.InnerText;
                    continue;

                case "collectionId":
                    this._CollectionId = propertyNode.InnerText;
                    continue;

                case "prePaidId":
                    this._PrePaidId = propertyNode.InnerText;
                    continue;

                case "ppvDescriptions":
                    this._PpvDescriptions = new List <TranslationToken>();
                    foreach (XmlElement arrayNode in propertyNode.ChildNodes)
                    {
                        this._PpvDescriptions.Add(ObjectFactory.Create <TranslationToken>(arrayNode));
                    }
                    continue;

                case "purchaseUserId":
                    this._PurchaseUserId = propertyNode.InnerText;
                    continue;

                case "purchasedMediaFileId":
                    this._PurchasedMediaFileId = ParseInt(propertyNode.InnerText);
                    continue;

                case "relatedMediaFileIds":
                    this._RelatedMediaFileIds = new List <IntegerValue>();
                    foreach (XmlElement arrayNode in propertyNode.ChildNodes)
                    {
                        this._RelatedMediaFileIds.Add(ObjectFactory.Create <IntegerValue>(arrayNode));
                    }
                    continue;

                case "startDate":
                    this._StartDate = ParseLong(propertyNode.InnerText);
                    continue;

                case "endDate":
                    this._EndDate = ParseLong(propertyNode.InnerText);
                    continue;

                case "discountEndDate":
                    this._DiscountEndDate = ParseLong(propertyNode.InnerText);
                    continue;

                case "firstDeviceName":
                    this._FirstDeviceName = propertyNode.InnerText;
                    continue;

                case "isInCancelationPeriod":
                    this._IsInCancelationPeriod = ParseBool(propertyNode.InnerText);
                    continue;

                case "ppvProductCode":
                    this._PpvProductCode = propertyNode.InnerText;
                    continue;
                }
            }
        }
예제 #34
0
 public void UpdateAlbumForUser(int albumid, PurchaseStatus collectionStatus, MediaType mediaType, int rating)
 {
     Data.UpdateAlbumForUser(LoggedUserId, albumid, collectionStatus, mediaType, rating);
 }