private void AliasPublisher(List <string> aSourcePublisher, string aTargetPublisher) { ApplicationsDAO lApplicationsDAO = new ApplicationsDAO(); ApplicationInstanceDAO lApplicationInstanceDAO = new ApplicationInstanceDAO(); // insert a record into the PUBLISHER_ALIAS table foreach (string lSourcePublisher in aSourcePublisher) { int lPublisherAliasID = new PublisherAliasDAO().Insert(lSourcePublisher, aTargetPublisher); // confirm record entered ok? if (lPublisherAliasID != -1) { DataTable sourcePublisherApplicationsDataTable = lApplicationsDAO.SelectApplicationByPublisherName(lSourcePublisher); foreach (DataRow applicationRow in sourcePublisherApplicationsDataTable.Rows) { // check if the proposed new application already exists // it is possible (but unlikely) that an application name and version combo already exist int lSourceApplicationId = (int)applicationRow.ItemArray[0]; string lApplicationName = applicationRow.ItemArray[2].ToString(); string lApplicationVersion = applicationRow.ItemArray[3].ToString(); int lExisitingApplicationId = lApplicationsDAO.SelectIdByPublisherNameVersion(aTargetPublisher, lApplicationName, lApplicationVersion); if (lExisitingApplicationId > 0) { // found a match // need to get the original applicationid and update all of the application_instances for this application // one final issue is whether the application is aliased // if it is, we need to update the application_instances so that the base applicationid is the original app id // and the _applicationid is the aliased_toid int lBaseApplicationId = 0; int lAliasedToId = lApplicationsDAO.SelectAliasedToIdByApplicationId(lExisitingApplicationId); if (lAliasedToId != 0) { lBaseApplicationId = lExisitingApplicationId; lExisitingApplicationId = lAliasedToId; } lApplicationInstanceDAO.UpdateApplicationInstanceByApplicationId(lExisitingApplicationId, lBaseApplicationId, lSourceApplicationId); // final step will be to delete the application we are aliasing. This will mean that if the user tries to revert // this alias they won't be able to do so lApplicationsDAO.DeleteByApplicationId(lSourceApplicationId); } else { // publiser, name, version combo doesn;t already exist so we can just update the publisher name // enter a record into the PUBLISHER_ALIAS_APP table, this will allow us to revert the alias later if needed new PublisherAliasAppDAO().Insert(lSourceApplicationId, lPublisherAliasID); // finally updated the application to reflect the new publisher lApplicationsDAO.UpdateAliasedPublishers(aTargetPublisher, lSourceApplicationId); } } } } }