예제 #1
0
        private bool ValidateVolumeOrder(IPersistableList <BasketItem> items)
        {
            foreach (var rec in items)
            {
                if (rec.OrderItemType == OrderItemType.Product)
                {
                    decimal MinQuantity = 0;

                    if (rec.Product.VolumeDiscounts.Any() && rec.Product.VolumeDiscounts[0].Levels.Any())
                    {
                        VolumeDiscount VolumeDiscount = rec.Product.VolumeDiscounts[0];
                        MinQuantity = VolumeDiscount.Levels.First().MinValue;
                    }
                    else
                    {
                        MinQuantity = rec.Product.MinQuantity;
                    }

                    if (rec.Quantity < MinQuantity)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
예제 #2
0
        DbDataReader IDbManager.SelectList(IPersistableList obj)
        {
            bool startComma = false;

            string where = "";
            foreach (var column in obj.DbPrimaryKey)
            {
                if (startComma)
                {
                    where += " AND ";
                }
                else
                {
                    startComma = true;
                }

                where += string.Format("`{0}`=@{0}", column.Column);
            }

            return(ReaderQuery(string.Format("SELECT * FROM `{0}_list` WHERE {1}", obj.DbTable, where), obj.DbPrimaryKey));
        }
예제 #3
0
        private MySqlCommand DeleteList(MySqlConnection connection, MySqlTransaction transaction, IPersistableList obj)
        {
            string commandText;

            if (!deleteListCommands.TryGetValue(obj.GetType(), out commandText))
            {
                bool startComma = false;
                string where = "";
                foreach (var column in obj.DbPrimaryKey)
                {
                    if (startComma)
                    {
                        where += " AND ";
                    }
                    else
                    {
                        startComma = true;
                    }

                    where += string.Format("`{0}`=@{0}", column.Column);
                }

                commandText = string.Format("DELETE FROM `{0}_list` WHERE {1}", obj.DbTable, where);

                deleteListCommands[obj.GetType()] = commandText;
            }

            MySqlCommand command = connection.CreateCommand();

            command.CommandText = commandText;

            if (transaction != null)
            {
                command.Transaction = transaction;
            }

            foreach (var column in obj.DbPrimaryKey)
            {
                AddParameter(command, column, DataRowVersion.Original);
            }

            return(command);
        }
예제 #4
0
        private MySqlCommand CreateList(MySqlConnection connection, MySqlTransaction transaction, IPersistableList obj)
        {
            string commandText;

            if (!createListCommands.TryGetValue(obj.GetType(), out commandText))
            {
                string columns = "";

                bool startComma = false;

                foreach (var column in obj.DbPrimaryKey)
                {
                    if (startComma)
                    {
                        columns += ",";
                    }
                    startComma = true;
                    columns   += string.Format("`{0}`", column.Column);
                }

                foreach (var column in obj.DbListColumns)
                {
                    if (startComma)
                    {
                        columns += ",";
                    }
                    startComma = true;
                    columns   += string.Format("`{0}`", column.Column);
                }

                commandText = string.Format("INSERT INTO `{0}_list` ({1}) VALUES ", obj.DbTable, columns);

                createListCommands[obj.GetType()] = commandText;
            }

            var builder = new StringBuilder(commandText);

            bool startColumnsComma = false;
            bool empty             = true;
            int  row = 0;

            MySqlCommand command = connection.CreateCommand();

            foreach (var columns in obj.DbListValues())
            {
                empty = false;

                if (startColumnsComma)
                {
                    builder.Append(", (");
                }
                else
                {
                    builder.Append("(");
                    startColumnsComma = true;
                }

                bool startComma = false;

                foreach (var column in obj.DbPrimaryKey)
                {
                    if (startComma)
                    {
                        builder.Append(", ");
                    }
                    else
                    {
                        startComma = true;
                    }

                    var param = string.Format("@{0}__{1}", column.Column, row);
                    builder.Append(param);
                    command.Parameters.AddWithValue(param, column.Value);
                }

                foreach (var column in columns)
                {
                    if (startComma)
                    {
                        builder.Append(", ");
                    }
                    else
                    {
                        startComma = true;
                    }

                    var param = string.Format("@{0}__{1}", column.Column, row);
                    builder.Append(param);
                    command.Parameters.AddWithValue(param, column.Value);
                }
                builder.Append(")");

                row++;
            }

            if (empty)
            {
                return(null);
            }

            if (transaction != null)
            {
                command.Transaction = transaction;
            }

            command.CommandText = builder.ToString();

            return(command);
        }