public Guid ProductCategoryAdd(string productCategoryCode,
                                       string productCategoryName,
                                       Guid productCategoryParentId,
                                       int productCategoryPosition,
                                       Guid userId
                                       )
        {
            var contract = new CrudeProductCategoryContract();

            contract.ProductCategoryId       = Guid.NewGuid();
            contract.ProductCategoryCode     = productCategoryCode;
            contract.ProductCategoryName     = productCategoryName;
            contract.ProductCategoryPosition = productCategoryPosition;

            if (productCategoryParentId == Guid.Empty)
            {
                // first level is it's own parent
                contract.ProductCategoryParentId = contract.ProductCategoryId;
            }
            else
            {
                contract.ProductCategoryParentId = productCategoryParentId;
            }

            contract.StateRcd = DefaultStateRef.Created;
            contract.UserId   = userId;
            contract.DateTime = DateTime.UtcNow;

            var bll = new CrudeProductCategoryService();

            bll.Insert(contract);

            return(contract.ProductCategoryId);
        }
 // copy all rows from a List of SOAP Contracts to a List of serialized data objects
 // links:
 //  docLink: http://sql2x.org/documentationLink/1c6c6b9c-e201-4590-8c69-d38a0ad2a9f7
 public static void ContractListToDataList(List <CrudeProductCategoryContract> contractList, List <CrudeProductCategoryData> dataList)
 {
     foreach (CrudeProductCategoryContract contract in contractList)
     {
         var data = new CrudeProductCategoryData();
         CrudeProductCategoryService.ContractToData(contract, data);
         dataList.Add(data);
     }
 }
        public ProductCategoryContract ProductCategoryGetCompleteById(Guid productCategoryId)
        {
            var contract = new ProductCategoryContract();
            var data     = new Category(productCategoryId);

            // move data from data access layer to business logic layer
            contract.ProductCategory = new CrudeProductCategoryContract();
            CrudeProductCategoryService.DataToContract(data.ProductCategory, contract.ProductCategory);

            contract.ProductCategoryImage         = CrudeProductCategoryImageService.DataListToContractList(data.ProductCategoryImage);
            contract.ProductCategoryDocumentation = CrudeProductCategoryDocumentationService.DataListToContractList(data.ProductCategoryDocumentation);

            return(contract);
        }