///<summary>Inserts one ClaimSnapshot into the database.  Returns the new priKey.</summary>
 public static long Insert(ClaimSnapshot claimSnapshot)
 {
     if (DataConnection.DBtype == DatabaseType.Oracle)
     {
         claimSnapshot.ClaimSnapshotNum = DbHelper.GetNextOracleKey("claimsnapshot", "ClaimSnapshotNum");
         int loopcount = 0;
         while (loopcount < 100)
         {
             try {
                 return(Insert(claimSnapshot, true));
             }
             catch (Oracle.ManagedDataAccess.Client.OracleException ex) {
                 if (ex.Number == 1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated"))
                 {
                     claimSnapshot.ClaimSnapshotNum++;
                     loopcount++;
                 }
                 else
                 {
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else
     {
         return(Insert(claimSnapshot, false));
     }
 }
 ///<summary>Returns true if Update(ClaimSnapshot,ClaimSnapshot) would make changes to the database.
 ///Does not make any changes to the database and can be called before remoting role is checked.</summary>
 public static bool UpdateComparison(ClaimSnapshot claimSnapshot, ClaimSnapshot oldClaimSnapshot)
 {
     if (claimSnapshot.ProcNum != oldClaimSnapshot.ProcNum)
     {
         return(true);
     }
     if (claimSnapshot.ClaimType != oldClaimSnapshot.ClaimType)
     {
         return(true);
     }
     if (claimSnapshot.Writeoff != oldClaimSnapshot.Writeoff)
     {
         return(true);
     }
     if (claimSnapshot.InsPayEst != oldClaimSnapshot.InsPayEst)
     {
         return(true);
     }
     if (claimSnapshot.Fee != oldClaimSnapshot.Fee)
     {
         return(true);
     }
     //DateTEntry not allowed to change
     if (claimSnapshot.ClaimProcNum != oldClaimSnapshot.ClaimProcNum)
     {
         return(true);
     }
     if (claimSnapshot.SnapshotTrigger != oldClaimSnapshot.SnapshotTrigger)
     {
         return(true);
     }
     return(false);
 }
        ///<summary>Updates one ClaimSnapshot in the database.</summary>
        public static void Update(ClaimSnapshot claimSnapshot)
        {
            string command = "UPDATE claimsnapshot SET "
                             + "ProcNum         =  " + POut.Long(claimSnapshot.ProcNum) + ", "
                             + "ClaimType       = '" + POut.String(claimSnapshot.ClaimType) + "', "
                             + "Writeoff        = '" + POut.Double(claimSnapshot.Writeoff) + "', "
                             + "InsPayEst       = '" + POut.Double(claimSnapshot.InsPayEst) + "', "
                             + "Fee             = '" + POut.Double(claimSnapshot.Fee) + "', "
                             //DateTEntry not allowed to change
                             + "ClaimProcNum    =  " + POut.Long(claimSnapshot.ClaimProcNum) + ", "
                             + "SnapshotTrigger =  " + POut.Int((int)claimSnapshot.SnapshotTrigger) + " "
                             + "WHERE ClaimSnapshotNum = " + POut.Long(claimSnapshot.ClaimSnapshotNum);

            Db.NonQ(command);
        }
 ///<summary>Inserts one ClaimSnapshot into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(ClaimSnapshot claimSnapshot)
 {
     if (DataConnection.DBtype == DatabaseType.MySql)
     {
         return(InsertNoCache(claimSnapshot, false));
     }
     else
     {
         if (DataConnection.DBtype == DatabaseType.Oracle)
         {
             claimSnapshot.ClaimSnapshotNum = DbHelper.GetNextOracleKey("claimsnapshot", "ClaimSnapshotNum");                  //Cacheless method
         }
         return(InsertNoCache(claimSnapshot, true));
     }
 }
        ///<summary>Converts a DataTable to a list of objects.</summary>
        public static List <ClaimSnapshot> TableToList(DataTable table)
        {
            List <ClaimSnapshot> retVal = new List <ClaimSnapshot>();
            ClaimSnapshot        claimSnapshot;

            foreach (DataRow row in table.Rows)
            {
                claimSnapshot = new ClaimSnapshot();
                claimSnapshot.ClaimSnapshotNum = PIn.Long(row["ClaimSnapshotNum"].ToString());
                claimSnapshot.ProcNum          = PIn.Long(row["ProcNum"].ToString());
                claimSnapshot.ClaimType        = PIn.String(row["ClaimType"].ToString());
                claimSnapshot.Writeoff         = PIn.Double(row["Writeoff"].ToString());
                claimSnapshot.InsPayEst        = PIn.Double(row["InsPayEst"].ToString());
                claimSnapshot.Fee             = PIn.Double(row["Fee"].ToString());
                claimSnapshot.DateTEntry      = PIn.DateT(row["DateTEntry"].ToString());
                claimSnapshot.ClaimProcNum    = PIn.Long(row["ClaimProcNum"].ToString());
                claimSnapshot.SnapshotTrigger = (OpenDentBusiness.ClaimSnapshotTrigger)PIn.Int(row["SnapshotTrigger"].ToString());
                retVal.Add(claimSnapshot);
            }
            return(retVal);
        }
        ///<summary>Inserts one ClaimSnapshot into the database.  Provides option to use the existing priKey.  Doesn't use the cache.</summary>
        public static long InsertNoCache(ClaimSnapshot claimSnapshot, bool useExistingPK)
        {
            bool   isRandomKeys = Prefs.GetBoolNoCache(PrefName.RandomPrimaryKeys);
            string command      = "INSERT INTO claimsnapshot (";

            if (!useExistingPK && isRandomKeys)
            {
                claimSnapshot.ClaimSnapshotNum = ReplicationServers.GetKeyNoCache("claimsnapshot", "ClaimSnapshotNum");
            }
            if (isRandomKeys || useExistingPK)
            {
                command += "ClaimSnapshotNum,";
            }
            command += "ProcNum,ClaimType,Writeoff,InsPayEst,Fee,DateTEntry,ClaimProcNum,SnapshotTrigger) VALUES(";
            if (isRandomKeys || useExistingPK)
            {
                command += POut.Long(claimSnapshot.ClaimSnapshotNum) + ",";
            }
            command +=
                POut.Long(claimSnapshot.ProcNum) + ","
                + "'" + POut.String(claimSnapshot.ClaimType) + "',"
                + "'" + POut.Double(claimSnapshot.Writeoff) + "',"
                + "'" + POut.Double(claimSnapshot.InsPayEst) + "',"
                + "'" + POut.Double(claimSnapshot.Fee) + "',"
                + DbHelper.Now() + ","
                + POut.Long(claimSnapshot.ClaimProcNum) + ","
                + POut.Int((int)claimSnapshot.SnapshotTrigger) + ")";
            if (useExistingPK || isRandomKeys)
            {
                Db.NonQ(command);
            }
            else
            {
                claimSnapshot.ClaimSnapshotNum = Db.NonQ(command, true, "ClaimSnapshotNum", "claimSnapshot");
            }
            return(claimSnapshot.ClaimSnapshotNum);
        }
        ///<summary>Updates one ClaimSnapshot in the database.  Uses an old object to compare to, and only alters changed fields.  This prevents collisions and concurrency problems in heavily used tables.  Returns true if an update occurred.</summary>
        public static bool Update(ClaimSnapshot claimSnapshot, ClaimSnapshot oldClaimSnapshot)
        {
            string command = "";

            if (claimSnapshot.ProcNum != oldClaimSnapshot.ProcNum)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ProcNum = " + POut.Long(claimSnapshot.ProcNum) + "";
            }
            if (claimSnapshot.ClaimType != oldClaimSnapshot.ClaimType)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ClaimType = '" + POut.String(claimSnapshot.ClaimType) + "'";
            }
            if (claimSnapshot.Writeoff != oldClaimSnapshot.Writeoff)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "Writeoff = '" + POut.Double(claimSnapshot.Writeoff) + "'";
            }
            if (claimSnapshot.InsPayEst != oldClaimSnapshot.InsPayEst)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "InsPayEst = '" + POut.Double(claimSnapshot.InsPayEst) + "'";
            }
            if (claimSnapshot.Fee != oldClaimSnapshot.Fee)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "Fee = '" + POut.Double(claimSnapshot.Fee) + "'";
            }
            //DateTEntry not allowed to change
            if (claimSnapshot.ClaimProcNum != oldClaimSnapshot.ClaimProcNum)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ClaimProcNum = " + POut.Long(claimSnapshot.ClaimProcNum) + "";
            }
            if (claimSnapshot.SnapshotTrigger != oldClaimSnapshot.SnapshotTrigger)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "SnapshotTrigger = " + POut.Int((int)claimSnapshot.SnapshotTrigger) + "";
            }
            if (command == "")
            {
                return(false);
            }
            command = "UPDATE claimsnapshot SET " + command
                      + " WHERE ClaimSnapshotNum = " + POut.Long(claimSnapshot.ClaimSnapshotNum);
            Db.NonQ(command);
            return(true);
        }
 ///<summary>Inserts one ClaimSnapshot into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(ClaimSnapshot claimSnapshot)
 {
     return(InsertNoCache(claimSnapshot, false));
 }