Example #1
0
        internal OracleQuery buildUpdateLastEmailNotificationQuery(domain.sm.User user)
        {
            string sql = "UPDATE SMS.SMS_USER SET LAST_EMAIL_NOTIFICATION=:lastEmailNotification, OPLOCK=:oplockPlusOne WHERE USER_ID=:userId and OPLOCK=:oplock";

            OracleQuery query = new OracleQuery();

            query.Command = new OracleCommand(sql);

            OracleParameter lastEmailNotificationParam = new OracleParameter("lastEmailNotification", OracleDbType.Date);

            lastEmailNotificationParam.Value = (Oracle.DataAccess.Types.OracleDate)DateTime.Now;
            query.Command.Parameters.Add(lastEmailNotificationParam);

            OracleParameter oplockPlusOneParam = new OracleParameter("oplockPlusOne", OracleDbType.Decimal);

            oplockPlusOneParam.Value = user.Oplock + 1;
            query.Command.Parameters.Add(oplockPlusOneParam);

            OracleParameter userIdParam = new OracleParameter("userId", OracleDbType.Decimal);

            userIdParam.Value = Convert.ToDecimal(user.Id);
            query.Command.Parameters.Add(userIdParam);

            OracleParameter oplockParam = new OracleParameter("oplock", OracleDbType.Decimal);

            oplockParam.Value = Convert.ToDecimal(user.Oplock);
            query.Command.Parameters.Add(oplockParam);

            return(query);
        }
Example #2
0
        internal void addSenderToMessage(domain.sm.User sender, Message message)
        {
            if (message.Addressees == null)
            {
                message.Addressees = new List <Addressee>();
            }
            message.Addressees.Add(
                new Addressee()
            {
                Message = message,
                Owner   = sender,
                Role    = domain.sm.enums.AddresseeRoleEnum.SENDER
            });

            if (message.SentDate.Year > 1900)
            {
                message.Addressees[message.Addressees.Count - 1].FolderId = (Int32)domain.sm.enums.SystemFolderEnum.Sent;
                message.Addressees[message.Addressees.Count - 1].Folder   = new Folder()
                {
                    Id   = (Int32)domain.sm.enums.SystemFolderEnum.Sent,
                    Name = Enum.GetName(typeof(domain.sm.enums.SystemFolderEnum), domain.sm.enums.SystemFolderEnum.Sent)
                };
            }
            else
            {
                message.Addressees[message.Addressees.Count - 1].FolderId = (Int32)domain.sm.enums.SystemFolderEnum.Drafts;
                message.Addressees[message.Addressees.Count - 1].Folder   = new Folder()
                {
                    Id   = (Int32)domain.sm.enums.SystemFolderEnum.Drafts,
                    Name = Enum.GetName(typeof(domain.sm.enums.SystemFolderEnum), domain.sm.enums.SystemFolderEnum.Drafts)
                };
            }
        }
Example #3
0
 public IList <TriageGroup> getValidRecipients(Int32 userId)
 {
     domain.sm.User user = getUserById(userId);
     if (user == null)
     {
         throw new MdoException(MdoExceptionCode.DATA_NO_RECORD_FOR_ID);
     }
     return(getValidRecipients(user));
 }
Example #4
0
 public domain.sm.User getUserDetail(Int32 userId)
 {
     domain.sm.User user = getUserById(userId);
     user.Groups  = getValidRecipients(user).ToList <TriageGroup>();
     user.Mailbox = new Mailbox()
     {
         UserFolders = new FolderDao(_cxn).getUserFolders(userId).ToList <domain.sm.Folder>()
     };
     return(user);
 }
Example #5
0
        public Addressee moveMessage(Message message, domain.sm.User user, Folder folder)
        {
            Addressee addressee = getAddressee(message.Id, user.Id);

            checkValidMove(addressee.Folder, folder);

            addressee.Folder   = folder;
            addressee.FolderId = folder.Id;
            if (!addressee.Folder.SystemFolder)
            {
                FolderDao folderDao = new FolderDao(_cxn);
                addressee.Folder = folderDao.getUserFolder(user.Id, folder.Id);
            }
            return(moveMessage(addressee));
        }
Example #6
0
        public IList <TriageGroup> getValidRecipients(domain.sm.User user)
        {
            if (user == null || user.Id <= 0)
            {
                throw new MdoException("Invalid user");
            }

            if (user.UserType == domain.sm.enums.UserTypeEnum.PATIENT)
            {
                return(getValidRecipientsForPatient(user.Id));
            }
            else if (user.UserType == domain.sm.enums.UserTypeEnum.CLINICIAN)
            {
                return(getValidRecipientsForProvider(user.Id));
            }
            else
            {
                throw new MdoException("Unexpected user type: " + Enum.GetName(typeof(domain.sm.enums.UserTypeEnum), user.UserType));
            }
        }
