public IAsyncResult BeginCreateCatalogBrochure(string environment , CatalogBrochureRequest request, AsyncCallback callback, object state)
        {
            var connectionController = new ConnectionController(environment );
            var controller = new ResponseController(connectionController.ConnectionString);

            var sproc = new CatalogBrochureCreateStoredProcedure();
            sproc.SprocParameters["@Catalog"] = string.IsNullOrEmpty(request.Catalog) ? null : request.Catalog;
            sproc.SprocParameters["@SKU"] = string.IsNullOrEmpty(request.SKU) ? null :request.SKU;
            sproc.SprocParameters["@DefaultImageName"] = string.IsNullOrEmpty(request.DefaultImageName) ? null : request.DefaultImageName;
            sproc.SprocParameters["@DefaultLogoName"] = string.IsNullOrEmpty(request.DefaultLogoName) ? null : request.DefaultLogoName;
            sproc.SprocParameters["@Classification"] = request.Classification.HasValue ? request.Classification : null;
            sproc.SprocParameters["@DivisionCode"] = request.DivisionCode.HasValue ? request.DivisionCode : null;
            sproc.SprocParameters["@Active"] = request.Active.HasValue ? request.Active : null;
            sproc.SprocParameters["@Available"] = request.Available.HasValue ? request.Available : null;
            sproc.SprocParameters["@ShortName"] = string.IsNullOrEmpty(request.ShortName) ? null : request.ShortName;
            sproc.SprocParameters["@Price"] = request.Price.HasValue ? request.Price : null;
            sproc.SprocParameters["@Weight"] = request.Weight.HasValue ? request.Weight : null;
            sproc.SprocParameters["@CatalogYear"] = string.IsNullOrEmpty(request.CatalogYear) ? null : request.CatalogYear;
            sproc.SprocParameters["@Version"] = string.IsNullOrEmpty(request.Version) ? null : request.Version;
            sproc.SprocParameters["@ActiveDate"] = string.IsNullOrEmpty(request.ActiveDate) ? null : request.ActiveDate;
            sproc.SprocParameters["@MinFileSize"] = request.MinFileSize.HasValue ? request.MinFileSize : null;
            sproc.SprocParameters["@DeactiveDate"] = string.IsNullOrEmpty(request.DeactivationDate) ? null : request.DeactivationDate;
            sproc.SprocParameters["@PageCount"] = string.IsNullOrEmpty(request.PageCount) ? null : request.PageCount;
            sproc.SprocParameters["@Notes"] = string.IsNullOrEmpty(request.Notes) ? null : request.Notes;
            sproc.SprocParameters["@IsNew"] = request.IsNew == true ? 1 : 0;
            sproc.SprocParameters["@InitialPrintQty"] = request.InitialPrintQty.HasValue ? request.InitialPrintQty : null;
            sproc.SprocParameters["@Qty1"] = request.PrintQty1.HasValue ? request.PrintQty1 : null;
            sproc.SprocParameters["@Qty2"] = request.PrintQty2.HasValue ? request.PrintQty2 : null;
            sproc.SprocParameters["@IsElectricVehicle"] = request.IsElectricVehicle.HasValue ? request.IsElectricVehicle : null;
            sproc.SprocParameters["@LaunchNotes"] = string.IsNullOrEmpty(request.LaunchNotes) ? null : request.LaunchNotes;
            sproc.SprocParameters["@ShowInSchedule"] = request.ShowInSchedule.HasValue ? request.ShowInSchedule : null;
            sproc.SprocParameters["@QrCodeName"] = string.IsNullOrEmpty(request.QRCodeName) ? null : request.QRCodeName;
            sproc.SprocParameters["@User"] = request.UserName;
            sproc.SprocParameters["@CampaignId"] = request.CampaignId.HasValue ? request.CampaignId : null;

            var task = Task<CreateResponse>.Factory.StartNew(r =>
                controller.CreateEntity<CatalogBrochureCreateStoredProcedure, CatalogBrochure>(sproc), state);

            return task.ContinueWith(r => callback(task));
        }