///<summary>Combines all the given employers into one. Updates patient and insplan. Then deletes all the others. ///No need to pass in usernum, it is set before the remoting role and passed in for logging.</summary> public static void Combine(List <long> employerNums, long userNum = 0) { if (RemotingClient.RemotingRole != RemotingRole.ServerWeb) { userNum = Security.CurUser.UserNum; //must be before normal remoting role check to get user at workstation } if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { Meth.GetVoid(MethodBase.GetCurrentMethod(), employerNums, userNum); return; } long newNum = employerNums[0]; for (int i = 1; i < employerNums.Count; i++) { string command = "UPDATE patient SET EmployerNum = " + POut.Long(newNum) + " WHERE EmployerNum = " + POut.Long(employerNums[i]); Db.NonQ(command); command = "SELECT * FROM insplan WHERE EmployerNum = " + POut.Long(employerNums[i]); List <InsPlan> listInsPlans = Crud.InsPlanCrud.SelectMany(command); command = "UPDATE insplan SET EmployerNum = " + POut.Long(newNum) + " WHERE EmployerNum = " + POut.Long(employerNums[i]); Db.NonQ(command); listInsPlans.ForEach(x => { //log updated employernums for insplan. InsEditLogs.MakeLogEntry("EmployerNum", userNum, employerNums[i].ToString(), newNum.ToString(), InsEditLogType.InsPlan, x.PlanNum, 0, x.GroupNum + " - " + x.GroupName); }); Employer employerCur = Employers.GetEmployer(employerNums[i]); //from the cache Employers.Delete(employerCur); //logging taken care of in Delete method. } }
///<summary>Combines all the given employers into one. Updates patient and insplan. Then deletes all the others.</summary> public static void Combine(List <long> employerNums) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { Meth.GetVoid(MethodBase.GetCurrentMethod(), employerNums); return; } long newNum = employerNums[0]; for (int i = 1; i < employerNums.Count; i++) { string command = "UPDATE patient SET EmployerNum = " + POut.Long(newNum) + " WHERE EmployerNum = " + POut.Long(employerNums[i]); Db.NonQ(command); command = "SELECT * FROM insplan WHERE EmployerNum = " + POut.Long(employerNums[i]); List <InsPlan> listInsPlans = Crud.InsPlanCrud.SelectMany(command); command = "UPDATE insplan SET EmployerNum = " + POut.Long(newNum) + " WHERE EmployerNum = " + POut.Long(employerNums[i]); Db.NonQ(command); //Security.CurUser.UserNum gets set on MT by the DtoProcessor so it matches the user from the client WS. listInsPlans.ForEach(x => { //log updated employernums for insplan. InsEditLogs.MakeLogEntry("EmployerNum", Security.CurUser.UserNum, employerNums[i].ToString(), newNum.ToString(), InsEditLogType.InsPlan, x.PlanNum, 0, x.GroupNum + " - " + x.GroupName); }); Employer employerCur = Employers.GetEmployer(employerNums[i]); //from the cache Employers.Delete(employerCur); //logging taken care of in Delete method. } }
///<summary>Surround with try/catch. If there are any dependencies, then this will throw an exception. ///This is currently only called from FormCarrierEdit. ///No need to pass in usernum, it is set before the remoting role and passed in for logging.</summary> public static void Delete(Carrier Cur, long userNum = 0) { if (RemotingClient.RemotingRole != RemotingRole.ServerWeb) { userNum = Security.CurUser.UserNum; //must be before normal remoting role check to get user at workstation } if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { Meth.GetVoid(MethodBase.GetCurrentMethod(), Cur, userNum); return; } //look for dependencies in insplan table. string command = "SELECT insplan.PlanNum,CONCAT(CONCAT(LName,', '),FName) FROM insplan " + "LEFT JOIN inssub ON insplan.PlanNum=inssub.PlanNum " + "LEFT JOIN patient ON inssub.Subscriber=patient.PatNum " + "WHERE insplan.CarrierNum = " + POut.Long(Cur.CarrierNum) + " " + "ORDER BY LName,FName"; DataTable table = Db.GetTable(command); string strInUse; if (table.Rows.Count > 0) { strInUse = ""; //new string[table.Rows.Count]; for (int i = 0; i < table.Rows.Count; i++) { if (i > 0) { strInUse += "; "; } strInUse += PIn.String(table.Rows[i][1].ToString()); } throw new ApplicationException(Lans.g("Carriers", "Not allowed to delete carrier because it is in use. Subscribers using this carrier include ") + strInUse); } //look for dependencies in etrans table. command = "SELECT DateTimeTrans FROM etrans WHERE CarrierNum=" + POut.Long(Cur.CarrierNum) + " OR CarrierNum2=" + POut.Long(Cur.CarrierNum); table = Db.GetTable(command); if (table.Rows.Count > 0) { strInUse = ""; for (int i = 0; i < table.Rows.Count; i++) { if (i > 0) { strInUse += ", "; } strInUse += PIn.DateT(table.Rows[i][0].ToString()).ToShortDateString(); } throw new ApplicationException(Lans.g("Carriers", "Not allowed to delete carrier because it is in use in the etrans table. Dates of claim sent history include ") + strInUse); } command = "DELETE from carrier WHERE CarrierNum = " + POut.Long(Cur.CarrierNum); Db.NonQ(command); InsEditLogs.MakeLogEntry(null, Cur, InsEditLogType.Carrier, userNum); }
/* * Not using this because it turned out to be more efficient to refresh the whole * list if an empnum could not be found. * ///<summary>Just refreshes Cur from the db with info for one employer.</summary> * public static void Refresh(int employerNum){ * Cur=new Employer();//just in case no rows are returned * if(employerNum==0) return; * string command="SELECT * FROM employer WHERE EmployerNum = '"+employerNum+"'"; * DataTable table=Db.GetTable(command);; * for(int i=0;i<table.Rows.Count;i++){//almost always just 1 row, but sometimes 0 * Cur.EmployerNum =PIn.PInt (table.Rows[i][0].ToString()); * Cur.EmpName =PIn.PString(table.Rows[i][1].ToString()); * } * }*/ public static void Update(Employer empCur, Employer empOld) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { Meth.GetVoid(MethodBase.GetCurrentMethod(), empCur, empOld); return; } Crud.EmployerCrud.Update(empCur, empOld); //Security.CurUser.UserNum gets set on MT by the DtoProcessor so it matches the user from the client WS. InsEditLogs.MakeLogEntry(empCur, empOld, InsEditLogType.Employer, Security.CurUser.UserNum); }
public static long Insert(Employer Cur) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { Cur.EmployerNum = Meth.GetLong(MethodBase.GetCurrentMethod(), Cur); return(Cur.EmployerNum); } //Security.CurUser.UserNum gets set on MT by the DtoProcessor so it matches the user from the client WS. InsEditLogs.MakeLogEntry(Cur, null, InsEditLogType.Employer, Security.CurUser.UserNum); return(Crud.EmployerCrud.Insert(Cur)); }
///<summary>No need to pass in usernum, it is set before the remoting role and passed in for logging.</summary> public static long Insert(Employer Cur, long userNum = 0) { if(RemotingClient.RemotingRole!=RemotingRole.ServerWeb) { userNum=Security.CurUser.UserNum;//must be before normal remoting role check to get user at workstation } if(RemotingClient.RemotingRole==RemotingRole.ClientWeb) { Cur.EmployerNum=Meth.GetLong(MethodBase.GetCurrentMethod(),Cur,userNum); return Cur.EmployerNum; } InsEditLogs.MakeLogEntry(Cur,null,InsEditLogType.Employer,userNum); return Crud.EmployerCrud.Insert(Cur); }
/* * Not using this because it turned out to be more efficient to refresh the whole * list if an empnum could not be found. ///<summary>Just refreshes Cur from the db with info for one employer.</summary> public static void Refresh(int employerNum){ Cur=new Employer();//just in case no rows are returned if(employerNum==0) return; string command="SELECT * FROM employer WHERE EmployerNum = '"+employerNum+"'"; DataTable table=Db.GetTable(command);; for(int i=0;i<table.Rows.Count;i++){//almost always just 1 row, but sometimes 0 Cur.EmployerNum =PIn.PInt (table.Rows[i][0].ToString()); Cur.EmpName =PIn.PString(table.Rows[i][1].ToString()); } }*/ ///<summary>No need to pass in usernum, it is set before the remoting role and passed in for logging.</summary> public static void Update(Employer empCur, Employer empOld, long userNum = 0) { if(RemotingClient.RemotingRole!=RemotingRole.ServerWeb) { userNum=Security.CurUser.UserNum;//must be before normal remoting role check to get user at workstation } if(RemotingClient.RemotingRole==RemotingRole.ClientWeb) { Meth.GetVoid(MethodBase.GetCurrentMethod(),empCur,empOld,userNum); return; } Crud.EmployerCrud.Update(empCur,empOld); InsEditLogs.MakeLogEntry(empCur,empOld,InsEditLogType.Employer,userNum); }
///<summary>Surround with try/catch Combines all the given carriers into one. ///The carrier that will be used as the basis of the combination is specified in the pickedCarrier argument. ///Updates insplan and etrans, then deletes all the other carriers.</summary> public static void Combine(List <long> carrierNums, long pickedCarrierNum) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { Meth.GetVoid(MethodBase.GetCurrentMethod(), carrierNums, pickedCarrierNum); return; } if (carrierNums.Count == 1) { return; //nothing to do } //remove pickedCarrierNum from the carrierNums list to make the queries easier to construct. List <long> carrierNumList = new List <long>(); for (int i = 0; i < carrierNums.Count; i++) { if (carrierNums[i] == pickedCarrierNum) { continue; } carrierNumList.Add(carrierNums[i]); } //Now, do the actual combining---------------------------------------------------------------------------------- for (int i = 0; i < carrierNums.Count; i++) { if (carrierNums[i] == pickedCarrierNum) { continue; } string command = "SELECT * FROM insplan WHERE CarrierNum = " + POut.Long(carrierNums[i]); List <InsPlan> listInsPlan = Crud.InsPlanCrud.SelectMany(command); command = "UPDATE insplan SET CarrierNum = '" + POut.Long(pickedCarrierNum) + "' " + "WHERE CarrierNum = " + POut.Long(carrierNums[i]); Db.NonQ(command); command = "UPDATE etrans SET CarrierNum='" + POut.Long(pickedCarrierNum) + "' " + "WHERE CarrierNum=" + POut.Long(carrierNums[i]); Db.NonQ(command); command = "UPDATE etrans SET CarrierNum2='" + POut.Long(pickedCarrierNum) + "' " + "WHERE CarrierNum2=" + POut.Long(carrierNums[i]); Db.NonQ(command); //Security.CurUser.UserNum gets set on MT by the DtoProcessor so it matches the user from the client WS. listInsPlan.ForEach(x => { //Log InsPlan CarrierNum change. InsEditLogs.MakeLogEntry("CarrierNum", Security.CurUser.UserNum, POut.Long(carrierNums[i]), POut.Long(pickedCarrierNum), InsEditLogType.InsPlan, x.PlanNum, 0, x.GroupNum + " - " + x.GroupName); }); Carrier carrierCur = GetCarrier(carrierNums[i]); //gets from cache command = "DELETE FROM carrier" + " WHERE CarrierNum = '" + carrierNums[i].ToString() + "'"; Db.NonQ(command); //Security.CurUser.UserNum gets set on MT by the DtoProcessor so it matches the user from the client WS. InsEditLogs.MakeLogEntry(null, carrierCur, InsEditLogType.Carrier, Security.CurUser.UserNum); } }
///<summary>There MUST not be any dependencies before calling this or there will be invalid foreign keys. ///This is only called from FormEmployers after proper validation. ///No need to pass in usernum, it is set before the remoting role and passed in for logging.</summary> public static void Delete(Employer Cur,long userNum=0) { if(RemotingClient.RemotingRole!=RemotingRole.ServerWeb) { userNum=Security.CurUser.UserNum;//must be before normal remoting role check to get user at workstation } if(RemotingClient.RemotingRole==RemotingRole.ClientWeb) { Meth.GetVoid(MethodBase.GetCurrentMethod(),Cur,userNum); return; } string command="DELETE from employer WHERE EmployerNum = '"+Cur.EmployerNum.ToString()+"'"; Db.NonQ(command); InsEditLogs.MakeLogEntry(null,Cur,InsEditLogType.Employer,userNum); }
///<summary>There MUST not be any dependencies before calling this or there will be invalid foreign keys. ///This is only called from FormEmployers after proper validation.</summary> public static void Delete(Employer Cur) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { Meth.GetVoid(MethodBase.GetCurrentMethod(), Cur); return; } string command = "DELETE from employer WHERE EmployerNum = '" + Cur.EmployerNum.ToString() + "'"; Db.NonQ(command); //Security.CurUser.UserNum gets set on MT by the DtoProcessor so it matches the user from the client WS. InsEditLogs.MakeLogEntry(null, Cur, InsEditLogType.Employer, Security.CurUser.UserNum); }
///<summary>Gets logs from the passed in datetime and before.</summary> public static List <InsEditLog> GetLogsForPlan(long planNum, long carrierNum, long employerNum) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { return(Meth.GetObject <List <InsEditLog> >(MethodBase.GetCurrentMethod(), planNum, carrierNum, employerNum)); } List <long> listCarrierNums = InsEditLogs.GetAssociatedCarrierNums(planNum); listCarrierNums.Add(carrierNum); List <InsEditLog> retVal = new List <InsEditLog>(); string command = @"SELECT PlanNum FROM insplan WHERE PlanNum = " + POut.Long(planNum); long insPlanNum = Db.GetLong(command); command = @"SELECT CarrierNum FROM carrier WHERE CarrierNum IN (" + string.Join(",", listCarrierNums) + @")"; listCarrierNums = Db.GetListLong(command); command = @"SELECT EmployerNum FROM employer WHERE EmployerNum=" + POut.Long(employerNum); long empNum = Db.GetLong(command); List <string> listWhereOrs = new List <string>(); if (insPlanNum > 0) { listWhereOrs.Add("(LogType=" + POut.Int((int)InsEditLogType.InsPlan) + " AND FKey = " + POut.Long(insPlanNum) + ")"); } if (listCarrierNums.Count > 0) { listWhereOrs.Add("(LogType=" + POut.Int((int)InsEditLogType.Carrier) + " AND FKey IN (" + string.Join(",", listCarrierNums) + "))"); } if (empNum > 0) { listWhereOrs.Add("(LogType=" + POut.Int((int)InsEditLogType.Employer) + " AND FKey=" + POut.Long(empNum) + ")"); } listWhereOrs.Add("(LogType=" + POut.Int((int)InsEditLogType.Benefit) + " AND ParentKey=" + POut.Long(planNum) + ")"); command = @"SELECT * FROM inseditlog WHERE " + string.Join(@" OR " , listWhereOrs); List <InsEditLog> listLogs = Crud.InsEditLogCrud.SelectMany(command); //get all of the logs //get any logs that show that InsPlan's PlanNum changed return(GetChangedLogs(listLogs).OrderBy(x => x.DateTStamp) .ThenBy(x => x.LogType != InsEditLogType.InsPlan) .ThenBy(x => x.LogType != InsEditLogType.Carrier) .ThenBy(x => x.LogType != InsEditLogType.Employer) .ThenBy(x => x.LogType != InsEditLogType.Benefit) .ThenBy(x => x.FKey) //primary keys first .ThenBy(x => x.LogType == InsEditLogType.Benefit?(x.FieldName != "BenefitNum") :x.LogType == InsEditLogType.Carrier?(x.FieldName != "CarrierNum") :x.LogType == InsEditLogType.Employer?(x.FieldName != "EmployerNum") :(x.FieldName != "PlanNum")).ToList()); }
///<summary>Surround with try/catch if possibly adding a Canadian carrier.</summary> public static long Insert(Carrier carrier, Carrier carrierOld = null) { if (RemotingClient.RemotingRole != RemotingRole.ServerWeb) { carrier.SecUserNumEntry = Security.CurUser.UserNum; //must be before normal remoting role check to get user at workstation } if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { carrier.CarrierNum = Meth.GetLong(MethodBase.GetCurrentMethod(), carrier, carrierOld); return(carrier.CarrierNum); } //string command; if (CultureInfo.CurrentCulture.Name.EndsWith("CA")) //Canadian. en-CA or fr-CA { if (carrier.IsCDA) { if (carrier.ElectID == "") { throw new ApplicationException(Lans.g("Carriers", "Carrier Identification Number required.")); } if (!Regex.IsMatch(carrier.ElectID, "^[0-9]{6}$")) { throw new ApplicationException(Lans.g("Carriers", "Carrier Identification Number must be exactly 6 numbers.")); } } } if (carrierOld == null) { carrierOld = carrier.Copy(); } Crud.CarrierCrud.Insert(carrier); if (carrierOld.CarrierNum != 0) { InsEditLogs.MakeLogEntry(carrier, carrierOld, InsEditLogType.Carrier, carrier.SecUserNumEntry); } else { InsEditLogs.MakeLogEntry(carrier, null, InsEditLogType.Carrier, carrier.SecUserNumEntry); } return(carrier.CarrierNum); }
///<summary>Surround with try/catch. ///No need to pass in usernum, it is set before the remoting role and passed in for logging.</summary> public static void Update(Carrier carrier, Carrier oldCarrier, long userNum) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { Meth.GetVoid(MethodBase.GetCurrentMethod(), carrier, oldCarrier, userNum); return; } string command; DataTable table; if (CultureInfo.CurrentCulture.Name.EndsWith("CA")) //Canadian. en-CA or fr-CA { if (carrier.IsCDA) { if (carrier.ElectID == "") { throw new ApplicationException(Lans.g("Carriers", "Carrier Identification Number required.")); } if (!Regex.IsMatch(carrier.ElectID, "^[0-9]{6}$")) { throw new ApplicationException(Lans.g("Carriers", "Carrier Identification Number must be exactly 6 numbers.")); } } //so the edited carrier looks good, but now we need to make sure that the original was allowed to be changed. command = "SELECT ElectID,IsCDA FROM carrier WHERE CarrierNum = '" + POut.Long(carrier.CarrierNum) + "'"; table = Db.GetTable(command); if (PIn.Bool(table.Rows[0]["IsCDA"].ToString()) && //if original carrier IsCDA PIn.String(table.Rows[0]["ElectID"].ToString()).Trim() != "" && //and the ElectID was already set PIn.String(table.Rows[0]["ElectID"].ToString()) != carrier.ElectID) //and the ElectID was changed { command = "SELECT COUNT(*) FROM etrans WHERE CarrierNum= " + POut.Long(carrier.CarrierNum) + " OR CarrierNum2=" + POut.Long(carrier.CarrierNum); if (Db.GetCount(command) != "0") { throw new ApplicationException(Lans.g("Carriers", "Not allowed to change Carrier Identification Number because it's in use in the claim history.")); } } } Crud.CarrierCrud.Update(carrier, oldCarrier); InsEditLogs.MakeLogEntry(carrier, oldCarrier, InsEditLogType.Carrier, userNum); }
///<summary>Surround with try/catch if possibly adding a Canadian carrier.</summary> public static long Insert(Carrier carrier, Carrier carrierOld = null, bool useExistingPriKey = false) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { carrier.CarrierNum = Meth.GetLong(MethodBase.GetCurrentMethod(), carrier, carrierOld, useExistingPriKey); return(carrier.CarrierNum); } //Security.CurUser.UserNum gets set on MT by the DtoProcessor so it matches the user from the client WS. carrier.SecUserNumEntry = Security.CurUser.UserNum; //string command; if (CultureInfo.CurrentCulture.Name.EndsWith("CA")) //Canadian. en-CA or fr-CA { if (carrier.IsCDA) { if (carrier.ElectID == "") { throw new ApplicationException(Lans.g("Carriers", "Carrier Identification Number required.")); } if (!Regex.IsMatch(carrier.ElectID, "^[0-9]{6}$")) { throw new ApplicationException(Lans.g("Carriers", "Carrier Identification Number must be exactly 6 numbers.")); } } } if (carrierOld == null) { carrierOld = carrier.Copy(); } Crud.CarrierCrud.Insert(carrier, useExistingPriKey); if (carrierOld.CarrierNum != 0) { InsEditLogs.MakeLogEntry(carrier, carrierOld, InsEditLogType.Carrier, carrier.SecUserNumEntry); } else { InsEditLogs.MakeLogEntry(carrier, null, InsEditLogType.Carrier, carrier.SecUserNumEntry); } return(carrier.CarrierNum); }
///<summary>Gets logs from the passed in datetime and before.</summary> public static List <InsEditLog> GetLogsForPlan(long planNum, long carrierNum, long employerNum) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { return(Meth.GetObject <List <InsEditLog> >(MethodBase.GetCurrentMethod(), planNum, carrierNum, employerNum)); } List <long> listCarrierNums = InsEditLogs.GetAssociatedCarrierNums(planNum); listCarrierNums.Add(carrierNum); List <InsEditLog> retVal = new List <InsEditLog>(); string command = @"SELECT inseditlog.* FROM inseditlog "; command += @"LEFT JOIN insplan ON insplan.PlanNum = inseditlog.FKey AND insplan.PlanNum LIKE '" + POut.Long(planNum) + @"%' AND inseditlog.LogType = " + POut.Int((int)InsEditLogType.InsPlan) + @" LEFT JOIN carrier ON carrier.CarrierNum = inseditlog.FKey AND carrier.CarrierNum IN( " + string.Join(",", listCarrierNums) + @") AND inseditlog.LogType = " + POut.Int((int)InsEditLogType.Carrier) + @" LEFT JOIN employer ON employer.EmployerNum = inseditlog.FKey AND employer.EmployerNum = " + POut.Long(employerNum) + @" AND inseditlog.LogType = " + POut.Int((int)InsEditLogType.Employer) + @" WHERE (insplan.PlanNum IS NOT NULL OR carrier.CarrierNum IS NOT NULL OR employer.EmployerNum IS NOT NULL OR (inseditlog.LogType = " + POut.Int((int)InsEditLogType.Benefit) + " AND inseditlog.ParentKey = " + POut.Long(planNum) + "))"; List <InsEditLog> listLogs = Crud.InsEditLogCrud.SelectMany(command); //get all of the logs //get any logs that show that InsPlan's PlanNum changed return(GetChangedLogs(listLogs).OrderBy(x => x.DateTStamp) .ThenBy(x => x.LogType != InsEditLogType.InsPlan) .ThenBy(x => x.LogType != InsEditLogType.Carrier) .ThenBy(x => x.LogType != InsEditLogType.Employer) .ThenBy(x => x.LogType != InsEditLogType.Benefit) .ThenBy(x => x.FKey) //primary keys first .ThenBy(x => x.LogType == InsEditLogType.Benefit ? x.FieldName != "BenefitNum" : x.LogType == InsEditLogType.Carrier ? x.FieldName != "CarrierNum" : x.LogType == InsEditLogType.Employer ? x.FieldName != "EmployerNum" : x.FieldName != "PlanNum").ToList()); }
///<summary>Surround with try/catch Combines all the given carriers into one. ///The carrier that will be used as the basis of the combination is specified in the pickedCarrier argument. ///Updates insplan, then deletes all the other carriers. ///No need to pass in usernum, it is set before the remoting role and passed in for logging.</summary> public static void Combine(List <long> carrierNums, long pickedCarrierNum, long userNum = 0) { if (RemotingClient.RemotingRole != RemotingRole.ServerWeb) { userNum = Security.CurUser.UserNum; //must be before normal remoting role check to get user at workstation } if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { Meth.GetVoid(MethodBase.GetCurrentMethod(), carrierNums, pickedCarrierNum, userNum); return; } if (carrierNums.Count == 1) { return; //nothing to do } //remove pickedCarrierNum from the carrierNums list to make the queries easier to construct. List <long> carrierNumList = new List <long>(); for (int i = 0; i < carrierNums.Count; i++) { if (carrierNums[i] == pickedCarrierNum) { continue; } carrierNumList.Add(carrierNums[i]); } //Make sure that none of the carrierNums are in use in the etrans table string command = "SELECT COUNT(*) FROM etrans WHERE"; for (int i = 0; i < carrierNumList.Count; i++) { if (i > 0) { command += " OR"; } command += " (CarrierNum=" + carrierNumList[i].ToString() + " AND CarrierTransCounter>0)"; } for (int i = 0; i < carrierNumList.Count; i++) { command += " OR (CarrierNum2=" + carrierNumList[i].ToString() + " AND CarrierTransCounter2>0)"; } DataTable table = Db.GetTable(command); string ecount = table.Rows[0][0].ToString(); if (ecount != "0") { throw new ApplicationException(Lans.g("Carriers", "Not allowed to combine carriers because some are in use in the etrans table. Number of entries involved: ") + ecount); } //Now, do the actual combining---------------------------------------------------------------------------------- for (int i = 0; i < carrierNums.Count; i++) { if (carrierNums[i] == pickedCarrierNum) { continue; } command = "SELECT * FROM insplan WHERE CarrierNum = " + POut.Long(carrierNums[i]); List <InsPlan> listInsPlan = Crud.InsPlanCrud.SelectMany(command); command = "UPDATE insplan SET CarrierNum = '" + POut.Long(pickedCarrierNum) + "' WHERE CarrierNum = " + POut.Long(carrierNums[i]); Db.NonQ(command); listInsPlan.ForEach(x => { //Log InsPlan CarrierNum change. InsEditLogs.MakeLogEntry("CarrierNum", userNum, POut.Long(carrierNums[i]), POut.Long(pickedCarrierNum), InsEditLogType.InsPlan, x.PlanNum, 0, x.GroupNum + " - " + x.GroupName); }); Carrier carrierCur = GetCarrier(carrierNums[i]); //gets from cache command = "DELETE FROM carrier" + " WHERE CarrierNum = '" + carrierNums[i].ToString() + "'"; Db.NonQ(command); InsEditLogs.MakeLogEntry(null, carrierCur, InsEditLogType.Carrier, userNum); } }