Example #7
0
        internal bool updateLastEmailNotification(domain.sm.User user)
        {
            // this function should attempt to update the user's last notification date and return true if successful
            // be sure to use the OPLOCK!!!
            try
            {
                OracleQuery query        = buildUpdateLastEmailNotificationQuery(user);
                nonQuery    update       = delegate() { return(query.Command.ExecuteNonQuery()); };
                Int32       rowsAffected = (Int32)_cxn.query(query, update);

                if (rowsAffected != 1)
                {
                    return(false);
                }
                user.Oplock++;
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Example #8
0
 internal bool shouldSend(domain.sm.User user)
 {
     if (String.IsNullOrEmpty(user.Email))
     {
         return(false);
     }
     if (user.EmailNotification == domain.sm.enums.EmailNotificationEnum.NONE)
     {
         return(false);
     }
     if (user.EmailNotification == domain.sm.enums.EmailNotificationEnum.ONE_DAILY && DateTime.Now.Subtract(user.LastNotification).TotalDays > 1)
     {
         return(new UserDao(_cxn).updateLastEmailNotification(user));
     }
     if (user.EmailNotification == domain.sm.enums.EmailNotificationEnum.EACH_MESSAGE || user.EmailNotification == domain.sm.enums.EmailNotificationEnum.ON_ASSIGNMENT)
     {
         return(new UserDao(_cxn).updateLastEmailNotification(user));
     }
     else
     {
         return(false);
     }
 }
Example #9
0
        internal IList <domain.sm.User> toTriageGroupMembers(IDataReader rdr)
        {
            IList <domain.sm.User> users = new List <domain.sm.User>();

            while (rdr.Read())
            {
                domain.sm.User user = new domain.sm.User();
                user.Id = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("USER_ID")));

                if (!rdr.IsDBNull(rdr.GetOrdinal("EMAIL_ADDRESS")))
                {
                    user.Email = rdr.GetString(rdr.GetOrdinal("EMAIL_ADDRESS"));
                }

                user.Oplock = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("OPLOCK")));

                int emailNoticeCode = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("EMAIL_NOTIFICATION")));
                if (Enum.IsDefined(typeof(domain.sm.enums.EmailNotificationEnum), emailNoticeCode))
                {
                    user.EmailNotification = (domain.sm.enums.EmailNotificationEnum)emailNoticeCode;
                }
                if (!rdr.IsDBNull(rdr.GetOrdinal("LAST_EMAIL_NOTIFICATION")))
                {
                    user.LastNotification = rdr.GetDateTime(rdr.GetOrdinal("LAST_EMAIL_NOTIFICATION"));
                }

                users.Add(user);
            }

            if (users.Count <= 0)
            {
                throw new MdoException("That triage group does not appear to have any members!");
            }

            return(users);
        }
Example #10
0
        // TODO - make sure we're setting the correct defaults for the User object
        internal domain.sm.User toUserFromDataReader(IDataReader rdr)
        {
            domain.sm.User user = new domain.sm.User();

            if (!rdr.Read())
            {
                throw new MdoException(MdoExceptionCode.DATA_NO_RECORD_FOR_ID);
            }

            user.Id = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("USER_ID")));
            user.FirstName = rdr.GetString(rdr.GetOrdinal("FIRST_NAME"));
            user.LastName = rdr.GetString(rdr.GetOrdinal("LAST_NAME"));
            int userType = Convert.ToInt32(rdr.GetString(rdr.GetOrdinal("USER_TYPE")));
            if (Enum.IsDefined(typeof(domain.sm.enums.UserTypeEnum), userType))
            {
                user.UserType = (domain.sm.enums.UserTypeEnum)userType;
            }
            int statusCode = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("STATUS")));
            if (Enum.IsDefined(typeof(domain.sm.enums.UserStatusEnum), statusCode))
            {
                user.Status = (domain.sm.enums.UserStatusEnum)statusCode;
            }

            if (!rdr.IsDBNull(rdr.GetOrdinal("EMAIL_ADDRESS")))
            {
                user.Email = rdr.GetString(rdr.GetOrdinal("EMAIL_ADDRESS"));
            }

            user.Oplock = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("OPLOCK")));
            user.Active = (rdr.GetDecimal(rdr.GetOrdinal("ACTIVE")) == 1);

            if (!rdr.IsDBNull(rdr.GetOrdinal("SSN")))
            {
                user.Ssn = rdr.GetString(rdr.GetOrdinal("SSN"));
            }
            if (!rdr.IsDBNull(rdr.GetOrdinal("STATION_NO")))
            {
                // TBD - should we map this?
                rdr.GetString(rdr.GetOrdinal("STATION_NO"));
            }
            if (!rdr.IsDBNull(rdr.GetOrdinal("DUZ")))
            {
                // TBD - should we map this
                rdr.GetString(rdr.GetOrdinal("DUZ"));
            }

            int emailNoticeCode = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("EMAIL_NOTIFICATION")));
            if (Enum.IsDefined(typeof(domain.sm.enums.EmailNotificationEnum), emailNoticeCode))
            {
                user.EmailNotification = (domain.sm.enums.EmailNotificationEnum)emailNoticeCode;
            }
            int messageFilterCode = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("DEFAULT_MESSAGE_FILTER")));
            if (Enum.IsDefined(typeof(domain.sm.enums.MessageFilterEnum), emailNoticeCode))
            {
                user.MessageFilter = (domain.sm.enums.MessageFilterEnum)messageFilterCode;
            }

            if (!rdr.IsDBNull(rdr.GetOrdinal("LAST_EMAIL_NOTIFICATION")))
            {
                user.LastNotification = rdr.GetDateTime(rdr.GetOrdinal("LAST_EMAIL_NOTIFICATION"));
            }
            return user;
        }
