protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L3D_SDT_1335 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); var defaultLanguages = ORM_CMN_Language.Query.Search(Connection, Transaction, new ORM_CMN_Language.Query { IsDeleted = false, Tenant_RefID = securityTicket.TenantID }); ORM_CMN_PRO_Dimension dimension = new ORM_CMN_PRO_Dimension(); dimension.Load(Connection, Transaction, Parameter.CMN_PRO_DimensionID); if (dimension.CMN_PRO_DimensionID == null || dimension.CMN_PRO_DimensionID == Guid.Empty) { dimension.CMN_PRO_DimensionID = Parameter.CMN_PRO_DimensionID; } dimension.DimensionName = new Dict(ORM_CMN_PRO_Dimension.TableName); dimension.IsDeleted = false; dimension.IsDimensionTemplate = true; dimension.Tenant_RefID = securityTicket.TenantID; dimension.Save(Connection, Transaction); foreach (var lang in defaultLanguages) { dimension.DimensionName.AddEntry(lang.CMN_LanguageID, Parameter.DimensionName); } var status = dimension.Save(Connection, Transaction); foreach (var dimensionValue in Parameter.DimensionValue) { ORM_CMN_PRO_Dimension_Value orm_dimensionValue = new ORM_CMN_PRO_Dimension_Value(); orm_dimensionValue.Load(Connection, Transaction, dimensionValue.CMN_PRO_Dimension_ValueID); if (orm_dimensionValue == null || orm_dimensionValue.CMN_PRO_Dimension_ValueID == Guid.Empty) { orm_dimensionValue.CMN_PRO_Dimension_ValueID = dimensionValue.CMN_PRO_Dimension_ValueID; } orm_dimensionValue.Dimensions_RefID = dimension.CMN_PRO_DimensionID; orm_dimensionValue.DimensionValue_Text = new Dict(ORM_CMN_PRO_Dimension.TableName); orm_dimensionValue.OrderSequence = dimensionValue.OrderSequence; orm_dimensionValue.IsDeleted = dimensionValue.IsDeleted; orm_dimensionValue.Tenant_RefID = securityTicket.TenantID; orm_dimensionValue.Save(Connection, Transaction); foreach (var lang in defaultLanguages) { orm_dimensionValue.DimensionValue_Text.AddEntry(lang.CMN_LanguageID, dimensionValue.DimensionValue_Text); } status = orm_dimensionValue.Save(Connection, Transaction); } if (status.Status == FR_Status.Success) { returnValue.Result = dimension.CMN_PRO_DimensionID; } return(returnValue); #endregion UserCode }
protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L3VA_SVfP_1019 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Base(); if (Parameter == null) { returnValue.ErrorMessage = "Parameter is null or there is no product variant defined"; returnValue.Status = FR_Status.Error_Internal; return(returnValue); } if (Parameter.Variants == null && Parameter.Dimensions == null && Parameter.DimensionValues == null) { returnValue.ErrorMessage = "Variants, Dimensions and Dimension Values are not defined"; returnValue.Status = FR_Status.Error_Internal; return(returnValue); } if (Parameter.Variants.Length == 0 && Parameter.Dimensions.Length == 0 && Parameter.DimensionValues.Length == 0) { returnValue.ErrorMessage = "Variants, Dimensions and Dimension Values are not defined"; returnValue.Status = FR_Status.Error_Internal; return(returnValue); } #region Variants Create/Update foreach (var variant in Parameter.Variants) { bool createNewVariant = false; ORM_CMN_PRO_Product_Variant variantToCreateUpdate = new ORM_CMN_PRO_Product_Variant(); FR_Base vLoad = variantToCreateUpdate.Load(Connection, Transaction, variant.CMN_PRO_Product_VariantID); if (vLoad.Status != FR_Status.Success || variantToCreateUpdate.CMN_PRO_Product_VariantID == Guid.Empty) { createNewVariant = true; } if (createNewVariant) { variantToCreateUpdate.CMN_PRO_Product_VariantID = variant.CMN_PRO_Product_VariantID; variantToCreateUpdate.CMN_PRO_Product_RefID = Parameter.ProductID; variantToCreateUpdate.Creation_Timestamp = DateTime.Now; variantToCreateUpdate.Tenant_RefID = securityTicket.TenantID; variantToCreateUpdate.ProductVariantITL = ""; variantToCreateUpdate.ProductVariant_DocumentationStructure_RefID = Guid.Empty; variantToCreateUpdate.VariantName = variant.VariantName; variantToCreateUpdate.IsDeleted = false; } variantToCreateUpdate.IsImportedFromExternalCatalog = variant.IsImportedFromExternalCatalog; variantToCreateUpdate.IsObsolete = variant.IsObsolete; variantToCreateUpdate.IsProductAvailableForOrdering = variant.IsProductAvailableForOrdering; variantToCreateUpdate.IsStandardProductVariant = variant.IsStandardProductVariant; variantToCreateUpdate.Modification_Timestamp = DateTime.Now; variantToCreateUpdate.Save(Connection, Transaction); } #endregion #region Dimensions Create/Update foreach (var dimension in Parameter.Dimensions) { bool createNewDimension = false; ORM_CMN_PRO_Dimension dimensionToCreateUpdate = new ORM_CMN_PRO_Dimension(); FR_Base dLoad = dimensionToCreateUpdate.Load(Connection, Transaction, dimension.CMN_PRO_DimensionID); if (dLoad.Status != FR_Status.Success || dimensionToCreateUpdate.CMN_PRO_DimensionID == Guid.Empty) { createNewDimension = true; } if (createNewDimension) { dimensionToCreateUpdate.CMN_PRO_DimensionID = dimension.CMN_PRO_DimensionID; dimensionToCreateUpdate.Abbreviation = dimension.Abbreviation; dimensionToCreateUpdate.Creation_Timestamp = DateTime.Now; dimensionToCreateUpdate.DimensionName = dimension.DimensionName; dimensionToCreateUpdate.IsDeleted = false; dimensionToCreateUpdate.IsDimensionTemplate = false; dimensionToCreateUpdate.Product_RefID = Parameter.ProductID; dimensionToCreateUpdate.Tenant_RefID = securityTicket.TenantID; } dimensionToCreateUpdate.OrderSequence = dimension.OrderSequence; dimensionToCreateUpdate.Modification_Timestamp = DateTime.Now; dimensionToCreateUpdate.Save(Connection, Transaction); } #endregion #region Dimension Values Create/Update foreach (var dimensionValue in Parameter.DimensionValues) { bool createNewDimensionValue = false; ORM_CMN_PRO_Dimension_Value dimensionValueToCreateUpdate = new ORM_CMN_PRO_Dimension_Value(); FR_Base dvLoad = dimensionValueToCreateUpdate.Load(Connection, Transaction, dimensionValue.CMN_PRO_Dimension_ValueID); if (dvLoad.Status != FR_Status.Success || dimensionValueToCreateUpdate.CMN_PRO_Dimension_ValueID == Guid.Empty) { createNewDimensionValue = true; } if (createNewDimensionValue) { dimensionValueToCreateUpdate.CMN_PRO_Dimension_ValueID = dimensionValue.CMN_PRO_Dimension_ValueID; dimensionValueToCreateUpdate.Creation_Timestamp = DateTime.Now; dimensionValueToCreateUpdate.Dimensions_RefID = dimensionValue.Dimension_RefID; dimensionValueToCreateUpdate.DimensionValue_Text = dimensionValue.DimensionValue_Text; dimensionValueToCreateUpdate.IsDeleted = false; dimensionValueToCreateUpdate.Tenant_RefID = securityTicket.TenantID; } dimensionValueToCreateUpdate.Modification_Timestamp = DateTime.Now; dimensionValueToCreateUpdate.OrderSequence = dimensionValue.OrderSequence; dimensionValueToCreateUpdate.Save(Connection, Transaction); } #endregion #region Assignments foreach (var variant in Parameter.Variants) { foreach (var dimensionValue in Parameter.DimensionValues) { if ((variant.DimensionValue1_RefID == dimensionValue.CMN_PRO_Dimension_ValueID) || (variant.DimensionValue2_RefID == dimensionValue.CMN_PRO_Dimension_ValueID)) { bool assignmentExists = ORM_CMN_PRO_Variant_DimensionValue.Query.Exists(Connection, Transaction, new ORM_CMN_PRO_Variant_DimensionValue.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, DimensionValue_RefID = dimensionValue.CMN_PRO_Dimension_ValueID, ProductVariant_RefID = variant.CMN_PRO_Product_VariantID }); if (!assignmentExists) { ORM_CMN_PRO_Variant_DimensionValue assignment = new ORM_CMN_PRO_Variant_DimensionValue(); assignment.CMN_PRO_Variant_DimensionValueID = Guid.NewGuid(); assignment.Creation_Timestamp = DateTime.Now; assignment.DimensionValue_RefID = dimensionValue.CMN_PRO_Dimension_ValueID; assignment.IsDeleted = false; assignment.Modification_Timestamp = DateTime.Now; assignment.ProductVariant_RefID = variant.CMN_PRO_Product_VariantID; assignment.Tenant_RefID = securityTicket.TenantID; assignment.Save(Connection, Transaction); } } } } #endregion return(returnValue); #endregion UserCode }