Example #1
0
        /// <summary>
        /// Creates a SendPackageToMailboxResponse
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        private SendPackageToMailboxResponse createNewSendMessageToMailboxResponse(DeliveryResult result)
        {
            var sendMessageToMailboxResponse = new SendPackageToMailboxResponse();

            if (result != null)
            {
                sendMessageToMailboxResponse.Delivered   = result.Status[0].Delivered;
                sendMessageToMailboxResponse.RecipientId = result.Status[0].RecipientId;
                sendMessageToMailboxResponse.TransId     = result.TransId;
            }

            return(sendMessageToMailboxResponse);
        }
        /// <summary>
        /// Check status of a sent message.
        /// </summary>
        public SendPackageToMailboxResponse SendPackageToMailBox(SendPackageToMailboxRequest sendPackageToMailboxRequest, Guid requestId)
        {
            LogManager.LogTrace(string.Format("SE.GOV.MM.Integration.Package.DataLayer.Service.DeliveryMailboxService: incoming SendPackageToMailBox with RequestId: {0}", requestId));

            DeliveryMailboxClient        client = null;
            SendPackageToMailboxResponse result = null;

            try
            {
                //Call method.
                client = new DeliveryMailboxClient();
                result = client.SendPackageToMailbox(sendPackageToMailboxRequest);
            }
            catch (CommunicationException ce)
            {
                string errorMessage = string.Format("SE.GOV.MM.Integration.Package.DataLayer.Service.DeliveryMailboxService: Error sending package to DeliveryMailbox, RequestId: {0}", requestId);
                LogManager.Log(new Log.Log()
                {
                    EventId = EventId.CommunicationExceptionWithDeliveryMailbox, Exception = ce, Level = Level.Error, Message = errorMessage
                });
                throw ce;
            }
            catch (Exception ex)
            {
                string errorMessage = string.Format("SE.GOV.MM.Integration.Package.DataLayer.Service.DeliveryMailboxService: Error sending package to DeliveryMailbox, RequestId: {0}", requestId);
                LogManager.Log(new Log.Log()
                {
                    EventId = EventId.CommunicationExceptionWithDeliveryMailbox, Exception = ex, Level = Level.Error, Message = errorMessage
                });
                throw ex;
            }
            finally
            {
                if (client != null && client.State == CommunicationState.Faulted)
                {
                    client.Abort();
                    client.Close();
                }
                client = null;
            }

            LogManager.LogTrace(string.Format("SE.GOV.MM.Integration.Package.DataLayer.Service.DeliveryMailboxService: leaving SendPackageToMailBox with RequestId: {0}", requestId));
            return(result);
        }
Example #3
0
        private SendPackageToMailboxResponse SendPackageToMailboxV3(Mail mailItem, Mailbox box, Guid requestId)
        {
            LogManager.LogTrace(string.Format("SE.GOV.MM.Integration.DeliveryMailbox.BusinessLayer.BusinessManager: incoming SendPackageToMailboxV3 with RequestId: {0}", requestId));

            SendPackageToMailboxResponse result = null;

            if (validateMail(mailItem, requestId))
            {
                var secureDeliveryV3 = getSecureDeliveryV3(mailItem, requestId);

                //Create SignedDelivery and sign xmldocument.
                var signedDeliveryHandler = new SignedDeliveryHandler();
                var signedDeliveryV3      = signedDeliveryHandler.GetSignedDeliveryV3(secureDeliveryV3, ConfigHelper.SignDelivery, ConfigHelper.DefaultNamespaceV3, ConfigHelper.SigningCertificateSubjectName, requestId);
                //var signedDeliveryV3 = signedDeliveryHandler.GetSignedDeliveryV3(secureDeliveryV3, ConfigHelper.SignDelivery, ConfigHelper.DefaultNamespaceV3, mailItem.CertificationBySubjectName, requestId);


                //Create SealedDelivery from SignedDelivery
                var sealedDeliveryHandler = new SealedDeliveryHandler();
                var sealedDeliveryV3      = sealedDeliveryHandler.GetSealedDeliveryV3(signedDeliveryV3, ConfigHelper.SignDelivery, ConfigHelper.DefaultNamespaceV3, ConfigHelper.SigningCertificateSubjectName, requestId);
                //var sealedDeliveryV3 = sealedDeliveryHandler.GetSealedDeliveryV3(signedDeliveryV3, ConfigHelper.SignDelivery, ConfigHelper.DefaultNamespaceV3, mailItem.CertificationBySubjectName, requestId);


                //Call Recipients Mailbox operator and deliver message.
                var dataManager = new DataManager();
                //result = dataManager.SendPackageToMailboxV3(sealedDeliveryV3, box, ConfigHelper.SSLCertificate_FindByThumbprint, requestId);
                result = dataManager.SendPackageToMailboxV3(sealedDeliveryV3, box, mailItem.CertificationBySubjectName, requestId);
            }
            else
            {
                var failureMessage = string.Format("SE.GOV.MM.Integration.DeliveryMailbox.BusinessLayer.BusinessManager: Couldnt send message to: {0}. Didnt validate. RequestId: {1}", mailItem.Recipient.To, requestId);
                LogManager.Log(new Log.Log()
                {
                    EventId = EventId.Warning, Message = failureMessage, Level = Level.Warning
                });
            }


            LogManager.LogTrace(string.Format("SE.GOV.MM.Integration.DeliveryMailbox.BusinessLayer.BusinessManager: leaving SendPackageToMailboxV3 with RequestId: {0}", requestId));
            return(result);
        }
