예제 #1
0
        public List <MessageDispatchInfoContract> GetMsgDispatchesBetweenSenderReceiver(IRetrieveMessageRequest messageRequest)
        {
            ValidateAccessToken(messageRequest.UserCredentials);

            string username = messageRequest.Username;

            if (string.IsNullOrEmpty(username))
            {
                throw new ApplicationException("Username value passed is empty.");
            }

            User user = GetUserMatchingUsername(username);

            if (user == null)
            {
                throw new ApplicationException("Could not find a matching Username.");
            }

            string infotext = string.Format("Getting message messageDispatches between sender: {0} and receiver: {1}.",
                                            messageRequest.SenderEmailAddress,
                                            messageRequest.ReceiverEmailAddress);

            WriteInfoLog(infotext);

            IMessageDispatchRepository dispatchRepo      = GetMessageDispatchRepository();
            List <MessageDispatch>     messageDispatches = dispatchRepo.GetDispatchesBetweenSenderReceiver(messageRequest.SenderEmailAddress,
                                                                                                           messageRequest.ReceiverEmailAddress,
                                                                                                           messageRequest.MessageIdThreshold,
                                                                                                           messageRequest.NumberOfMessages);
            List <MessageDispatchInfoContract> messageDispatchInfos = CreateDispatchInfoList(messageDispatches, user.Id);

            return(messageDispatchInfos);
        }
        private void PersistMessagedispatch(MessageDispatch messageDispatch, IRepoTransaction repoTransaction)
        {
            IMessageDispatchRepository dispatchRepo = MessageDispatchRepoFactory.GetDispatchRepository(DatabaseOption.DatabaseEngine,
                                                                                                       DatabaseOption.DbConnectionString,
                                                                                                       repoTransaction);

            dispatchRepo.InsertDispatch(messageDispatch);
            WriteInfoLog("Message-Dispatch persisting was successful.");
        }
예제 #3
0
        private static void UpdateDispatch(MessageDispatch dispatch)
        {
            long dispatchId = dispatch != null ? dispatch.Id : 0L;

            WriteInfoLog(string.Format("Going to update dispatch (ID): {0}", dispatchId));

            IMessageDispatchRepository dispatchRepo = GetDispatchRepository();

            dispatchRepo.UpdateDispatch(dispatch);
            WriteInfoLog(string.Format("Dispatch-object: {0} was sucessfully updated.", dispatchId));
        }
예제 #4
0
        public static void UpdateDispatchAsReceived(long dispatchId, DateTime receivedDateTime)
        {
            WriteInfoLog(string.Format("Recieved dispatch update request for dispatch (id): {0}.", dispatchId));

            IMessageDispatchRepository dispatchRepo = GetDispatchRepository();
            MessageDispatch            dispatch     = dispatchRepo.GetDispatchMatchingId(dispatchId);

            if (dispatch != null)
            {
                WriteInfoLog(string.Format("Found Dispatch (ID): {0}", dispatchId));

                dispatch.MessageReceived     = true;
                dispatch.MessageReceivedTime = receivedDateTime;
                UpdateDispatch(dispatch);
            }
        }
예제 #5
0
        private long[] GetMessageIds(string receiverEmailAddress, ref List <MessageDispatch> messageDispatches)
        {
            IMessageDispatchRepository dispatchRepo = GetMessageDispatchRepository();

            messageDispatches = dispatchRepo.GetDispatchesNotReceivedMatchingEmail(receiverEmailAddress);

            if (messageDispatches == null ||
                messageDispatches.Count() == 0)
            {
                return(null);
            }

            long[] messageids = messageDispatches.Where(mt => mt.MessageId != null)
                                .Select(mt => mt.MessageId.Value)
                                .Distinct()
                                .ToArray();
            return(messageids);
        }