updateAddressee() public method

public updateAddressee ( Addressee addressee ) : Addressee
addressee gov.va.medora.mdo.domain.sm.Addressee
return gov.va.medora.mdo.domain.sm.Addressee
Example #1
0
        public Message sendDraft(Message message)
        {
            if (message == null || message.Id <= 0)
            {
                throw new MdoException("Invalid message");
            }

            Message dbMessage = getMessageComplete(message.Id);
            if (dbMessage == null || dbMessage.Id <= 0)
            {
                throw new MdoException("No message found for that ID");
            }
            if (dbMessage.SentDate.Year > 1900)
            {
                throw new MdoException("This message has already been sent");
            }
            if (dbMessage.Addressees == null || dbMessage.Addressees.Count != 1)
            {
                throw new MdoException("Data integrity - message appears to be addressed to multiple recipients");
            }
            // set addressee properties for sender
            dbMessage.Addressees[0].Folder = new Folder() { Id = (Int32)domain.sm.enums.SystemFolderEnum.Sent, Name = Enum.GetName(typeof(domain.sm.enums.SystemFolderEnum), domain.sm.enums.SystemFolderEnum.Sent) };
            dbMessage.Addressees[0].FolderId = (Int32)domain.sm.enums.SystemFolderEnum.Sent;
            dbMessage.Addressees[0].Role = domain.sm.enums.AddresseeRoleEnum.SENDER;
            if (message.Addressees != null && message.Addressees[0] != null)
            {
                dbMessage.Addressees[0].Oplock = message.Addressees[0].Oplock;
            }

            dbMessage.SentDate = DateTime.Now;
            dbMessage.Oplock = message.Oplock; // need to copy this over because it came from the client
            // this function should really just update a DRAFT - not also try and update the message first
            //dbMessage.Body = message.Body;
            //dbMessage.Checksum = gov.va.medora.utils.StringUtils.getMD5Hash(message.Body);
            //if (message.MessageThread != null && message.MessageThread.MailGroup != null && message.MessageThread.MailGroup.Id > 0 && message.MessageThread.MailGroup.Id != dbMessage.MessageThread.MailGroup.Id)
            //{
            //    if (message.MessageThread.MessageCategoryType != dbMessage.MessageThread.MessageCategoryType)
            //    {
            //        dbMessage.MessageThread.MessageCategoryType = message.MessageThread.MessageCategoryType;
            //    }
            //    if (!String.IsNullOrEmpty(message.MessageThread.Subject) && !String.Equals(dbMessage.MessageThread.Subject, message.MessageThread.Subject))
            //    {
            //        dbMessage.MessageThread.Subject = message.MessageThread.Subject;
            //    }
            //    if (message.MessageThread.MailGroup != null && message.MessageThread.MailGroup.Id > 0 && dbMessage.MessageThread.MailGroup.Id != message.MessageThread.MailGroup.Id)
            //    {
            //        dbMessage.MessageThread.MailGroup.Id = message.MessageThread.MailGroup.Id;
            //    }
            //    dbMessage.MessageThread.Oplock = message.MessageThread.Oplock;
            //}

            message = prepareMessage(dbMessage);
            message.Addressees.RemoveAt(1); // the prepare message function adds the sender again - we already did that with the call to getMessageComplete. Kinda hokey...

            try
            {
                _cxn.beginTransaction();
                // since not trying to update message, nothing should change in thread
                //dbMessage.MessageThread = updateThread(dbMessage.MessageThread);
                message = updateMessage(dbMessage);
                AddresseeDao addrDao = new AddresseeDao(_cxn);
                addrDao.updateAddressee(dbMessage.Addressees[0]); // update folder for sender
                addrDao.createAddressees(message.Addressees.GetRange(1, message.Addressees.Count - 1), message.Id);
                _cxn.commitTransaction();
            }
            catch (Exception)
            {
                _cxn.rollbackTransaction();
                throw;
            }
            return message;
        }