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);
        }
Example #2
0
        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));
                    }
                }
            }
        }
Example #4
0
        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);
                    }
                }
            }
        }