Example #11
0
        internal IList<domain.sm.User> toTriageGroupMembers(IDataReader rdr)
        {
            IList<domain.sm.User> users = new List<domain.sm.User>();

            while (rdr.Read())
            {
                domain.sm.User user = new domain.sm.User();
                user.Id = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("USER_ID")));

                if (!rdr.IsDBNull(rdr.GetOrdinal("EMAIL_ADDRESS")))
                {
                    user.Email = rdr.GetString(rdr.GetOrdinal("EMAIL_ADDRESS"));
                }

                user.Oplock = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("OPLOCK")));

                int emailNoticeCode = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("EMAIL_NOTIFICATION")));
                if (Enum.IsDefined(typeof(domain.sm.enums.EmailNotificationEnum), emailNoticeCode))
                {
                    user.EmailNotification = (domain.sm.enums.EmailNotificationEnum)emailNoticeCode;
                }
                if (!rdr.IsDBNull(rdr.GetOrdinal("LAST_EMAIL_NOTIFICATION")))
                {
                    user.LastNotification = rdr.GetDateTime(rdr.GetOrdinal("LAST_EMAIL_NOTIFICATION"));
                }

                users.Add(user);
            }

            if (users.Count <= 0)
            {
                throw new MdoException("That triage group does not appear to have any members!");
            }

            return users;
        }
Example #12
0
        // TODO - make sure we're setting the correct defaults for the User object
        internal domain.sm.User toUserFromDataReader(IDataReader rdr)
        {
            domain.sm.User user = new domain.sm.User();

            if (!rdr.Read())
            {
                throw new MdoException(MdoExceptionCode.DATA_NO_RECORD_FOR_ID);
            }

            user.Id        = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("USER_ID")));
            user.FirstName = rdr.GetString(rdr.GetOrdinal("FIRST_NAME"));
            user.LastName  = rdr.GetString(rdr.GetOrdinal("LAST_NAME"));
            int userType = Convert.ToInt32(rdr.GetString(rdr.GetOrdinal("USER_TYPE")));

            if (Enum.IsDefined(typeof(domain.sm.enums.UserTypeEnum), userType))
            {
                user.UserType = (domain.sm.enums.UserTypeEnum)userType;
            }
            int statusCode = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("STATUS")));

            if (Enum.IsDefined(typeof(domain.sm.enums.UserStatusEnum), statusCode))
            {
                user.Status = (domain.sm.enums.UserStatusEnum)statusCode;
            }

            if (!rdr.IsDBNull(rdr.GetOrdinal("EMAIL_ADDRESS")))
            {
                user.Email = rdr.GetString(rdr.GetOrdinal("EMAIL_ADDRESS"));
            }

            user.Oplock = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("OPLOCK")));
            user.Active = (rdr.GetDecimal(rdr.GetOrdinal("ACTIVE")) == 1);

            if (!rdr.IsDBNull(rdr.GetOrdinal("SSN")))
            {
                user.Ssn = rdr.GetString(rdr.GetOrdinal("SSN"));
            }
            if (!rdr.IsDBNull(rdr.GetOrdinal("STATION_NO")))
            {
                // TBD - should we map this?
                rdr.GetString(rdr.GetOrdinal("STATION_NO"));
            }
            if (!rdr.IsDBNull(rdr.GetOrdinal("DUZ")))
            {
                // TBD - should we map this
                rdr.GetString(rdr.GetOrdinal("DUZ"));
            }

            int emailNoticeCode = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("EMAIL_NOTIFICATION")));

            if (Enum.IsDefined(typeof(domain.sm.enums.EmailNotificationEnum), emailNoticeCode))
            {
                user.EmailNotification = (domain.sm.enums.EmailNotificationEnum)emailNoticeCode;
            }
            int messageFilterCode = Convert.ToInt32(rdr.GetDecimal(rdr.GetOrdinal("DEFAULT_MESSAGE_FILTER")));

            if (Enum.IsDefined(typeof(domain.sm.enums.MessageFilterEnum), emailNoticeCode))
            {
                user.MessageFilter = (domain.sm.enums.MessageFilterEnum)messageFilterCode;
            }

            if (!rdr.IsDBNull(rdr.GetOrdinal("LAST_EMAIL_NOTIFICATION")))
            {
                user.LastNotification = rdr.GetDateTime(rdr.GetOrdinal("LAST_EMAIL_NOTIFICATION"));
            }
            return(user);
        }