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(); } }
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); }
public static bool Delete(Int32 giftCertificateTransactionId) { GiftCertificateTransaction giftCertificateTransaction = new GiftCertificateTransaction(); if (giftCertificateTransaction.Load(giftCertificateTransactionId)) { return(giftCertificateTransaction.Delete()); } return(false); }
/// <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()); }
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(); } }
public static SaveResult Insert(GiftCertificateTransaction giftCertificateTransaction) { return(giftCertificateTransaction.Save()); }
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(); } } } } }