protected void BindGiftCertificate()
        {
            Name.Text = _GiftCertificate.Name;

            if (string.IsNullOrEmpty(_GiftCertificate.SerialNumber))
            {
                Serial.Text = "Not Assigned Yet.";
            }
            else
            {
                Serial.Text = _GiftCertificate.SerialNumber;
            }

            Balance.Text = _GiftCertificate.Balance.LSCurrencyFormat("lc");

            // SHOW LAST DESCRIPTION
            if (_GiftCertificate.Transactions != null && _GiftCertificate.Transactions.Count > 0)
            {
                GiftCertificateTransaction gct = _GiftCertificate.Transactions[_GiftCertificate.Transactions.Count - 1];
                Description.Text = gct.Description + " (Modified at " + gct.TransactionDate.ToString() + ")";
            }

            if (_GiftCertificate.IsExpired())
            {
                Expires.Text = "Already expired at " + _GiftCertificate.ExpirationDate.ToString();
            }
            else if (_GiftCertificate.ExpirationDate == null || _GiftCertificate.ExpirationDate.Equals(DateTime.MinValue))
            {
                Expires.Text = "N/A";
            }
            else
            {
                Expires.Text = _GiftCertificate.ExpirationDate.ToString();
            }
        }
Beispiel #2
0
        public static GiftCertificateTransaction Load(Int32 giftCertificateTransactionId, bool useCache)
        {
            if (giftCertificateTransactionId == 0)
            {
                return(null);
            }
            GiftCertificateTransaction giftCertificateTransaction = null;
            string key = "GiftCertificateTransaction_" + giftCertificateTransactionId.ToString();

            if (useCache)
            {
                giftCertificateTransaction = ContextCache.GetObject(key) as GiftCertificateTransaction;
                if (giftCertificateTransaction != null)
                {
                    return(giftCertificateTransaction);
                }
            }
            giftCertificateTransaction = new GiftCertificateTransaction();
            if (giftCertificateTransaction.Load(giftCertificateTransactionId))
            {
                if (useCache)
                {
                    ContextCache.SetObject(key, giftCertificateTransaction);
                }
                return(giftCertificateTransaction);
            }
            return(null);
        }
        /// <summary>
        /// Add a new transaction to the gift certificate indicating that the gift certificate is created
        /// </summary>
        public void AddCreatedTransaction()
        {
            GiftCertificateTransaction trans = new GiftCertificateTransaction();

            trans.Amount          = this.Balance;
            trans.Description     = "Gift certificate created.";
            trans.TransactionDate = LocaleHelper.LocalNow;
            this.Transactions.Add(trans);
        }
        /// <summary>
        /// Adds a new transaction to the gift certificate for updating its expiry date
        /// </summary>
        /// <param name="oldDate">The old expiry date</param>
        /// <param name="newDate">The new expiry date</param>
        public void AddExpiryUpdatedTransaction(DateTime oldDate, DateTime newDate)
        {
            GiftCertificateTransaction trans = new GiftCertificateTransaction();

            trans.Amount          = this.Balance;
            trans.Description     = string.Format("Gift certificate expire date updated manually from {0:d} to {1:d}.", oldDate, newDate);
            trans.TransactionDate = LocaleHelper.LocalNow;
            this.Transactions.Add(trans);
        }
        /// <summary>
        /// Adds a new transaction to the gift certificate for updating its balance
        /// </summary>
        /// <param name="oldBalance">The old balance</param>
        /// <param name="newBalance">The new balance</param>
        public void AddBalanceUpdatedTransaction(LSDecimal oldBalance, LSDecimal newBalance)
        {
            GiftCertificateTransaction trans = new GiftCertificateTransaction();

            trans.Amount          = newBalance - oldBalance;
            trans.Description     = string.Format("Gift certificate balance updated manually from {0:lc} to {1:lc}.", oldBalance, newBalance);
            trans.TransactionDate = LocaleHelper.LocalNow;
            this.Transactions.Add(trans);
        }
        /// <summary>
        /// Processes a gift certificate validation event
        /// </summary>
        /// <param name="gc">Gift certificate that has been validated</param>
        /// <param name="trans">GiftCertificateTransaction</param>
        public static void GiftCertificateValidated(GiftCertificate gc, GiftCertificateTransaction trans)
        {
            Hashtable parameters = new Hashtable();

            parameters["order"]           = gc.OrderItem.Order;
            parameters["customer"]        = gc.OrderItem.Order.User;
            parameters["giftcertificate"] = gc;
            ProcessEmails(StoreEvent.GiftCertificateValidated, parameters);
        }
