public int addMessageToThread(VerseMessageThread vmt, String message_text) { DateTime datetime = DateTime.Now; VerseMessage vm = new VerseMessage(-1, vmt.thread_id, datetime, message_text, us.user_profile.id); //dont do this in a seperate thread now, because we need to know if it's succesful. int code = AddMessageToThreadDB(message_text,datetime,vmt,vm); if(code == MESSAGE_SENT_CODE_SUCCESSFUL) { //this is a little messy. we should be consistent in the way we update memory and db. vmt.addMessage(vm); updateThreadLastModifiedTime(vmt, vm); VerseMessageParticipant vmp = vmt.getParticipant(us.user_profile.id); updateParticipantThreadLastAccessedTime (vmp); return MESSAGE_SENT_CODE_SUCCESSFUL; } else { return MESSAGE_SENT_CODE_ERROR; } }
public void removeParticipantFromThread(VerseMessageThread vmt) { long user_id = us.user_profile.id; if (vmt.getParticipant(user_id) != null) { VerseMessageParticipant vmp = vmt.getParticipant(user_id); ParticipantTask pt = new ParticipantTask(us, vmp); //TODO change this not to be done in thread. pt.RemoveParticipantFromThread(); VerseThreadManager.getInstance().removeParticipant(vmt, vmp); } }
protected void appendMessageThread( UserSession us, MessageToSend ms, VerseMessageThread vmt) { Boolean is_new = false; String verse_ref = ""; String message; List<VerseMessage> messages = vmt.getMessages(); VerseMessage first_vm = messages.First(); VerseMessage last_vm = messages.Last(); ms.AppendLine(""); ms.Append(createMessageLink(MENU_LINK_NAME, "*", MessageInboxHandler.OPEN_THREAD + vmt.thread_id)); //determine if there is a new message in this thread by comparing last updated and read dates. ms.Append(" "); DateTime last_mod_date = vmt.datetime_last_modified; VerseMessageParticipant vmp = vmt.getParticipant(us.user_profile.id); DateTime last_acc_date = DateTime.MaxValue; if (vmp != null) last_acc_date = vmp.datetime_last_read; is_new = last_mod_date > last_acc_date; String subject = vmt.subject; ms.Append("From: "); if (first_vm.sender_id == us.user_profile.id) { ms.AppendLine("You ", TextMarkup.Bold); } else { ms.AppendLine(" " + UserNameManager.getInstance().getUserName(first_vm.sender_id), TextMarkup.Bold); } ms.Append("To: "); List<VerseMessageParticipant> parts = vmt.getListOfParticipants(); String receivers = getRecieverString(us, parts,first_vm.sender_id); ms.AppendLine(receivers, TextMarkup.Bold); if (!VerseMessageThread.NOTIFICATION_THREAD.Equals(vmt.start_verse)) { verse_ref = BibleHelper.getVerseSectionReference(us, vmt.start_verse, vmt.end_verse); ms.AppendLine("Verse: " + verse_ref); } if (!(subject == null || subject.Equals("") || subject.Equals("NULL"))) { ms.AppendLine("Subject: '" + subject + "'"); //ms.Append(); //ms.AppendLine("'"); } message = last_vm.message_text; if(!(message== null || message.Equals("") || message.Equals("NULL"))) ms.AppendLine("Newest Message: " + StringUtils.getTextSummary(message, 4) + "...' ("+messages.Count+" messages)"); //ms.AppendLine(""); if (last_vm != null) { ms.Append("Last Updated by "); if (last_vm.sender_id == us.user_profile.id) { ms.Append("You ("); } else { ms.Append(UserNameManager.getInstance().getUserName(last_vm.sender_id) + " ("); } if (is_new) { ms.Append(DateUtils.RelativeDate(last_mod_date),TextMarkup.Bold); ms.AppendLine(")"); } else { ms.AppendLine(DateUtils.RelativeDate(last_mod_date) + ")"); } } ms.Append(createMessageLink(MENU_LINK_NAME, "[DELETE]", MessageInboxHandler.DELETE_THREAD + vmt.thread_id)); ms.AppendLine(" "); ms.Append("\r\n"); }