/// <summary> /// Creates a basket item for a product /// </summary> /// <param name="productId">The product for which to create the basket item</param> /// <param name="quantity">The quantity of the basket item</param> /// <returns>The BasketItem created</returns> public static BasketItem CreateForProduct(int productId, short quantity) { return(BasketItemDataSource.CreateForProduct(productId, quantity, string.Empty, String.Empty, Token.Instance.UserId)); }
/// <summary> /// Creates a basket item for a product /// </summary> /// <param name="productId">Id of the product for which to create the basket item</param> /// <param name="quantity">The quantity of basket item</param> /// <param name="optionList">List of option ids for the variant</param> /// <param name="kitList">List of product Ids of the kit items</param> /// <returns>The BasketItem created</returns> public static BasketItem CreateForProduct(int productId, short quantity, string optionList, string kitList) { return(BasketItemDataSource.CreateForProduct(productId, quantity, optionList, kitList, Token.Instance.UserId)); }
/// <summary> /// Saves this BasketItem object to the database. /// </summary> /// <returns><b>SaveResult</b> enumeration that represents the result of the save operation.</returns> protected SaveResult BaseSave() { if (this.IsDirty) { Database database = Token.Instance.Database; bool recordExists = true; if (this.BasketItemId == 0) { recordExists = false; } if (this.OrderBy < 0) { this.OrderBy = BasketItemDataSource.GetNextOrderBy(this.BasketId); } //SET DEFAULT FOR DATE FIELD if (this.LastModifiedDate == System.DateTime.MinValue) { this.LastModifiedDate = LocaleHelper.LocalNow; } if (recordExists) { //verify whether record is already present StringBuilder selectQuery = new StringBuilder(); selectQuery.Append("SELECT COUNT(*) As RecordCount FROM ac_BasketItems"); selectQuery.Append(" WHERE BasketItemId = @BasketItemId"); using (DbCommand selectCommand = database.GetSqlStringCommand(selectQuery.ToString())) { database.AddInParameter(selectCommand, "@BasketItemId", System.Data.DbType.Int32, this.BasketItemId); if ((int)database.ExecuteScalar(selectCommand) == 0) { recordExists = false; } } } int result = 0; if (recordExists) { //UPDATE StringBuilder updateQuery = new StringBuilder(); updateQuery.Append("UPDATE ac_BasketItems SET "); updateQuery.Append("ParentItemId = @ParentItemId"); updateQuery.Append(", BasketId = @BasketId"); updateQuery.Append(", BasketShipmentId = @BasketShipmentId"); updateQuery.Append(", ProductId = @ProductId"); updateQuery.Append(", OptionList = @OptionList"); updateQuery.Append(", TaxCodeId = @TaxCodeId"); updateQuery.Append(", Name = @Name"); updateQuery.Append(", Sku = @Sku"); updateQuery.Append(", Price = @Price"); updateQuery.Append(", Weight = @Weight"); updateQuery.Append(", Quantity = @Quantity"); updateQuery.Append(", LineMessage = @LineMessage"); updateQuery.Append(", OrderItemTypeId = @OrderItemTypeId"); updateQuery.Append(", OrderBy = @OrderBy"); updateQuery.Append(", WrapStyleId = @WrapStyleId"); updateQuery.Append(", GiftMessage = @GiftMessage"); updateQuery.Append(", WishlistItemId = @WishlistItemId"); updateQuery.Append(", ShippableId = @ShippableId"); updateQuery.Append(", LastModifiedDate = @LastModifiedDate"); updateQuery.Append(", TaxRate = @TaxRate"); updateQuery.Append(", TaxAmount = @TaxAmount"); updateQuery.Append(", KitList = @KitList"); updateQuery.Append(", CustomFields = @CustomFields"); updateQuery.Append(" WHERE BasketItemId = @BasketItemId"); using (DbCommand updateCommand = database.GetSqlStringCommand(updateQuery.ToString())) { database.AddInParameter(updateCommand, "@BasketItemId", System.Data.DbType.Int32, this.BasketItemId); database.AddInParameter(updateCommand, "@ParentItemId", System.Data.DbType.Int32, this.ParentItemId); database.AddInParameter(updateCommand, "@BasketId", System.Data.DbType.Int32, this.BasketId); database.AddInParameter(updateCommand, "@BasketShipmentId", System.Data.DbType.Int32, NullableData.DbNullify(this.BasketShipmentId)); database.AddInParameter(updateCommand, "@ProductId", System.Data.DbType.Int32, this.ProductId); database.AddInParameter(updateCommand, "@OptionList", System.Data.DbType.String, NullableData.DbNullify(this.OptionList)); database.AddInParameter(updateCommand, "@TaxCodeId", System.Data.DbType.Int32, NullableData.DbNullify(this.TaxCodeId)); database.AddInParameter(updateCommand, "@Name", System.Data.DbType.String, this.Name); database.AddInParameter(updateCommand, "@Sku", System.Data.DbType.String, NullableData.DbNullify(this.Sku)); database.AddInParameter(updateCommand, "@Price", System.Data.DbType.Decimal, this.Price); database.AddInParameter(updateCommand, "@Weight", System.Data.DbType.Decimal, this.Weight); database.AddInParameter(updateCommand, "@Quantity", System.Data.DbType.Int16, this.Quantity); database.AddInParameter(updateCommand, "@LineMessage", System.Data.DbType.String, NullableData.DbNullify(this.LineMessage)); database.AddInParameter(updateCommand, "@OrderItemTypeId", System.Data.DbType.Int16, this.OrderItemTypeId); database.AddInParameter(updateCommand, "@OrderBy", System.Data.DbType.Int16, this.OrderBy); database.AddInParameter(updateCommand, "@WrapStyleId", System.Data.DbType.Int32, NullableData.DbNullify(this.WrapStyleId)); database.AddInParameter(updateCommand, "@GiftMessage", System.Data.DbType.String, NullableData.DbNullify(this.GiftMessage)); database.AddInParameter(updateCommand, "@WishlistItemId", System.Data.DbType.Int32, NullableData.DbNullify(this.WishlistItemId)); database.AddInParameter(updateCommand, "@ShippableId", System.Data.DbType.Byte, this.ShippableId); database.AddInParameter(updateCommand, "@LastModifiedDate", System.Data.DbType.DateTime, LocaleHelper.FromLocalTime(this.LastModifiedDate)); database.AddInParameter(updateCommand, "@TaxRate", System.Data.DbType.Decimal, this.TaxRate); database.AddInParameter(updateCommand, "@TaxAmount", System.Data.DbType.Decimal, this.TaxAmount); database.AddInParameter(updateCommand, "@KitList", System.Data.DbType.String, NullableData.DbNullify(this.KitList)); database.AddInParameter(updateCommand, "@CustomFields", System.Data.DbType.String, NullableData.DbNullify(this.CustomFields.ToString())); //RESULT IS NUMBER OF RECORDS AFFECTED result = database.ExecuteNonQuery(updateCommand); } } else { //INSERT StringBuilder insertQuery = new StringBuilder(); insertQuery.Append("INSERT INTO ac_BasketItems (ParentItemId, BasketId, BasketShipmentId, ProductId, OptionList, TaxCodeId, Name, Sku, Price, Weight, Quantity, LineMessage, OrderItemTypeId, OrderBy, WrapStyleId, GiftMessage, WishlistItemId, ShippableId, LastModifiedDate, TaxRate, TaxAmount, KitList, CustomFields)"); insertQuery.Append(" VALUES (@ParentItemId, @BasketId, @BasketShipmentId, @ProductId, @OptionList, @TaxCodeId, @Name, @Sku, @Price, @Weight, @Quantity, @LineMessage, @OrderItemTypeId, @OrderBy, @WrapStyleId, @GiftMessage, @WishlistItemId, @ShippableId, @LastModifiedDate, @TaxRate, @TaxAmount, @KitList, @CustomFields)"); insertQuery.Append("; SELECT Scope_Identity()"); using (DbCommand insertCommand = database.GetSqlStringCommand(insertQuery.ToString())) { database.AddInParameter(insertCommand, "@BasketItemId", System.Data.DbType.Int32, this.BasketItemId); database.AddInParameter(insertCommand, "@ParentItemId", System.Data.DbType.Int32, this.ParentItemId); database.AddInParameter(insertCommand, "@BasketId", System.Data.DbType.Int32, this.BasketId); database.AddInParameter(insertCommand, "@BasketShipmentId", System.Data.DbType.Int32, NullableData.DbNullify(this.BasketShipmentId)); database.AddInParameter(insertCommand, "@ProductId", System.Data.DbType.Int32, this.ProductId); database.AddInParameter(insertCommand, "@OptionList", System.Data.DbType.String, NullableData.DbNullify(this.OptionList)); database.AddInParameter(insertCommand, "@TaxCodeId", System.Data.DbType.Int32, NullableData.DbNullify(this.TaxCodeId)); database.AddInParameter(insertCommand, "@Name", System.Data.DbType.String, this.Name); database.AddInParameter(insertCommand, "@Sku", System.Data.DbType.String, NullableData.DbNullify(this.Sku)); database.AddInParameter(insertCommand, "@Price", System.Data.DbType.Decimal, this.Price); database.AddInParameter(insertCommand, "@Weight", System.Data.DbType.Decimal, this.Weight); database.AddInParameter(insertCommand, "@Quantity", System.Data.DbType.Int16, this.Quantity); database.AddInParameter(insertCommand, "@LineMessage", System.Data.DbType.String, NullableData.DbNullify(this.LineMessage)); database.AddInParameter(insertCommand, "@OrderItemTypeId", System.Data.DbType.Int16, this.OrderItemTypeId); database.AddInParameter(insertCommand, "@OrderBy", System.Data.DbType.Int16, this.OrderBy); database.AddInParameter(insertCommand, "@WrapStyleId", System.Data.DbType.Int32, NullableData.DbNullify(this.WrapStyleId)); database.AddInParameter(insertCommand, "@GiftMessage", System.Data.DbType.String, NullableData.DbNullify(this.GiftMessage)); database.AddInParameter(insertCommand, "@WishlistItemId", System.Data.DbType.Int32, NullableData.DbNullify(this.WishlistItemId)); database.AddInParameter(insertCommand, "@ShippableId", System.Data.DbType.Byte, this.ShippableId); database.AddInParameter(insertCommand, "@LastModifiedDate", System.Data.DbType.DateTime, LocaleHelper.FromLocalTime(this.LastModifiedDate)); database.AddInParameter(insertCommand, "@TaxRate", System.Data.DbType.Decimal, this.TaxRate); database.AddInParameter(insertCommand, "@TaxAmount", System.Data.DbType.Decimal, this.TaxAmount); database.AddInParameter(insertCommand, "@KitList", System.Data.DbType.String, NullableData.DbNullify(this.KitList)); database.AddInParameter(insertCommand, "@CustomFields", System.Data.DbType.String, NullableData.DbNullify(this.CustomFields.ToString())); //RESULT IS NEW IDENTITY; result = AlwaysConvert.ToInt(database.ExecuteScalar(insertCommand)); this._BasketItemId = result; } } this.SaveChildren(); //OBJECT IS DIRTY IF NO RECORDS WERE UPDATED OR INSERTED this.IsDirty = (result == 0); if (this.IsDirty) { return(SaveResult.Failed); } else { return(recordExists ? SaveResult.RecordUpdated : SaveResult.RecordInserted); } } //SAVE IS SUCCESSFUL IF OBJECT IS NOT DIRTY return(SaveResult.NotDirty); }