///<summary>InsertID will be returned for Insert commands. Other commands return the number of rows affected which is usually just ignored.</summary> public static int ProcessCommand(DtoCommandBase dto) { byte[] buffer = SendAndReceive(dto);//this might throw an exception if server unavailable MemoryStream memStream = new MemoryStream(buffer); XmlSerializer serializer; try{ serializer = new XmlSerializer(typeof(DtoServerAck)); DtoServerAck ack = (DtoServerAck)serializer.Deserialize(memStream); memStream.Close(); return(ack.IDorRows); } catch { memStream = new MemoryStream(buffer); //just in case stream is in wrong position. serializer = new XmlSerializer(typeof(DtoException)); DtoException exception = (DtoException)serializer.Deserialize(memStream); memStream.Close(); throw new Exception(exception.Message); } }
public static int ProcessCommand(DtoCommandBase dto) { if (dto.GetType() == typeof(DtoDefInsert)) { return(DefB.Insert(((DtoDefInsert)dto).DefCur)); } else if (dto.GetType() == typeof(DtoDefUpdate)) { return(DefB.Update(((DtoDefUpdate)dto).DefCur)); } else if (dto.GetType() == typeof(DtoDocumentInsert)) { return(DocumentB.Insert(((DtoDocumentInsert)dto).Doc, ((DtoDocumentInsert)dto).PatLF, ((DtoDocumentInsert)dto).PatNum)); } else if (dto.GetType() == typeof(DtoDocumentUpdate)) { return(DocumentB.Update(((DtoDocumentUpdate)dto).Doc)); } else if (dto.GetType() == typeof(DtoEmailMessageUpdate)) { return(EmailMessageB.Update(((DtoEmailMessageUpdate)dto).Message)); } else if (dto.GetType() == typeof(DtoGeneralNonQ)) { return(GeneralB.NonQ(((DtoGeneralNonQ)dto).Command, ((DtoGeneralNonQ)dto).GetInsertID)); } else if (dto.GetType() == typeof(DtoLogin)) { return(OpenDentalService.Login(((DtoLogin)dto).Database, ((DtoLogin)dto).OdUser, ((DtoLogin)dto).OdPassHash)); } else if (dto.GetType() == typeof(DtoMiscDataMakeABackup)) { return(MiscDataB.MakeABackup()); } else if (dto.GetType() == typeof(DtoProcedureInsert)) { return(ProcedureB.Insert(((DtoProcedureInsert)dto).Proc)); } else if (dto.GetType() == typeof(DtoProcedureUpdate)) { return(ProcedureB.Update(((DtoProcedureUpdate)dto).Proc, ((DtoProcedureUpdate)dto).OldProc)); } else if (dto.GetType() == typeof(DtoProcedureDelete)) { return(ProcedureB.Delete(((DtoProcedureDelete)dto).ProcNum)); } else if (dto.GetType() == typeof(DtoProcedureUpdateAptNum)) { return(ProcedureB.UpdateAptNum(((DtoProcedureUpdateAptNum)dto).ProcNum, ((DtoProcedureUpdateAptNum)dto).NewAptNum)); } else if (dto.GetType() == typeof(DtoProcedureUpdatePlannedAptNum)) { return(ProcedureB.UpdatePlannedAptNum(((DtoProcedureUpdatePlannedAptNum)dto).ProcNum, ((DtoProcedureUpdatePlannedAptNum)dto).NewPlannedAptNum)); } else if (dto.GetType() == typeof(DtoProcedureUpdatePriority)) { return(ProcedureB.UpdatePriority(((DtoProcedureUpdatePriority)dto).ProcNum, ((DtoProcedureUpdatePriority)dto).NewPriority)); } else if (dto.GetType() == typeof(DtoProcedureUpdateFee)) { return(ProcedureB.UpdateFee(((DtoProcedureUpdateFee)dto).ProcNum, ((DtoProcedureUpdateFee)dto).NewFee)); } else { throw new Exception("OpenDentServer.BusinessLayer.ProcessCommand(dto) is missing a case for " + dto.GetType().ToString()); } }