Example #4
0
        /// <summary>
        /// Validates incoming Mail object.
        /// Creates objects known to mailboxsupplier and signs the xml representation.
        /// Deliver to the recipient mailboxsupplier.
        /// </summary>
        /// <param name="mailItem"></param>
        /// <param name="box"></param>
        /// <param name="requestId"></param>
        /// <returns></returns>
        public SendPackageToMailboxResponse SendPackageToMailbox(Mail mailItem, Mailbox box, Guid requestId)
        {
            LogManager.LogTrace(string.Format("SE.GOV.MM.Integration.DeliveryMailbox.BusinessLayer.BusinessManager: incoming SendPackageToMailbox with RequestId: {0}", requestId));

            SendPackageToMailboxResponse result = null;

            if (validateMail(mailItem, requestId))
            {
                result = SendPackageToMailboxV3(mailItem, box, requestId);
            }
            else
            {
                var failureMessage = string.Format("SE.GOV.MM.Integration.DeliveryMailbox.BusinessLayer.BusinessManager: Couldnt send message to: {0}. Didnt validate. RequestId: {1}", mailItem.Recipient.To, requestId);
                LogManager.Log(new Log.Log()
                {
                    EventId = EventId.Warning, Message = failureMessage, Level = Level.Warning
                });
            }

            LogManager.LogTrace(string.Format("SE.GOV.MM.Integration.DeliveryMailbox.BusinessLayer.BusinessManager: leaving SendPackageToMailbox with RequestId: {0}", requestId));
            return(result);
        }
Example #5
0
        /// <summary>
        /// Sends a package to mailbox operator for the recipient and saves in database.
        /// </summary>
        /// <param name="mailItem"></param>
        /// <param name="mailBox"></param>
        /// <param name="requestId"></param>
        /// <returns></returns>
        public SendPackageResponse SendPackageToMailbox(Package.DataTransferObjects.BusinessObjects.Mail mailItem, MailBox mailBox, Guid requestId)
        {
            LogManager.LogTrace(string.Format("SE.GOV.MM.Integration.Package.BusinessLayer.BusinessManager: incoming SendPackageToMailbox with RequestId: {0}", requestId));

            SendPackageToMailboxResponse sendPackageToMailboxResponse = new SendPackageToMailboxResponse()
            {
                Delivered = false, TransId = null
            };
            PackageStatus packageStatus = PackageStatus.Failed;

            // Validate the mail
            if (ValidateMail(mailItem, requestId))
            {
                var dataManager = new DataLayer.DataManager();

                try
                {
                    //LOG to database
                    //  var packageHandler = new PackageHandler();
                    //Save Package in database
                    // var databaseId = packageHandler.SavePackage(mailItem.Recipient.To, mailItem.Sender, PackageStatus.Failed, requestId, mailBox.Name);
                    //Send Package to DeliveryMailboxService
                    sendPackageToMailboxResponse = dataManager.SendPackageToMailBox(mailItem, mailBox, requestId);
                    //Get status of sent Package
                    packageStatus = getPackageStatus(sendPackageToMailboxResponse.Delivered);
                    //Log to database result of sending a message.
                    // packageHandler.UpdatePackage(sendPackageToMailboxResponse.TransId, 0, packageStatus, requestId);
                    //Save statistics in database
                    DateTime?deliveredDate = null;
                    if (packageStatus == PackageStatus.Delivered)
                    {
                        deliveredDate = DateTime.Now;
                    }

                    //  packageHandler.SaveStatistics(RecipientType(mailItem.Recipient.To), deliveredDate, packageStatus.ToString(), requestId);
                }
                catch (Exception e)
                {
                    var errorMessage = string.Format("SE.GOV.MM.Integration.Package.BusinessLayer.BusinessManager: Exception thrown trying to send a Package to Mailbox. Exception: {0}, RequestId: {1}", e.ToString(), requestId);
                    LogManager.Log(new Log.Log()
                    {
                        EventId = EventId.GenerelizedException, Exception = e, Level = Level.Error, Message = errorMessage
                    });
                    throw e;
                }
            }
            else
            {
                var failureMessage = string.Format("SE.GOV.MM.Integration.Package.BusinessLayer.BusinessManager: Couldnt send message to: {0}. Didnt validate. RequestId: {1}", mailItem.Recipient.To, requestId);
                LogManager.Log(new Log.Log()
                {
                    EventId = EventId.Warning, Message = failureMessage, Level = Level.Warning
                });
            }

            var result = new SendPackageResponse()
            {
                DeliveryStatus = ConvertPackageStatusToPackageDeliveryStatus(packageStatus).ToString(), DistributionId = sendPackageToMailboxResponse.TransId, RequestId = requestId
            };

            LogManager.LogTrace(string.Format("SE.GOV.MM.Integration.Package.BusinessLayer.BusinessManager: leaving SendPackageToMailbox with RequestId: {0}", requestId));
            return(result);
        }