Inheritance: PersistentObject
コード例 #1
0
ファイル: Addressees.cs プロジェクト: ChristopherEdwards/MDWS
        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);
        }
コード例 #2
0
ファイル: Addressees.cs プロジェクト: govtmirror/RAPTOR-1
        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);
        }
コード例 #3
0
ファイル: Addressees.cs プロジェクト: govtmirror/RAPTOR-1
        /**
         * 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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: Addressee.cs プロジェクト: OSEHRA/mdo
        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;
        }
コード例 #6
0
        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);
        }
コード例 #7
0
ファイル: AddresseeDao.cs プロジェクト: OSEHRA/mdo
        internal Addressee toAddressee(IDataReader rdr)
        {
            Addressee addressee = new Addressee();

            if (rdr.Read())
            {
                addressee = Addressee.getAddresseeFromReader(rdr);
            }
            return addressee;
        }
コード例 #8
0
ファイル: AddresseeDao.cs プロジェクト: OSEHRA/mdo
 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;
 }
コード例 #9
0
ファイル: AddresseeDao.cs プロジェクト: OSEHRA/mdo
 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;
 }
コード例 #10
0
ファイル: AddresseeDao.cs プロジェクト: OSEHRA/mdo
        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;
        }
コード例 #11
0
ファイル: AddresseeDao.cs プロジェクト: OSEHRA/mdo
        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;
        }
コード例 #12
0
ファイル: AddresseeDao.cs プロジェクト: OSEHRA/mdo
        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;
        }
コード例 #13
0
ファイル: AddresseeDao.cs プロジェクト: OSEHRA/mdo
        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;
        }
コード例 #14
0
ファイル: AddresseeDao.cs プロジェクト: OSEHRA/mdo
        /// <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;
            }
        }
コード例 #15
0
ファイル: Addressees.cs プロジェクト: ChristopherEdwards/MDWS
        /**
         * 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);
        }