public int CreateReminder(DataManager dbMgr, User user, MessageParser msgPar, UserManager userMgr) { // TODO: add exception handling string strPattern; DateTime dt; try { strPattern = "yyyy-MM-dd HH:mm:ss"; dt = DateTime.ParseExact(msgPar.ServerTimeString, strPattern, null); } catch (Exception e) { throw e; } Reminder rmdr = null; User toUser; if (msgPar.ToUser.ToLower().Trim() == @"me" || msgPar.ToUser.ToLower().Trim() == user.Username.ToLower().Trim()) { toUser = userMgr.GetUserByID(user.UserID); // this saves precious calls to the db } else { toUser = dbMgr.GetUserByUsername(msgPar.ToUser); } //toUser = dbMgr.GetUser(msgPar.ToUser); if (toUser == null) { throw new ReminderException("(" + msgPar.ToUser + ") is not a valid RemindMe username."); } if (msgPar.ToUser.ToLower().Trim() == @"me" || msgPar.ToUser.ToLower().Trim() == user.Username.ToLower().Trim()) { //if (reminderMgr.UserReminderCount(user.UserID) >= user.MaxNumReminders) if (dbMgr.GetUserReminderCount(user.UserID) >= user.MaxNumReminders) { ResourceManager rm = new ResourceManager("server.botMsgs", this.GetType().Assembly); string strMsg = rm.GetString("max_reminder_error"); strMsg = strMsg.Replace("%d", user.MaxNumReminders.ToString()); throw new ReminderException(strMsg); } // create a reminder for the user rmdr = new Reminder(user.UserID, user.UserID, msgPar.MessageText, dt, msgPar.UserTimeString); } else if (msgPar.ToUser.Trim().Length >= 3) { // create a person-to-person reminder // TODO: somewhere here you would do a check for commas to check for // something like: remind amy,bob,frank in 10 minutes to meet in conference room b // TODO: Change this to user.UserID if (toUser.Buddies.IndexOf(user.Username.ToLower()) < 0 && user.Class != UserClassType.ADMIN) { throw new ReminderException(@"This user has not added you to his or her allow list to receive reminders."); } // see if the touser has any ptp reminders left if (toUser.MaxNumPTPReminders <= dbMgr.GetUserPTPReminderCount(toUser.UserID)) { throw new ReminderException(@"That user's reminder inbox is full!"); } rmdr = new Reminder(toUser.UserID, user.UserID, msgPar.MessageText, dt, msgPar.UserTimeString); } if (rmdr == null) { throw new Exception(@"ReminderManager.CreateReminder(): rmdr = null"); } // pass it a reference, dbMgr will assign the ID int wId = dbMgr.CreateReminder(ref rmdr, toUser.BotName); if (wId == 0) { throw new ReminderException(@"There has been an internal error. Please report error code 0x19 to [email protected]"); } if (m_strBotName == toUser.BotName) { reminders.Add(rmdr); } return(wId); }