Beispiel #7
0
        public static bool Delete(Int32 giftCertificateTransactionId)
        {
            GiftCertificateTransaction giftCertificateTransaction = new GiftCertificateTransaction();

            if (giftCertificateTransaction.Load(giftCertificateTransactionId))
            {
                return(giftCertificateTransaction.Delete());
            }
            return(false);
        }
Beispiel #8
0
        /// <summary>
        /// Submits an authorization request
        /// </summary>
        /// <param name="authorizeRequest">The authorization request</param>
        /// <returns>Transaction that represents the result of the authorization request</returns>
        public override Transaction DoAuthorize(AuthorizeTransactionRequest authorizeRequest)
        {
            Transaction transaction = new Transaction();

            transaction.PaymentGatewayId = this.PaymentGatewayId;
            //always use authorize capture.
            transaction.TransactionType = TransactionType.AuthorizeCapture;

            string          serialNumber = authorizeRequest.Payment.AccountData;
            GiftCertificate gc           = GiftCertificateDataSource.LoadForSerialNumber(serialNumber);

            string errorMessage = string.Empty;

            if (gc == null)
            {
                errorMessage = "No gift certificate found with given serial number.";
            }
            else if (gc.IsExpired())
            {
                errorMessage = "Gift certificate is expired.";
            }
            else if (gc.Balance < authorizeRequest.Amount)
            {
                errorMessage = "Gift certificate does not have enough balance to complete this transaction.";
            }
            else
            {
                LSDecimal newAmount = gc.Balance - authorizeRequest.Amount;
                gc.Balance = newAmount;
                GiftCertificateTransaction trans = new GiftCertificateTransaction();
                trans.TransactionDate = LocaleHelper.LocalNow;
                trans.Amount          = authorizeRequest.Amount;
                trans.OrderId         = authorizeRequest.Payment.OrderId;
                trans.Description     = string.Format("An amount of {0:lc} used in purchase. Remaining balance is {1:lc}.", authorizeRequest.Amount, newAmount);
                gc.Transactions.Add(trans);
                gc.Save();
            }

            if (string.IsNullOrEmpty(errorMessage))
            {
                transaction.TransactionStatus = TransactionStatus.Successful;
                transaction.ResponseCode      = "0";
                transaction.ResponseMessage   = "SUCCESS";
                transaction.Amount            = authorizeRequest.Amount;
            }
            else
            {
                transaction.TransactionStatus = TransactionStatus.Failed;
                transaction.ResponseCode      = "1";
                transaction.ResponseMessage   = errorMessage;
                transaction.Amount            = authorizeRequest.Amount;
            }

            return(transaction);
        }
        protected bool HasOrder(object obj)
        {
            GiftCertificateTransaction trans = obj as GiftCertificateTransaction;

            if (trans == null)
            {
                return(false);
            }
            if (trans.Order == null)
            {
                return(false);
            }
            return(trans.Order.Id > 0);
        }
        protected string GetOrderLink(object obj)
        {
            GiftCertificateTransaction trans = obj as GiftCertificateTransaction;

            if (trans == null)
            {
                return("");
            }
            if (trans.Order == null)
            {
                return("");
            }
            return("~/Admin/Orders/ViewOrder.aspx?OrderNumber=" + trans.Order.OrderNumber.ToString());
        }
        protected string GetOrderNumber(object obj)
        {
            GiftCertificateTransaction trans = obj as GiftCertificateTransaction;

            if (trans == null)
            {
                return("");
            }
            if (trans.Order == null)
            {
                return("");
            }
            return(trans.Order.OrderNumber.ToString());
        }
