/// <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); }
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); }
/// <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); }
/// <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); }