コード例 #1
0
        protected void SaveSubscriptionClick(object sender, EventArgs e)
        {
            var subscriptions = new Subscriptions();
            var isNew         = true;

            if (Request.Params["id"] != "0")
            {
                isNew           = false;
                subscriptions   = _subscriptions;
                _subscriptionId = _subscriptions.Id;
            }
            else
            {
                subscriptions.IsActive = true;
            }

            int productType = int.Parse(SubscriptionTypeDdl.SelectedValue);

            subscriptions.SubscriptionType = productType;
            subscriptions.Name             = SubscriptionNameText.Text.Trim();
            subscriptions.MaxGuest         = Int16.Parse(HidMaxGuest.Value);
            double price;

            double.TryParse(PriceText.Text, out price);
            subscriptions.Price = price;
            int maxPurchase;

            int.TryParse(MaxPurchaseText.Text, out maxPurchase);
            subscriptions.ProductHighlight = ProductHighlightText.Text;
            subscriptions.WhatYouGet       = WhatYouGetEditor.Text;
            subscriptions.MaxPurchases     = maxPurchase;

            // SEO Tab 2
            subscriptions.MetaDescription = MetaDescription.Text;
            subscriptions.MetaKeyword     = MetaKeyword.Text;

            // Photos on tab 3
            if (isNew)
            {
                switch (int.Parse(SubscriptionTypeDdl.SelectedValue))
                {
                case (int)Enums.SubscriptionType.Subscription:
                    string planId = SubscriptionNameText.Text.Trim().Replace(" ", "-").ToLower();
                    try
                    {
                        // Create Plans On Stripe
                        var planOptions = new StripePlanCreateOptions
                        {
                            Id       = planId,
                            Name     = SubscriptionNameText.Text.Trim(),
                            Amount   = Convert.ToInt32(price * 100),
                            Currency = "usd",
                            Interval = "month"
                        };
                        CreateStripePlan(planOptions);
                    }
                    catch (Exception ex)
                    {
                        ErrorMessageLabel.Visible = true;
                        ErrorMessageLabel.Text    = ex.Message + " - " + planId;
                        return;
                    }
                    subscriptions.StripePlanId      = planId;
                    subscriptions.StripePlanCreated = DateTime.UtcNow;
                    break;

                case (int)Enums.SubscriptionType.GiftCard:
                    break;
                }
                _subscriptionId = _subscriptionRepository.Add(subscriptions);
            }
            else
            {
                var photos = new List <SubscriptionImages>();
                foreach (ListViewDataItem item in SubscriptionImageListView.Items)
                {
                    //to get the dropdown of each line
                    HiddenField productPhotoId = (HiddenField)item.FindControl("PhotoId");

                    var photo     = _subscriptionRepository.GetImageById(int.Parse(productPhotoId.Value));
                    var orderItem = (HiddenField)item.FindControl("Order");
                    photo.Order = 1;
                    if (!string.IsNullOrEmpty(orderItem.Value))
                    {
                        photo.Order    = int.Parse(orderItem.Value);
                        photo.IsCover  = false;
                        photo.IsActive = true;
                    }

                    photos.Add(photo);
                }
                if (photos.FirstOrDefault(p => p.Order == 0 || p.Order == 1) != null)
                {
                    photos.First(p => p.Order == 0 || p.Order == 1).IsCover = true;
                }

                _subscriptionRepository.Update(subscriptions, photos);
            }

            string productImageDefault = Constant.ImageDefault;
            var    productImage        = _subscriptionRepository.SubscriptionImagesList.FirstOrDefault(x => x.SubscriptionId == subscriptions.Id && x.IsCover && x.IsActive);

            if (productImage != null)
            {
                productImageDefault = productImage.Url;
            }

            if (!string.IsNullOrEmpty(productImageDefault))
            {
                var    imageName = Helper.ReplaceLastOccurrence(productImageDefault, ".", "-ovl.");
                string imageUrl  = Server.MapPath(imageName);
                if (!File.Exists(imageUrl))
                {
                    System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(productImageDefault));
                    Bitmap newImage            = Helper.ChangeOpacity(image, 0.7f);
                    using (MemoryStream memory = new MemoryStream())
                    {
                        using (FileStream fs = new FileStream(imageUrl, FileMode.Create, FileAccess.ReadWrite))
                        {
                            newImage.Save(memory, ImageFormat.Jpeg);
                            byte[] bytes = memory.ToArray();
                            fs.Write(bytes, 0, bytes.Length);
                        }
                    }
                }
            }

            _subscriptionRepository.ResetCache();

            Response.Redirect(Constant.SubscriptionListPage);
        }