Example #1
0
        // Gets parent and children
        // getter for service
        // links:
        //  docLink: http://sql2x.org/documentationLink/28672bb5-d65f-4daa-84f5-56d7bfad4b22
        public ProductReferenceAttributeContract ProductReferenceAttributeCompleteGet(string productAttributeRcd, System.Guid userId)
        {
            var productContract =
                new ProductReferenceAttributeContract();

            // open standard connection
            using (var connection = new SqlConnection(ConfigurationManager.AppSettings["Conn"])) {
                connection.Open();

                try {
                    productContract.ProductAttributeRef =
                        new CrudeProductAttributeRefService().FetchAll();

                    // save checksum for comparison on update
                    productContract.ChecksumAfterGet = productContract.Checksum();
                } catch (Exception ex) {
                    throw new Exception("Failed to get Parent/Child ProductAttributeRef", ex);
                }
            }

            return(productContract);
        }
Example #2
0
        // Updates parent, children are added or updated as needed
        // updater for service
        // links:
        //  docLink: http://sql2x.org/documentationLink/b1aacc4e-64a1-4147-8b95-3a76ab53cf0c
        public string ProductReferenceAttributeCompleteUpdate(string productAttributeRcd, ProductReferenceAttributeContract productContract, System.Guid userId)
        {
            // check for differences since fetch
            if (productContract.ChecksumAfterGet.Equals(productContract.Checksum()))
            {
                return(String.Empty);
            }

            // check for database differences since fetch
            ProductReferenceAttributeContract productContractCurrent = ProductReferenceAttributeCompleteGet(productAttributeRcd, userId);

            if (!productContract.ChecksumAfterGet.Equals(productContractCurrent.Checksum()))
            {
                throw new Exception("ProductReferenceAttributeCompleteUpdate, data has changed since fetch");
            }

            // open standard connection
            using (var connection = new SqlConnection(ConfigurationManager.AppSettings["Conn"])) {
                connection.Open();
                SqlTransaction transaction = connection.BeginTransaction();

                try {
                    // update parent product attribute ref
                    foreach (CrudeProductAttributeRefContract productAttributeRef in productContract.ProductAttributeRef)
                    {
                        new CrudeProductAttributeRefService().Update(productAttributeRef, connection, transaction);
                    }

                    transaction.Commit();
                } catch (Exception ex) {
                    transaction.Rollback();
                    throw new Exception("Failed to update Parent/Child ProductAttributeRef", ex);
                }
            }

            return(String.Empty);
        }