示例#1
0
        /// <summary>
        /// Saves the Dataobject to the Database
        /// </summary>
        /// <param name="IndexColumn"></param>
        /// <param name="db"></param>
        public void SaveObject(Database db)
        {
            this.SetValue(LASTMODIFIED, DateTime.Now);
            this.SetValue(MODIFIEDBY, System.Environment.UserName);
            StringBuilder whereBuilder = new StringBuilder();
            bool first = true;
            foreach (String column in PrimaryKeyColumns)
            {
                if (!first)
                {
                    whereBuilder.Append(" AND ");
                }
                else
                {
                    first = false;
                }
                whereBuilder.Append("`" + column + "` = ");
                if (data.IsColumnNumberDataType(column))
                {
                    whereBuilder.Append(data.getString(column));
                }
                else
                {
                    whereBuilder.Append("'" + data.getString(column) + "'");
                }
            }
            if (newObject)
            {
                try
                {
                    db.Insert(data.GetTableName(), data);
                    newObject = false;
                    updates = new Hashtable();
                    //Parse an array of UniqueID Columns
                    StringBuilder description = new StringBuilder();
                    first = true;
                    foreach (String column in PrimaryKeyColumns)
                    {
                        if (!first)
                        {
                            description.Append(" and ");
                        }
                        else
                        {
                            first = false;
                        }
                        description.Append(column + " is " + data.getString(column));
                    }
                    //Submit an audit event
                    AuditEvent auditEvent = new AuditEvent(db);
                    auditEvent.EventDescription(data.GetTableName(), "New Object added, " + description.ToString());
                    auditEvent.SaveEvent();
                }
                catch (Exception e)
                {
                    Console.Write(e.StackTrace);
                    throw new Exception("Database Error, Audit log failed.", e);
                }
            }
            else
            {
                StringBuilder setStr = new StringBuilder();
                bool firstKey = true;
                foreach (Object key in updates.Keys)
                {
                    if (!firstKey)
                    {
                        setStr.Append(",");
                    }
                    else
                    {
                        firstKey = false;
                    }
                    setStr.Append("`" + key.ToString() + "` = ");
                    if (data.IsColumnNumberDataType(key.ToString()))
                    {
                        setStr.Append(updates[key].ToString());
                    }
                    else if (updates[key].Equals(DBNull.Value))
                    {
                        setStr.Append("NULL");
                    }
                    else
                    {
                        setStr.Append("'" + updates[key].ToString() + "'");
                    }
                }
                DataSet check = db.Select(LASTMODIFIED + "," + MODIFIEDBY, data.GetTableName(), whereBuilder.ToString());
                MessageBoxResult askBox;
                if (!check.getDateTime(LASTMODIFIED).Equals(data.getDateTime(LASTMODIFIED)))
                {
                    askBox = MessageBox.Show(data.GetTableName() + " Object has already been modified by " + check.getString(MODIFIEDBY) + " since you have opened this object. Continue with operation?", "Consistency Error", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
                    if (askBox == MessageBoxResult.Yes)
                    {
                        db.Update(data.GetTableName(), setStr.ToString(), whereBuilder.ToString());
                        UpdateAuditEvent(db);
                        data = db.Select("*", data.GetTableName(), whereBuilder.ToString());

                    }
                    else
                    {
                        throw new Exception("Database Error, Object was out of sync. Reload Object.");
                    }
                }
                else
                {
                    db.Update(data.GetTableName(), setStr.ToString(), whereBuilder.ToString());
                    UpdateAuditEvent(db);

                }
                foreach (String column in PrimaryKeyColumns)
                {
                    if (updates.ContainsKey(column))
                    {
                        data.SetCellValue(0, column, updates[column]);
                    }
                }
                updates.Clear();
            }
            ReloadObject();
            //data = db.Select("*", data.GetTableName(), whereBuilder.ToString());
        }
 private void cmdRemoveItem_Click(object sender, RoutedEventArgs e)
 {
     if (!isTransactionLocked)
     {
         MessageBoxResult res = MessageBox.Show("Are you sure you want to remove this item from the Transaction?", "Removal of Item", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
         if (res == MessageBoxResult.Yes)
         {
             mTransactionItems.Remove(mTransactionItem.GetItemID());
             InventoryItem item = mTransactionItem.GetInventoryItem();
             if (item.getQuantity() > 0)
             {
                 float newAvg = (item.getAverageCost() * item.getQuantity()) - (mTransactionItem.GetUnitPrice() * mTransactionItem.GetQuantity());
                 newAvg = newAvg / (item.getQuantity() - mTransactionItem.GetQuantity());
                 if (item.getQuantity() - mTransactionItem.GetQuantity() > 0)
                 {
                     item.setAverageCost(newAvg);
                     item.setQuantity(item.getQuantity() - mTransactionItem.GetQuantity());
                 }
                 else
                 {
                     item.setQuantity(0);
                 }
                 item.SaveObject(db);
             }
             db.Delete(InventoryTransactionItem.Table, InventoryTransactionItem.Fields.transactionID.ToString() + " = '" + mTransactionItem.GetTransactionID() + "' AND " + InventoryTransactionItem.Fields.itemID.ToString() + " = '" + mTransactionItem.GetItemID() + "'");
             AuditEvent aEvent = new AuditEvent(db);
             aEvent.EventDescription(InventoryTransactionItem.Table, "Item " + mTransactionItem.GetItemID() + " with a quantity " + mTransactionItem.GetQuantity() + " has been removed from transaction " + mTransaction.GetTransactionID());
             aEvent.SaveEvent();
             isTransactionModified = true;
             LoadDateGrid();
             ClearFields();
             lockItemFields();
             displayOrHideForm();
             this.TabIsGainingFocus();
         }
     }
     else
     {
         MessageBox.Show("Transaction is locked. Please unlock the transaction to modify it.", "Transaction Locked", MessageBoxButton.OK, MessageBoxImage.Warning);
     }
 }
示例#3
0
 private void UpdateAuditEvent(Database db)
 {
     StringBuilder eventDesc = new StringBuilder();
     eventDesc.Append("Object was updated, ");
     Boolean first = true;
     foreach (Object key in updates.Keys)
     {
         if (!key.ToString().Equals(LASTMODIFIED) & !key.ToString().Equals(MODIFIEDBY))
         {
             if (first)
             {
                 first = false;
             }
             else
             {
                 eventDesc.Append(", ");
             }
             eventDesc.Append(key.ToString() + " From \"" + data.getString(key.ToString()) + "\" to \"" + updates[key].ToString() + "\"");
         }
     }
     AuditEvent auditEvent = new AuditEvent(db);
     auditEvent.EventDescription(data.GetTableName(), eventDesc.ToString());
     auditEvent.SaveEvent();
 }