public SecureMessageThreadsTO(IList<Thread> threads) { if (threads == null || threads.Count == 0) { return; } count = threads.Count; messageThreads = new ThreadTO[count]; for (int i = 0; i < count; i++) { messageThreads[i] = new ThreadTO(threads[i]); } }
public SecureMessageThreadsTO(IList <Thread> threads) { if (threads == null || threads.Count == 0) { return; } count = threads.Count; messageThreads = new ThreadTO[count]; for (int i = 0; i < count; i++) { messageThreads[i] = new ThreadTO(threads[i]); } }
public ThreadTO sendNewMessage(string pwd, string threadSubject, Int32 groupId, Int32 messageCategory, Int32 senderId, Int32 recipientId, string messageBody) { ThreadTO result = new ThreadTO(); if (String.IsNullOrEmpty(threadSubject)) { result.fault = new FaultTO("Missing thread subject"); } else if (messageCategory >= 0 && !Enum.IsDefined(typeof(gov.va.medora.mdo.domain.sm.enums.MessageCategoryTypeEnum), messageCategory)) { result.fault = new FaultTO("That message category is not defined"); } else if (senderId <= 0) { result.fault = new FaultTO("Missing sender ID"); } else if (recipientId <= 0) { result.fault = new FaultTO("Missing recipient ID"); } else if (String.IsNullOrEmpty(messageBody)) { result.fault = new FaultTO("Must supply a message body"); } if (result.fault != null) { return result; } try { gov.va.medora.mdo.domain.sm.Thread thread = new Thread() { MailGroup = new TriageGroup() { Id = groupId }, MessageCategoryType = (mdo.domain.sm.enums.MessageCategoryTypeEnum)messageCategory, Subject = threadSubject }; gov.va.medora.mdo.domain.sm.Message message = new Message() { Body = messageBody, Checksum = StringUtils.getMD5Hash(messageBody), MessageThread = thread, RecipientId = recipientId, SenderId = senderId, SentDate = DateTime.Now }; using (MdoOracleConnection cxn = new MdoOracleConnection(new mdo.DataSource() { ConnectionString = pwd })) { SecureMessageDao dao = new SecureMessageDao(cxn); Message newMsg = dao.sendNewMessage(message); result = new ThreadTO(newMsg.MessageThread); result.messages = new MessageTO[] { new MessageTO(newMsg) }; } } catch (Exception exc) { result.fault = new FaultTO(exc); } return result; }
public ThreadTO updateMessageThread(string pwd, Int32 threadId, string threadSubject, Int32 messageCategory, Int32 threadOplock) { ThreadTO result = new ThreadTO(); if (threadId <= 0) { result.fault = new FaultTO("Must specify a message thread"); } else if (String.IsNullOrEmpty(threadSubject)) { result.fault = new FaultTO("Missing thread subject"); } else if (messageCategory > 0 && !Enum.IsDefined(typeof(gov.va.medora.mdo.domain.sm.enums.MessageCategoryTypeEnum), messageCategory)) { result.fault = new FaultTO("That message category is not defined"); } if (result.fault != null) { return result; } try { gov.va.medora.mdo.domain.sm.Thread thread = new gov.va.medora.mdo.domain.sm.Thread() { Id = threadId, Subject = threadSubject, MessageCategoryType = (gov.va.medora.mdo.domain.sm.enums.MessageCategoryTypeEnum)messageCategory, Oplock = threadOplock }; using (MdoOracleConnection cxn = new MdoOracleConnection(new mdo.DataSource() { ConnectionString = pwd })) { SecureMessageDao dao = new SecureMessageDao(cxn); gov.va.medora.mdo.domain.sm.Thread dbThread = dao.getMessagesFromThread(threadId); // we don't want to permit apps to change the mail group this way so just keep what's in the database which gets set through the proper channels thread.MailGroup = dbThread.MailGroup; if (dbThread == null || dbThread.Id <= 0 || dbThread.Messages == null || dbThread.Messages.Count <= 0) { throw new Exception("That thread does not exist in the database or appears malformed"); } // make sure the thread hasn't been marked as completed foreach(Message m in dbThread.Messages) { if (m.CompletedDate.Year > 1900) { throw new Exception("That message thread has already been completed. Unable to edit."); } } result = new ThreadTO(dao.updateThread(thread)); } } catch (Exception exc) { result.fault = new FaultTO(exc); } return result; }
public ThreadTO saveDraft(string pwd, Int32 replyingToMessageId, string threadSubject, Int32 messageCategory, Int32 messageId, Int32 senderId, Int32 recipientId, string messageBody, Int32 messageOplock, Int32 threadOplock) { ThreadTO result = new ThreadTO(); if (String.IsNullOrEmpty(pwd)) { result.fault = new FaultTO("Missing pwd"); } else if (messageCategory > 0 && !Enum.IsDefined(typeof(gov.va.medora.mdo.domain.sm.enums.MessageCategoryTypeEnum), messageCategory)) { result.fault = new FaultTO("Invalid message category"); } else if (String.IsNullOrEmpty(messageBody)) { result.fault = new FaultTO("Missing message body"); } else if (messageId > 0 && messageOplock < 0) { result.fault = new FaultTO("Invalid message ID/message oplock"); } else if (senderId <= 0 || recipientId <= 0) { result.fault = new FaultTO("Invalid sender/recipient"); } if (result.fault != null) { return result; } try { Message message = new Message() { Body = messageBody, Checksum = StringUtils.getMD5Hash(messageBody), Id = messageId, MessageThread = new Thread(), RecipientId = recipientId, SenderId = senderId, Oplock = messageOplock }; message.MessageThread.Subject = threadSubject; if (Enum.IsDefined(typeof(mdo.domain.sm.enums.MessageCategoryTypeEnum), messageCategory)) { message.MessageThread.MessageCategoryType = (mdo.domain.sm.enums.MessageCategoryTypeEnum)messageCategory; } message.MessageThread.Oplock = threadOplock; using (MdoOracleConnection cxn = new MdoOracleConnection(new mdo.DataSource() { ConnectionString = pwd })) { SecureMessageDao dao = new SecureMessageDao(cxn); if (replyingToMessageId > 0) { Message replyingToMsg = dao.getMessage(replyingToMessageId); if (replyingToMsg == null || replyingToMsg.Id <= 0 || replyingToMsg.MessageThread == null || replyingToMsg.MessageThread.Id <= 0) { throw new Exception("Invalid reply to message ID"); } message.MessageThread.Id = replyingToMsg.MessageThread.Id; } gov.va.medora.mdo.domain.sm.Message savedDraft = dao.saveDraft(message); MessageTO msg = new MessageTO(savedDraft); result = new ThreadTO(savedDraft.MessageThread); result.messages = new MessageTO[] { msg }; } } catch (Exception exc) { result.fault = new FaultTO(exc); } return result; }