public void addRecipient(User user) { if(userExists(user)) { /* silently ignore ??? */ return; } Addressee a = new Addressee(); a.Owner = user; a.Role = AddresseeRoleEnum.RECIPIENT; //a.FolderId = SystemFolderEnum.INBOX.getId(); _addressees.Add(a); }
public void addRecipient(User user) { if (userExists(user)) { /* silently ignore ??? */ return; } Addressee a = new Addressee(); a.Owner = user; a.Role = AddresseeRoleEnum.RECIPIENT; //a.FolderId = SystemFolderEnum.INBOX.getId(); _addressees.Add(a); }
/** * business rules only allow one sender * so if a one exists there is a problem. * return an error. */ public void setSender(User user) { if (getSender() != null) { throw new ApplicationException("Sender already exists."); } Addressee a = new Addressee(); a.Owner = user; a.Role = AddresseeRoleEnum.SENDER; //a.FolderId = SystemFolderEnum.SENT.getId(); a.ReadDate = new DateTime(); _addressees.Add(a); }
public dto.sm.MessageTO readMessage(string pwd, Int32 addresseeId, Int32 addresseeOplock) { MessageTO result = new MessageTO(); pwd = getConnectionString(pwd); if (String.IsNullOrEmpty(pwd)) { result.fault = new FaultTO("No connection string specified or configured"); } else if (addresseeId <= 0) { result.fault = new FaultTO("Must supply addressee ID"); } if (result.fault != null) { return(result); } try { using (MdoOracleConnection cxn = new MdoOracleConnection(new mdo.DataSource() { ConnectionString = pwd })) { AddresseeDao dao = new AddresseeDao(cxn); gov.va.medora.mdo.domain.sm.Addressee addressee = dao.readMessage(new Addressee() { Id = addresseeId, Oplock = addresseeOplock }); MessageTO message = new MessageTO(addressee.Message); message.addressees = new AddresseeTO[1] { new AddresseeTO(addressee) }; result = message; } } catch (Exception exc) { result.fault = new FaultTO(exc); } return(result); }
internal static Addressee getAddresseeFromReader(System.Data.IDataReader rdr, Dictionary<string, bool> columnTable) { Addressee addr = new Addressee(); if (columnTable["ADDRESSEE_ID"]) { int idIndex = rdr.GetOrdinal("ADDRESSEE_ID"); if (!rdr.IsDBNull(idIndex)) { addr.Id = Convert.ToInt32(rdr.GetDecimal(idIndex)); } } if (columnTable["ADDRESSEE_ROLE"]) { int roleIndex = rdr.GetOrdinal("ADDRESSEE_ROLE"); if (!rdr.IsDBNull(roleIndex)) { addr.Role = (AddresseeRoleEnum)Convert.ToInt32(rdr.GetDecimal(roleIndex)); } } if (columnTable["SECURE_MESSAGE_ID"]) { int smIdIndex = rdr.GetOrdinal("SECURE_MESSAGE_ID"); if (!rdr.IsDBNull(smIdIndex)) { addr.Message = new Message() { Id = Convert.ToInt32(rdr.GetDecimal(smIdIndex)) }; } } if (columnTable["USER_ID"]) { int userIdIndex = rdr.GetOrdinal("USER_ID"); if (!rdr.IsDBNull(userIdIndex)) { addr.Owner = new User() { Id = Convert.ToInt32(rdr.GetDecimal(userIdIndex)) }; } } if (columnTable["ADDROPLOCK"]) { int oplockIndex = rdr.GetOrdinal("ADDROPLOCK"); if (!rdr.IsDBNull(oplockIndex)) { addr.Oplock = Convert.ToInt32(rdr.GetDecimal(oplockIndex)); } } if (columnTable["FOLDER_ID"]) { int folderIdIndex = rdr.GetOrdinal("FOLDER_ID"); if (!rdr.IsDBNull(folderIdIndex)) { addr.FolderId = Convert.ToInt32(rdr.GetDecimal(folderIdIndex)); } addr.Folder = Folder.getFolderFromReader(rdr); } if (columnTable["READ_DATE"]) { int readDateIndex = rdr.GetOrdinal("READ_DATE"); if (!rdr.IsDBNull(readDateIndex)) { addr.ReadDate = rdr.GetDateTime(readDateIndex); } } if (columnTable["REMINDER_DATE"]) { int reminderDateIndex = rdr.GetOrdinal("REMINDER_DATE"); if (!rdr.IsDBNull(reminderDateIndex)) { addr.ReminderDate = rdr.GetDateTime(reminderDateIndex); } } return addr; }
internal static Addressee getAddresseeFromReader(System.Data.IDataReader rdr, Dictionary <string, bool> columnTable) { Addressee addr = new Addressee(); if (columnTable["ADDRESSEE_ID"]) { int idIndex = rdr.GetOrdinal("ADDRESSEE_ID"); if (!rdr.IsDBNull(idIndex)) { addr.Id = Convert.ToInt32(rdr.GetDecimal(idIndex)); } } if (columnTable["ADDRESSEE_ROLE"]) { int roleIndex = rdr.GetOrdinal("ADDRESSEE_ROLE"); if (!rdr.IsDBNull(roleIndex)) { addr.Role = (AddresseeRoleEnum)Convert.ToInt32(rdr.GetDecimal(roleIndex)); } } if (columnTable["SECURE_MESSAGE_ID"]) { int smIdIndex = rdr.GetOrdinal("SECURE_MESSAGE_ID"); if (!rdr.IsDBNull(smIdIndex)) { addr.Message = new Message() { Id = Convert.ToInt32(rdr.GetDecimal(smIdIndex)) }; } } if (columnTable["USER_ID"]) { int userIdIndex = rdr.GetOrdinal("USER_ID"); if (!rdr.IsDBNull(userIdIndex)) { addr.Owner = new User() { Id = Convert.ToInt32(rdr.GetDecimal(userIdIndex)) }; } } if (columnTable["ADDROPLOCK"]) { int oplockIndex = rdr.GetOrdinal("ADDROPLOCK"); if (!rdr.IsDBNull(oplockIndex)) { addr.Oplock = Convert.ToInt32(rdr.GetDecimal(oplockIndex)); } } if (columnTable["FOLDER_ID"]) { int folderIdIndex = rdr.GetOrdinal("FOLDER_ID"); if (!rdr.IsDBNull(folderIdIndex)) { addr.FolderId = Convert.ToInt32(rdr.GetDecimal(folderIdIndex)); } addr.Folder = Folder.getFolderFromReader(rdr); } if (columnTable["READ_DATE"]) { int readDateIndex = rdr.GetOrdinal("READ_DATE"); if (!rdr.IsDBNull(readDateIndex)) { addr.ReadDate = rdr.GetDateTime(readDateIndex); } } if (columnTable["REMINDER_DATE"]) { int reminderDateIndex = rdr.GetOrdinal("REMINDER_DATE"); if (!rdr.IsDBNull(reminderDateIndex)) { addr.ReminderDate = rdr.GetDateTime(reminderDateIndex); } } return(addr); }
internal Addressee toAddressee(IDataReader rdr) { Addressee addressee = new Addressee(); if (rdr.Read()) { addressee = Addressee.getAddresseeFromReader(rdr); } return addressee; }
internal Addressee moveMessage(Addressee addressee) { OracleQuery request = buildMoveMessageQuery(addressee); nonQuery qry = delegate() { return request.Command.ExecuteNonQuery(); }; Int32 rowsAffected = (Int32)_cxn.query(request, qry); if (rowsAffected != 1) { throw new MdoException("Failed to move message"); } addressee.Oplock++; return addressee; }
internal Addressee createAddressee(Addressee addressee, Int32 messageId) { OracleQuery query = buildCreateAddresseeQuery(addressee, messageId); nonQuery insertQuery = delegate() { return query.Command.ExecuteNonQuery(); }; _cxn.query(query, insertQuery); addressee.Id = ((Oracle.DataAccess.Types.OracleDecimal)query.Command.Parameters["outId"].Value).ToInt32(); return addressee; }
internal OracleQuery buildUpdateAddresseeQuery(Addressee addressee) { string sql = "UPDATE SMS.ADDRESSEE SET OPLOCK=:oplockPlusOne, MODIFIED_DATE=:modifiedDate, FOLDER_ID=:folderId, READ_DATE=:readDate, " + "REMINDER_DATE=:reminderDate WHERE ADDRESSEE_ID=:addresseeId AND OPLOCK=:oplock"; OracleQuery query = new OracleQuery(); query.Command = new OracleCommand(sql); OracleParameter oplockPlusOneParam = new OracleParameter("oplockPlusOne", OracleDbType.Decimal); oplockPlusOneParam.Value = Convert.ToDecimal(addressee.Oplock + 1); query.Command.Parameters.Add(oplockPlusOneParam); OracleParameter modifiedDateParam = new OracleParameter("modifiedDate", OracleDbType.Date); modifiedDateParam.Value = new OracleDate(DateTime.Now); query.Command.Parameters.Add(modifiedDateParam); OracleParameter folderIdParam = new OracleParameter("folderId", OracleDbType.Decimal); folderIdParam.Value = Convert.ToDecimal(addressee.FolderId); query.Command.Parameters.Add(folderIdParam); OracleParameter readDateParam = new OracleParameter("readDate", OracleDbType.Date); if (addressee.ReadDate.Year > 1900) { readDateParam.Value = new OracleDate(addressee.ReadDate); } else { readDateParam.Value = DBNull.Value; } query.Command.Parameters.Add(readDateParam); OracleParameter reminderDateParam = new OracleParameter("reminderDate", OracleDbType.Date); if (addressee.ReminderDate.Year > 1900) { reminderDateParam.Value = new OracleDate(addressee.ReminderDate); } else { reminderDateParam.Value = DBNull.Value; } query.Command.Parameters.Add(reminderDateParam); OracleParameter addresseeIdParam = new OracleParameter("addresseeId", OracleDbType.Decimal); addresseeIdParam.Value = Convert.ToDecimal(addressee.Id); query.Command.Parameters.Add(addresseeIdParam); OracleParameter oplockParam = new OracleParameter("oplock", OracleDbType.Decimal); oplockParam.Value = Convert.ToDecimal(addressee.Oplock); query.Command.Parameters.Add(oplockParam); return query; }
internal OracleQuery buildReadMessageRequest(Addressee addressee) { string sql = "UPDATE SMS.ADDRESSEE SET READ_DATE=:readDate, OPLOCK=:oplockPlusOne, MODIFIED_DATE=:modifiedDate " + "WHERE ADDRESSEE_ID=:addresseeId AND OPLOCK=:oplock RETURNING SECURE_MESSAGE_ID INTO :outId"; OracleQuery query = new OracleQuery(); query.Command = new OracleCommand(sql); OracleParameter readDateParam = new OracleParameter("readDate", OracleDbType.Date); readDateParam.Value = new OracleDate(addressee.ReadDate = DateTime.Now); query.Command.Parameters.Add(readDateParam); OracleParameter oplockPlusOneParam = new OracleParameter("oplockPlusOne", OracleDbType.Decimal); oplockPlusOneParam.Value = Convert.ToDecimal(addressee.Oplock + 1); query.Command.Parameters.Add(oplockPlusOneParam); OracleParameter modifiedDateParam = new OracleParameter("modifiedDate", OracleDbType.Date); modifiedDateParam.Value = new OracleDate(DateTime.Now); query.Command.Parameters.Add(modifiedDateParam); OracleParameter addresseeIdParam = new OracleParameter("addresseeId", OracleDbType.Decimal); addresseeIdParam.Value = Convert.ToDecimal(addressee.Id); query.Command.Parameters.Add(addresseeIdParam); OracleParameter oplockParam = new OracleParameter("oplock", OracleDbType.Decimal); oplockParam.Value = Convert.ToDecimal(addressee.Oplock); query.Command.Parameters.Add(oplockParam); OracleParameter outParam = new OracleParameter("outId", OracleDbType.Decimal); outParam.Direction = ParameterDirection.Output; query.Command.Parameters.Add(outParam); return query; }
internal OracleQuery buildMoveMessageQuery(Addressee addressee) { string sql = "UPDATE SMS.ADDRESSEE SET FOLDER_ID=:folderId, OPLOCK=:oplockPlusOne WHERE ADDRESSEE_ID=:addresseeId and OPLOCK=:oplock"; OracleQuery query = new OracleQuery(); query.Command = new OracleCommand(sql); OracleParameter folderIdParam = new OracleParameter("folderId", OracleDbType.Decimal); folderIdParam.Value = addressee.FolderId; query.Command.Parameters.Add(folderIdParam); OracleParameter oplockPlusOneParam = new OracleParameter("oplockPlusOne", OracleDbType.Decimal); oplockPlusOneParam.Value = addressee.Oplock + 1; query.Command.Parameters.Add(oplockPlusOneParam); OracleParameter addresseeParam = new OracleParameter("addresseeId", OracleDbType.Decimal); addresseeParam.Value = addressee.Id; query.Command.Parameters.Add(addresseeParam); OracleParameter oplockParam = new OracleParameter("oplock", OracleDbType.Decimal); oplockParam.Value = addressee.Oplock; query.Command.Parameters.Add(oplockParam); return query; }
public Addressee updateAddressee(Addressee addressee) { OracleQuery request = buildUpdateAddresseeQuery(addressee); nonQuery qry = delegate() { return request.Command.ExecuteNonQuery(); }; Int32 rowsAffected = (Int32)_cxn.query(request, qry); if (rowsAffected != 1) { throw new MdoException("Unable to update addressee"); } addressee.Oplock++; return addressee; }
/// <remarks> /// This function retrieves the message ID from the row that is updated. It does this so as not to put the burden /// on the consuming client application to pass the message ID value. This should make it less confusing which identifier /// is which and therefore the service easier to consume /// </remarks> /// <summary> /// Mark a message as read in the Addressee table. Set the ReadDate property to current timestamp toggle the date on. Or, /// set the ReadDate property to a new DateTime() - year of 1 - to toggle the read date off /// </summary> /// <param name="addressee"></param> /// <returns></returns> public Addressee readMessage(Addressee addressee) { _cxn.beginTransaction(); try { OracleQuery query = buildReadMessageRequest(addressee); nonQuery insertQuery = delegate() { return query.Command.ExecuteNonQuery(); }; if ((Int32)_cxn.query(query, insertQuery) != 1) { throw new mdo.exceptions.MdoException("Unable to mark message as read"); } Int32 msgId = ((Oracle.DataAccess.Types.OracleDecimal)query.Command.Parameters["outId"].Value).ToInt32(); addressee.Oplock++; SecureMessageDao msgDao = new SecureMessageDao(_cxn); addressee.Message = msgDao.getSecureMessageBody(msgId); _cxn.commitTransaction(); // TBD - any business rules around SECURE_MESSAGE.READ_RECEIPT and marking a message as read? return addressee; } catch (Exception) { _cxn.rollbackTransaction(); throw; } }