Пример #1
0
        public List <CrudeProductCategoryData> FetchTopLevel()
        {
            var dataList = new List <CrudeProductCategoryData>();

            string sql = @" 
                            select product_category_id, product_category_became_id, product_category_parent_id, product_category_code, product_category_name, product_category_position, state_rcd, user_id, date_time
                            from product_category as pc
                            where pc.product_category_id = pc.product_category_parent_id
                             and pc.product_category_became_id is null
                            order by pc.product_category_position
                            ";

            using (var conn = new SqlConnection(ConfigurationManager.AppSettings["Conn"])) {
                conn.Open();

                using (var command = new SqlCommand(sql, conn)) {
                    IDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult);

                    while (reader.Read())
                    {
                        var data = new CrudeProductCategoryData();
                        data.Populate(reader);
                        dataList.Add(data);
                    }
                }

                return(dataList);
            }
        }
Пример #2
0
        public Category(Guid productCategoryId)
        {
            // category base info
            ProductCategory = new CrudeProductCategoryData();
            ProductCategory.FetchByProductCategoryId(productCategoryId);

            // category images
            //var crudeImage = new CrudeProductCategoryImageData();
            ProductCategoryImage = CrudeProductCategoryImageData.FetchByProductCategoryId(productCategoryId);

            // category documentation
            //var crudeDocumentation = new CrudeProductCategoryDocumentationData();
            ProductCategoryDocumentation = CrudeProductCategoryDocumentationData.FetchByProductCategoryId(productCategoryId);
        }
Пример #3
0
        public void Save(Guid userId)
        {
            // start transaction
            using (var connection = new SqlConnection(ConfigurationManager.AppSettings["Conn"])) {
                connection.Open();
                SqlTransaction transaction = connection.BeginTransaction();

                try {
                    // keep copy of 'old' product
                    CrudeProductData oldProduct = ObjectCopier.Clone(product);

                    // save new product
                    product.ProductId = Guid.NewGuid();
                    product.StateRcd  = DefaultStateRef.Updated;
                    product.UserId    = userId;
                    product.DateTime  = DateTime.UtcNow;
                    product.Insert(connection, transaction);

                    // duplicate old products category mapping
                    CrudeProductCategoryData.InsertNewCategoryMapping(
                        connection,
                        transaction,
                        oldProduct.ProductId,
                        product.ProductId,
                        userId
                        );

                    // update product to be 'old' version
                    oldProduct.ProductBecameId = product.ProductId;
                    oldProduct.UpdateBecame(connection, transaction);

                    // change identifier keys, save
                    foreach (CrudeProductIdentifierData identifier in ProductIdentifier)
                    {
                        identifier.ProductIdentifierId = Guid.NewGuid();
                        identifier.ProductId           = product.ProductId;
                        identifier.UserId   = userId;
                        identifier.DateTime = DateTime.UtcNow;
                        identifier.Insert(connection, transaction);
                    }

                    // change attribute keys, save
                    foreach (CrudeProductAttributeData attribute in ProductAttribute)
                    {
                        attribute.ProductAttributeId = Guid.NewGuid();
                        attribute.ProductId          = product.ProductId;
                        attribute.UserId             = userId;
                        attribute.DateTime           = DateTime.UtcNow;
                        attribute.Insert(connection, transaction);
                    }

                    // change info keys, save
                    foreach (CrudeProductInfoData info in ProductInfo)
                    {
                        info.ProductInfoId = Guid.NewGuid();
                        info.ProductId     = product.ProductId;
                        info.UserId        = userId;
                        info.DateTime      = DateTime.UtcNow;
                        info.Insert(connection, transaction);
                    }

                    // change documentation keys, save
                    foreach (CrudeProductDocumentationData documentation in ProductDocumentation)
                    {
                        documentation.ProductDocumentationId = Guid.NewGuid();
                        documentation.ProductId = product.ProductId;
                        documentation.UserId    = userId;
                        documentation.DateTime  = DateTime.UtcNow;
                        documentation.Insert(connection, transaction);
                    }

                    // change image keys, save
                    foreach (CrudeProductImageData image in ProductImage)
                    {
                        image.ProductImageId = Guid.NewGuid();
                        image.ProductId      = product.ProductId;
                        image.UserId         = userId;
                        image.DateTime       = DateTime.UtcNow;
                        image.Insert(connection, transaction);
                    }

                    // commit transaction
                    transaction.Commit();
                } catch (Exception ex) {
                    transaction.Rollback();
                    throw new Exception("DataAccessLayer, Product, Save, Failed", ex);
                }
            }
        }