protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5SCBD_1454 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { //Leave UserCode region to enable user code saving #region UserCode var returnValue = new FR_Guid(); //Put your code here #region Save ORM_CMN_PRO_Catalog catalog = new ORM_CMN_PRO_Catalog(); ORM_CMN_PRO_MasterCatalog mc = new ORM_CMN_PRO_MasterCatalog(); #region Delete if (Parameter.isDeleted == true) { /* * @Delete Catalog * */ catalog.Load(Connection, Transaction, Parameter.CatalogID); catalog.IsDeleted = true; catalog.Save(Connection, Transaction); /* * @Delete Catalog's master catalog * */ ORM_CMN_PRO_MasterCatalog masterCata = new ORM_CMN_PRO_MasterCatalog(); masterCata.Load(Connection, Transaction, catalog.CMN_PRO_MasterCatalog_RefID); masterCata.IsDeleted = true; masterCata.Save(Connection, Transaction); /* * @Delete CMN_PRO_Catalog_Revisions * */ var catalogRevisionQuery = new ORM_CMN_PRO_Catalog_Revision.Query(); catalogRevisionQuery.Tenant_RefID = securityTicket.TenantID; catalogRevisionQuery.CMN_PRO_Catalog_RefID = Parameter.CatalogID; var catalogRevisionDel = ORM_CMN_PRO_Catalog_Revision.Query.Search(Connection, Transaction, catalogRevisionQuery); if (catalogRevisionDel != null) { foreach (var item in catalogRevisionDel) { ORM_CMN_PRO_Catalog_ProductGroup.Query searchProductGroupQuery = new ORM_CMN_PRO_Catalog_ProductGroup.Query(); searchProductGroupQuery.Catalog_Revision_RefID = item.CMN_PRO_Catalog_RevisionID; List <ORM_CMN_PRO_Catalog_ProductGroup> revisionGroups = ORM_CMN_PRO_Catalog_ProductGroup.Query.Search(Connection, Transaction, searchProductGroupQuery); /* * @Deep delete product groups * */ P_L5CA_DCPG_1049 delParam = new P_L5CA_DCPG_1049(); foreach (var group in revisionGroups) { delParam.ProductGroupID = group.CMN_PRO_Catalog_ProductGroupID; cls_Delete_Catalog_Product_Group.Invoke(Connection, Transaction, delParam); } /* * @Delete products that are in root of catalog revision (not in group) * */ ORM_CMN_PRO_Catalog_Product.Query revisionProductsQuery = new ORM_CMN_PRO_Catalog_Product.Query(); revisionProductsQuery.CMN_PRO_Catalog_Revision_RefID = item.CMN_PRO_Catalog_RevisionID; List <ORM_CMN_PRO_Catalog_Product> revisionProducts = ORM_CMN_PRO_Catalog_Product.Query.Search(Connection, Transaction, revisionProductsQuery); foreach (var product in revisionProducts) { product.IsDeleted = true; product.Save(Connection, Transaction); } /* * @Delete catalog revision * */ item.IsDeleted = true; item.Save(Connection, Transaction); } } returnValue.Result = Parameter.CatalogID; return(returnValue); } #endregion /* * @save CMN_PRO_Catalogs * */ if (Parameter.CatalogID == Guid.Empty) { mc.CMN_PRO_MasterCatalogID = Guid.NewGuid(); mc.Catalog_Description = new Dict(); mc.Catalog_Name = Parameter.CatalogName_Dict; mc.CatalogPublishing_DefaultCurrency_RefID = Parameter.Catalog_Currency_RefID; mc.CatalogPublishing_DefaultLanguage_RefID = Parameter.Catalog_Language_RefID; mc.Creation_Timestamp = DateTime.Now; mc.Save(Connection, Transaction); catalog.CMN_PRO_CatalogID = Guid.NewGuid(); catalog.CMN_PRO_MasterCatalog_RefID = mc.CMN_PRO_MasterCatalogID; catalog.Tenant_RefID = securityTicket.TenantID; catalog.IsPublicCatalog = Parameter.isPublic; catalog.CatalogCodeITL = RandomString.Generate(8); catalog.Creation_Timestamp = DateTime.Now; catalog.IsDeleted = false; if (Parameter.Catalog_Currency_RefID != Guid.Empty) { catalog.Catalog_Currency_RefID = Parameter.Catalog_Currency_RefID; } if (Parameter.Catalog_Language_RefID != Guid.Empty) { catalog.Catalog_Language_RefID = Parameter.Catalog_Language_RefID; } catalog.Save(Connection, Transaction); /* * @save Revision * */ ORM_CMN_PRO_Catalog_Revision rev = new ORM_CMN_PRO_Catalog_Revision(); rev.CMN_PRO_Catalog_RevisionID = Guid.NewGuid(); rev.CMN_PRO_Catalog_RefID = catalog.CMN_PRO_CatalogID; rev.Tenant_RefID = securityTicket.TenantID; rev.Creation_Timestamp = DateTime.Now; rev.CatalogRevision_Description = "Initial revision for catalog "; rev.CatalogRevision_Name = "Initial catalog revision"; rev.IsDeleted = false; rev.RevisionNumber = 1; rev.Save(Connection, Transaction); /* * @save Default Catalog ProductGroup * */ ORM_CMN_PRO_Catalog_ProductGroup defaultProductGroup = new ORM_CMN_PRO_Catalog_ProductGroup(); defaultProductGroup.Catalog_Revision_RefID = rev.CMN_PRO_Catalog_RevisionID; defaultProductGroup.CMN_PRO_Catalog_ProductGroupID = Guid.NewGuid(); defaultProductGroup.CatalogProductGroup_Name = Parameter.CatalogName_Dict.Contents.First().Content; defaultProductGroup.CatalogProductGroup_Parent_RefID = Guid.Empty; defaultProductGroup.Tenant_RefID = securityTicket.TenantID; defaultProductGroup.Save(Connection, Transaction); } else { /* * @edit Catalog * */ catalog.Load(Connection, Transaction, Parameter.CatalogID); catalog.Tenant_RefID = securityTicket.TenantID; catalog.IsPublicCatalog = Parameter.isPublic; catalog.IsDeleted = false; if (Parameter.Catalog_Currency_RefID != Guid.Empty) { catalog.Catalog_Currency_RefID = Parameter.Catalog_Currency_RefID; } if (Parameter.Catalog_Language_RefID != Guid.Empty) { catalog.Catalog_Language_RefID = Parameter.Catalog_Language_RefID; } catalog.Save(Connection, Transaction); mc.Load(Connection, Transaction, catalog.CMN_PRO_MasterCatalog_RefID); mc.Catalog_Name = Parameter.CatalogName_Dict; mc.CatalogPublishing_DefaultCurrency_RefID = Parameter.Catalog_Currency_RefID; mc.CatalogPublishing_DefaultLanguage_RefID = Parameter.Catalog_Language_RefID; mc.Save(Connection, Transaction); } #endregion returnValue.Result = Parameter.CatalogID; return(returnValue); #endregion UserCode }
protected static FR_L5CA_GAfSCfT_1158 Execute(DbConnection Connection, DbTransaction Transaction, P_L5CA_GAfSCfT_1158 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_L5CA_GAfSCfT_1158(); //Put your code here List <L5CA_GCaRfT_1445> catalogWithRevisionsList = new List <L5CA_GCaRfT_1445>(); List <L5CA_GCfT_1110> catalogsList = new List <L5CA_GCfT_1110>(); List <L5CA_GAfSCfT_1158_Subscribers> subscribers = new List <L5CA_GAfSCfT_1158_Subscribers>(); if (!String.IsNullOrEmpty(Parameter.SearchCriteria)) { Parameter.SearchCriteria = Parameter.SearchCriteria.Replace("%", "\\%"); Parameter.SearchCriteria = "%" + Parameter.SearchCriteria.ToUpper() + "%"; } else { Parameter.SearchCriteria = null; } #region get catalog list P_L5CA_GCfT_1110 catalogsParameter = new P_L5CA_GCfT_1110(); catalogsParameter.LanguageID = Parameter.LanguageID; catalogsParameter.ActivePage = Parameter.ActivePage; catalogsParameter.PageSize = Parameter.PageSize; catalogsParameter.SearchCriteria = Parameter.SearchCriteria; var catalogsListResult = cls_Get_Catalogs_for_TenantID.Invoke(Connection, Transaction, catalogsParameter, securityTicket); if (catalogsListResult.Status == FR_Status.Success && catalogsListResult.Result != null) { catalogsList = catalogsListResult.Result.ToList(); } #endregion #region get catalog revisions L5CA_GCaRfT_1445 catalogWithRevisionsItem; L5CA_GCaRfT_1445a revisionItem; List <L5CA_GCaRfT_1445a> revisionList; ORM_CMN_PRO_Catalog_Revision.Query revisionQuery; List <ORM_CMN_PRO_Catalog_Revision> revisionsResult; foreach (var catalog in catalogsList) { revisionQuery = new ORM_CMN_PRO_Catalog_Revision.Query(); revisionQuery.Tenant_RefID = securityTicket.TenantID; revisionQuery.IsDeleted = false; revisionQuery.CMN_PRO_Catalog_RefID = catalog.CMN_PRO_CatalogID; revisionsResult = ORM_CMN_PRO_Catalog_Revision.Query.Search(Connection, Transaction, revisionQuery); if (revisionsResult != null && revisionsResult.Count > 0) { revisionList = new List <L5CA_GCaRfT_1445a>(); foreach (var revision in revisionsResult) { revisionItem = new L5CA_GCaRfT_1445a(); revisionItem.CatalogRevision_Description = revision.CatalogRevision_Description; revisionItem.CatalogRevision_Name = revision.CatalogRevision_Name; revisionItem.CMN_PRO_Catalog_RevisionID = revision.CMN_PRO_Catalog_RevisionID; revisionItem.Default_PricelistRelease_RefID = revision.Default_PricelistRelease_RefID; revisionItem.PublishedBy_BusinessParticipant_RefID = revision.PublishedBy_BusinessParticipant_RefID; revisionItem.PublishedOn_Date = revision.PublishedOn_Date; revisionItem.RevisionNumber = revision.RevisionNumber; revisionItem.Valid_From = revision.Valid_From; revisionItem.Valid_Through = revision.Valid_Through; revisionList.Add(revisionItem); } catalogWithRevisionsItem = new L5CA_GCaRfT_1445(); catalogWithRevisionsItem.Catalog_Currency_RefID = catalog.Catalog_Currency_RefID; catalogWithRevisionsItem.Catalog_Language_RefID = catalog.Catalog_Language_RefID; catalogWithRevisionsItem.Catalog_Name_DictID = catalog.Catalog_Name; catalogWithRevisionsItem.CatalogCodeITL = catalog.CatalogCodeITL; catalogWithRevisionsItem.CMN_PRO_CatalogID = catalog.CMN_PRO_CatalogID; catalogWithRevisionsItem.IsPublicCatalog = catalog.IsPublicCatalog; catalogWithRevisionsItem.Revisions = revisionList.ToArray(); catalogWithRevisionsList.Add(catalogWithRevisionsItem); } } #endregion #region get subscribers ICatalogSubscriptionService catalogSubscriptionService = CatalogServiceFactory.GetSubscriptionService(); CatalogSubscriptionStatisticsRequest request; CatalogSubscriptionStatisticsResponse response; L5CA_GAfSCfT_1158_Subscribers subscriber; foreach (var catalog in catalogWithRevisionsList) { request = new CatalogSubscriptionStatisticsRequest() { AccessToken = catalog.IsPublicCatalog ? null : "to-be-defined", CatalogCode = catalog.CatalogCodeITL }; response = catalogSubscriptionService.CatalogSubscriptionStatistics(request); if (response != null && response.ResponseStatus == BOp.CatalogAPI.data.ResponseStatus.OK && response.subscribedCustomers != null && response.subscribedCustomers.Count > 0) { if (subscribers.Any(i => i.CMN_PRO_CatalogID == catalog.CMN_PRO_CatalogID)) { subscriber = subscribers.Single(i => i.CMN_PRO_CatalogID == catalog.CMN_PRO_CatalogID); subscriber.Names.AddRange(response.subscribedCustomers.Select(i => i.Name)); } else { subscriber = new L5CA_GAfSCfT_1158_Subscribers(); subscriber.CMN_PRO_CatalogID = catalog.CMN_PRO_CatalogID; subscriber.Names = new List <string>(); subscriber.Names.AddRange(response.subscribedCustomers.Select(i => i.Name)); subscribers.Add(subscriber); } } } #endregion L5CA_GAfSCfT_1158 result = new L5CA_GAfSCfT_1158(); result.CatalogList = catalogWithRevisionsList.ToArray(); result.Subscribers = subscribers.ToArray(); returnValue.Result = result; return(returnValue); #endregion UserCode }