Beispiel #12
0
        public static GiftCertificateTransactionCollection LoadForOrder(Int32 orderId, int maximumRows, int startRowIndex, string sortExpression)
        {
            //CREATE THE DYNAMIC SQL TO LOAD OBJECT
            StringBuilder selectQuery = new StringBuilder();

            selectQuery.Append("SELECT");
            if (maximumRows > 0)
            {
                selectQuery.Append(" TOP " + (startRowIndex + maximumRows).ToString());
            }
            selectQuery.Append(" " + GiftCertificateTransaction.GetColumnNames(string.Empty));
            selectQuery.Append(" FROM ac_GiftCertificateTransactions");
            selectQuery.Append(" WHERE OrderId = @orderId");
            if (!string.IsNullOrEmpty(sortExpression))
            {
                selectQuery.Append(" ORDER BY " + sortExpression);
            }
            Database  database      = Token.Instance.Database;
            DbCommand selectCommand = database.GetSqlStringCommand(selectQuery.ToString());

            database.AddInParameter(selectCommand, "@orderId", System.Data.DbType.Int32, NullableData.DbNullify(orderId));
            //EXECUTE THE COMMAND
            GiftCertificateTransactionCollection results = new GiftCertificateTransactionCollection();
            int thisIndex = 0;
            int rowCount  = 0;

            using (IDataReader dr = database.ExecuteReader(selectCommand))
            {
                while (dr.Read() && ((maximumRows < 1) || (rowCount < maximumRows)))
                {
                    if (thisIndex >= startRowIndex)
                    {
                        GiftCertificateTransaction giftCertificateTransaction = new GiftCertificateTransaction();
                        GiftCertificateTransaction.LoadDataReader(giftCertificateTransaction, dr);
                        results.Add(giftCertificateTransaction);
                        rowCount++;
                    }
                    thisIndex++;
                }
                dr.Close();
            }
            return(results);
        }
        protected void GiftCertificatesGrid_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int             index             = AlwaysConvert.ToInt(e.CommandArgument);
            int             GiftCertificateId = AlwaysConvert.ToInt(GiftCertificatesGrid.DataKeys[index].Value);
            GiftCertificate gc = FindGiftCertificate(GiftCertificateId);

            if (gc == null)
            {
                return;
            }

            IGiftCertKeyProvider       provider = AbleContext.Container.Resolve <IGiftCertKeyProvider>();
            GiftCertificateTransaction trans;

            if (e.CommandName.Equals("Activate"))
            {
                gc.SerialNumber       = provider.GenerateGiftCertificateKey();
                trans                 = new GiftCertificateTransaction();
                trans.GiftCertificate = gc;
                trans.Amount          = gc.Balance;
                trans.Description     = "Gift certificate activated.";
                trans.OrderId         = _Order.Id;
                trans.TransactionDate = LocaleHelper.LocalNow;
                gc.Transactions.Add(trans);
                gc.Save();
                // Trigger Gift Certificate Activated / Validate Event
                StoreEventEngine.GiftCertificateValidated(gc, trans);
                BindGiftCertificatesGrid();
            }
            else if (e.CommandName.Equals("Deactivate"))
            {
                gc.SerialNumber       = "";
                trans                 = new GiftCertificateTransaction();
                trans.GiftCertificate = gc;
                trans.Amount          = gc.Balance;
                trans.Description     = "Gift certificate deactivated.";
                trans.OrderId         = _Order.Id;
                trans.TransactionDate = LocaleHelper.LocalNow;
                gc.Transactions.Add(trans);
                gc.Save();
                BindGiftCertificatesGrid();
            }
        }
