private void UnMarkRelatedRecoredsAsDeleted(int pUniqueKey) { List <int> IDList = new List <int>(); IDList.Add(pUniqueKey); Epi.Data.Services.CollectedDataProvider OutputDriver = this.EnterCheckCodeEngine.Project.CollectedData;// Epi.Data.DBReadExecute.GetDataDriver(this.project.CollectedDataConnectionString, true); UnMarkRelatedRecoredsAsDeleted(OutputDriver, this.view, IDList); }
private void UpdateRecStatus(GridField gridField, bool isDelete, string globalRecordId) { Epi.Data.Services.CollectedDataProvider collectedData = this.EnterCheckCodeEngine.Project.CollectedData; Epi.Data.Query updateQuery = collectedData.CreateQuery("update " + gridField.TableName + " set [RecStatus] = @RecStatus where [FKEY] = @FKEY"); updateQuery.Parameters.Add(new Epi.Data.QueryParameter("@RecStatus", DbType.Int32, isDelete ? 0 : 1)); updateQuery.Parameters.Add(new Epi.Data.QueryParameter("@FKEY", DbType.String, globalRecordId)); collectedData.ExecuteNonQuery(updateQuery); }
private void UnMarkRelatedRecoredsAsDeleted(Epi.Data.Services.CollectedDataProvider OutputDriver, View pView, List <int> pIDList) { if (pIDList.Count < 1) { return; } Dictionary <string, bool> VisitedViews = new Dictionary <string, bool>(StringComparer.OrdinalIgnoreCase); string SQL = null; StringBuilder InSQL = new StringBuilder(); InSQL.Append(" Where FKey In ("); foreach (int ID in pIDList) { pView.LoadRecord(ID); pView.RecStatusField.CurrentRecordValue = 1; pView.SaveRecord(ID); InSQL.Append("'"); InSQL.Append(pView.CurrentGlobalRecordId); InSQL.Append("',"); } InSQL.Length = InSQL.Length - 1; InSQL.Append(")"); foreach (Field field in pView.Fields) { if (field is RelatedViewField) { RelatedViewField rvf = field as RelatedViewField; if (!VisitedViews.ContainsKey(rvf.ChildView.Name)) { SQL = "Select UniqueKey From [" + rvf.ChildView.TableName + "] " + InSQL.ToString(); IDataReader reader = OutputDriver.ExecuteReader(OutputDriver.CreateQuery(SQL)); List <int> NewIdList = new List <int>(); while (reader.Read()) { if (reader["UniqueKey"] != DBNull.Value) { NewIdList.Add((int)reader["UniqueKey"]); } } VisitedViews.Add(rvf.ChildView.Name, true); UnMarkRelatedRecoredsAsDeleted(OutputDriver, rvf.ChildView, NewIdList); } else if (field is Epi.Fields.GridField) { Epi.Fields.GridField gf = field as Epi.Fields.GridField; SQL = "Update [" + gf.TableName + "] Set RecStatus = 1 Where FKey In " + InSQL.ToString(); OutputDriver.ExecuteNonQuery(OutputDriver.CreateQuery(SQL)); } } } }
private void UpdateRecStatus(View view, bool isDelete, string globalRecordId) { Epi.Data.Services.CollectedDataProvider collectedData = this.EnterCheckCodeEngine.Project.CollectedData; Epi.Data.Query updateQuery = collectedData.CreateQuery("update " + view.TableName + " set [RecStatus] = @RecStatus where [GlobalRecordId] = @GlobalRecordId"); updateQuery.Parameters.Add(new Epi.Data.QueryParameter("@RecStatus", DbType.Int32, isDelete ? 0 : 1)); updateQuery.Parameters.Add(new Epi.Data.QueryParameter("@GlobalRecordId", DbType.String, globalRecordId)); collectedData.ExecuteNonQuery(updateQuery); // < GRID TABLES > foreach (GridField gridField in view.Fields.GridFields) { UpdateRecStatus(gridField, isDelete, globalRecordId); } // < CHILD VIEW > List <Epi.Fields.RelatedViewField> RelatedViewList = FindRelatedFields(view); foreach (Epi.Fields.RelatedViewField field in RelatedViewList) { View relatedView = this.EnterCheckCodeEngine.Project.GetViewById(field.RelatedViewID); if (collectedData.TableExists(relatedView.Name)) { Epi.Data.Query childRecordQuery = collectedData.CreateQuery("Select GlobalRecordId From " + relatedView.TableName + " Where [FKEY] = @FKEY"); childRecordQuery.Parameters.Add(new Epi.Data.QueryParameter("@FKEY", DbType.String, globalRecordId)); IDataReader dataReader = collectedData.ExecuteReader(childRecordQuery); while (dataReader.Read()) { string readerGlobalRecordId = dataReader["GlobalRecordId"].ToString(); UpdateRecStatus(relatedView, isDelete, readerGlobalRecordId); } } } }