/// <summary> /// Update species facts. This method should only be used by Dyntaxa web application. /// </summary> /// <param name="context">Web service request context.</param> /// <param name="createSpeciesFacts">New species facts to create.</param> /// <param name="deleteSpeciesFacts">Existing species facts to delete.</param> /// <param name="updateSpeciesFacts">Existing species facts to update.</param> /// <param name="fullName">Full Name of editor.</param> public static void UpdateDyntaxaSpeciesFacts(WebServiceContext context, List <WebSpeciesFact> createSpeciesFacts, List <WebSpeciesFact> deleteSpeciesFacts, List <WebSpeciesFact> updateSpeciesFacts, String fullName) { DataTable speciesFactTable; DateTime now = DateTime.Now; List <Int32> speciesFactIds; // Check arguments. context.CheckTransaction(); WebServiceData.AuthorizationManager.CheckAuthorization(context, ApplicationIdentifier.Dyntaxa, AuthorityIdentifier.EditSpeciesFacts); if (createSpeciesFacts.IsNotEmpty()) { foreach (WebSpeciesFact speciesFact in createSpeciesFacts) { speciesFact.CheckData(context); } } if (deleteSpeciesFacts.IsNotEmpty()) { foreach (WebSpeciesFact speciesFact in deleteSpeciesFacts) { speciesFact.CheckData(context); } } if (updateSpeciesFacts.IsNotEmpty()) { foreach (WebSpeciesFact speciesFact in updateSpeciesFacts) { speciesFact.CheckData(context); } } if (createSpeciesFacts.IsNotEmpty()) { // Create species facts. speciesFactTable = GetSpeciesFactTable(context, createSpeciesFacts, now, fullName); DataServer.CreateSpeciesFacts(context, speciesFactTable); } if (deleteSpeciesFacts.IsNotEmpty()) { try { // Update species facts. foreach (WebSpeciesFact speciesFact in deleteSpeciesFacts) { DataServer.UpdateSpeciesFact(context, speciesFact.Id, speciesFact.ReferenceId, now, fullName, speciesFact.IsFieldValue1Specified, speciesFact.FieldValue1, speciesFact.IsFieldValue2Specified, speciesFact.FieldValue2, speciesFact.IsFieldValue3Specified, speciesFact.FieldValue3, speciesFact.FieldValue4, speciesFact.FieldValue5, speciesFact.QualityId); } // Delete species facts. speciesFactIds = new List <Int32>(); foreach (WebSpeciesFact speciesFact in deleteSpeciesFacts) { speciesFactIds.Add(speciesFact.Id); } DeleteUserSelectedSpeciesFacts(context); AddUserSelectedSpeciesFacts(context, speciesFactIds, UserSelectedSpeciesFactUsage.Output); DataServer.DeleteSpeciesFacts(context); } finally { DeleteUserSelectedSpeciesFacts(context); } } if (updateSpeciesFacts.IsNotEmpty()) { // Update species facts. foreach (WebSpeciesFact speciesFact in updateSpeciesFacts) { DataServer.UpdateSpeciesFact(context, speciesFact.Id, speciesFact.ReferenceId, now, fullName, speciesFact.IsFieldValue1Specified, speciesFact.FieldValue1, speciesFact.IsFieldValue2Specified, speciesFact.FieldValue2, speciesFact.IsFieldValue3Specified, speciesFact.FieldValue3, speciesFact.FieldValue4, speciesFact.FieldValue5, speciesFact.QualityId); } } }