Beispiel #14
0
 public static SaveResult Insert(GiftCertificateTransaction giftCertificateTransaction)
 {
     return(giftCertificateTransaction.Save());
 }
Beispiel #15
0
 public static bool Delete(GiftCertificateTransaction giftCertificateTransaction)
 {
     return(giftCertificateTransaction.Delete());
 }
        /// <summary>
        /// Performs operations that should be done when an order is paid or paid with credit balance.
        /// </summary>
        /// <param name="order">order that was paid</param>
        private static void ProcessPaidOrder(Order order)
        {
            //CHECK FOR SUBSCRIPTIONS
            try
            {
                //ANY SUBSCRIPTIONS THAT WERE "ONE TIME ONLY" CHARGES SHOULD BE ACTIVATED
                //THESE WILL NOT BE ACTIVATED BY REFERENCE TO PAYMENT, AND WILL NOT HAVE ANY PAYMENTS ASSOCIATED
                SubscriptionCollection subscriptions = SubscriptionDataSource.LoadForOrder(order.OrderId);
                foreach (Subscription s in subscriptions)
                {
                    if ((!s.IsActive) && (s.Payments.Count == 0))
                    {
                        s.Activate();
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Error generating subscriptions for order #" + order.OrderId.ToString(), ex);
            }

            try
            {
                IGiftCertKeyProvider       provider = new DefaultGiftCertKeyProvider();
                GiftCertificateTransaction trans;
                foreach (OrderItem orderItem in order.Items)
                {
                    //IF THERE ARE ANY GIFT CERTS ATTACHED THEN ACTIVATE THOSE
                    if (orderItem.GiftCertificates != null && orderItem.GiftCertificates.Count > 0)
                    {
                        foreach (GiftCertificate gc in orderItem.GiftCertificates)
                        {
                            gc.SerialNumber       = provider.GenerateGiftCertificateKey();
                            trans                 = new GiftCertificateTransaction();
                            trans.Amount          = gc.Balance;
                            trans.Description     = "Gift certificate activated.";
                            trans.OrderId         = order.OrderId;
                            trans.TransactionDate = LocaleHelper.LocalNow;
                            gc.Transactions.Add(trans);
                            gc.Save();
                            // Trigger Gift Certificate Activated / Validate Event
                            StoreEventEngine.GiftCertificateValidated(gc, trans);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Error activating gift certificates for order #" + order.OrderId.ToString(), ex);
            }


            foreach (OrderItem orderItem in order.Items)
            {
                //IF THERE ARE ANY DIGITAL GOODS ATTACHED THEN ACTIVATE/FULFILL THOSE
                if (orderItem.DigitalGoods != null && orderItem.DigitalGoods.Count > 0)
                {
                    foreach (OrderItemDigitalGood oidg in orderItem.DigitalGoods)
                    {
                        bool changed = false;
                        try
                        {
                            if (!oidg.IsActivated() && oidg.DigitalGood != null &&
                                oidg.DigitalGood.ActivationMode != ActivationMode.Manual)
                            {
                                oidg.Activate();
                                changed = true;
                            }
                        }
                        catch (Exception ex)
                        {
                            Logger.Error("Error activating digital good for order #" + order.OrderId.ToString(), ex);
                        }

                        try
                        {
                            if (!oidg.IsSerialKeyAcquired() && oidg.DigitalGood != null &&
                                oidg.DigitalGood.FulfillmentMode != FulfillmentMode.Manual)
                            {
                                oidg.AcquireSerialKey();
                                changed = true;
                            }
                        }
                        catch (Exception ex)
                        {
                            Logger.Error("Error fulfilling digital good for order #" + order.OrderId.ToString(), ex);
                        }

                        if (changed)
                        {
                            oidg.Save();
                        }
                    }
                }
            }
        }