private async Task SendMessage(NotifyMessage content, CommunicationType communicationType)
        {
            var notificationsClient = new NotificationClient(_configuration.NotificationServiceApiKey);

            // Needs to be a dictionary<string,dynamic> for the client.....
            var personalisationDictionary = content.Personalisation.ToDictionary(x => x.Key, x => x.Value as dynamic);

            try
            {
                Logger.Info($"Sending communication request to Gov Notify");
                if (communicationType == CommunicationType.Email)
                {
                    var response = await notificationsClient.SendEmailAsync(content.To, content.Template, personalisationDictionary, content.Reference);
                }
                else if (communicationType == CommunicationType.Sms)
                {
                    var response = await notificationsClient.SendSmsAsync(content.To, content.Template, personalisationDictionary, content.Reference);
                }
            }
            catch (NotifyClientException notifyClientException)
            {
                Logger.Error(notifyClientException, $"Error sending communication {communicationType.ToString()} to Gov Notify with Gov.Notify Client");

                if (communicationType != CommunicationType.Sms || !SuppressSmsError(notifyClientException.Message))
                {
                    throw;
                }
            }
            catch (Exception exception)
            {
                Logger.Error(exception, $"Generic Error sending communication {communicationType.ToString()} to Gov Notify");
                throw;
            }
        }
示例#2
0
        public Task<GetTypeQueryResponseDto> Handle(GetTypeQuery request, CancellationToken cancellationToken)
        {
            CommunicationType type = _service.GetCommunicationType();

            return Task.FromResult(new GetTypeQueryResponseDto
            {
                Type = (int)type,
                Name = type.ToString()
            });
        }
示例#3
0
 public string this[string key]
 {
     get
     {
         if (StringComparer.InvariantCultureIgnoreCase.Compare(key, "priority") == 0)
         {
             return(Priority.ToString(CultureInfo.InvariantCulture));
         }
         if (StringComparer.InvariantCultureIgnoreCase.Compare(key, "MessageType") == 0)
         {
             return(MessageType.ToString());
         }
         if (StringComparer.InvariantCultureIgnoreCase.Compare(key, "CommunicationType") == 0)
         {
             return(CommunicationType.ToString());
         }
         if (StringComparer.InvariantCultureIgnoreCase.Compare(key, "RouteType") == 0)
         {
             return(RouteType.ToString());
         }
         if (StringComparer.InvariantCultureIgnoreCase.Compare(key, "RemoteBoundContext") == 0)
         {
             return(RemoteBoundedContext);
         }
         if (StringComparer.InvariantCultureIgnoreCase.Compare(key, "LocalBoundedContext") == 0)
         {
             return(LocalContext);
         }
         if (StringComparer.InvariantCultureIgnoreCase.Compare(key, "Exclusive") == 0)
         {
             return(Exclusive.ToString());
         }
         string value;
         m_Hints.TryGetValue(key, out value);
         return(value);
     }
     set
     {
         if (StringComparer.InvariantCultureIgnoreCase.Compare(key, "priority") == 0 ||
             StringComparer.InvariantCultureIgnoreCase.Compare(key, "MessageType") == 0 ||
             StringComparer.InvariantCultureIgnoreCase.Compare(key, "CommunicationType") == 0 ||
             StringComparer.InvariantCultureIgnoreCase.Compare(key, "RouteType") == 0 ||
             StringComparer.InvariantCultureIgnoreCase.Compare(key, "RemoteBoundContext") == 0 ||
             StringComparer.InvariantCultureIgnoreCase.Compare(key, "LocalBoundedContext") == 0 ||
             StringComparer.InvariantCultureIgnoreCase.Compare(key, "Exclusive") == 0)
         {
             throw new ArgumentException(key + " should be set with corresponding RoutingKey property", "key");
         }
         m_Hints[key] = value;
     }
 }
示例#4
0
        /// <summary>
        /// Devuelve el sobre soap del lote de Operaciones Seguros.
        /// </summary>
        /// <returns>Devuelve un string con el xml del sobre SOAP
        /// compuesto para el envío del mensaje de lote de agencias de viajes.</returns>
        public Envelope GetEnvelope()
        {
            Envelope envelope = new Envelope();

            envelope.Body.SuministroLRAgenciasViajes = new SuministroLRAgenciasViajes();

            envelope.Body.SuministroLRAgenciasViajes.Cabecera.TipoComunicacion = CommunicationType.ToString();

            envelope.Body.SuministroLRAgenciasViajes.Cabecera.Titular.NIF         = Titular.TaxIdentificationNumber;
            envelope.Body.SuministroLRAgenciasViajes.Cabecera.Titular.NombreRazon = Titular.PartyName;

            foreach (OPTributaria invoice in TravelAgencyOperations)
            {
                envelope.Body.SuministroLRAgenciasViajes.RegistroLRAgenciasViajes.Add(invoice.ToSII());
            }

            return(envelope);
        }
示例#5
0
        /// <summary>
        /// Devuelve el sobre soap del lote de facturas emitidas.
        /// </summary>
        /// <param name="skipErrors">Indica si hay que omitir las excepciones.</param>
        /// <returns>Sobre SOAP con lote de facturas recibidas.</returns>
        public Envelope GetEnvelope(bool skipErrors = false)
        {
            Envelope envelope = new Envelope();

            envelope.Body.SuministroLRFacturasRecibidas = new SuministroLRFacturasRecibidas();

            envelope.Body.SuministroLRFacturasRecibidas.Cabecera.TipoComunicacion = CommunicationType.ToString();

            envelope.Body.SuministroLRFacturasRecibidas.Cabecera.Titular.NIF         = Titular.TaxIdentificationNumber;
            envelope.Body.SuministroLRFacturasRecibidas.Cabecera.Titular.NombreRazon = Titular.PartyName;

            foreach (APInvoice invoice in APInvoices)
            {
                envelope.Body.SuministroLRFacturasRecibidas.RegistroLRFacturasRecibidas.Add(invoice.ToSII(false, skipErrors));
            }

            return(envelope);
        }
示例#6
0
        /// <summary>
        /// Devuelve el sobre soap del lote de Cobros en metálico.
        /// </summary>
        /// <returns>Devuelve un string con el xml del sobre SOAP
        /// compuesto para el envío del mensaje de lote de cobros en metálico.</returns>
        public Envelope GetEnvelope()
        {
            Envelope envelope = new Envelope();

            envelope.Body.SuministroLRCobrosMetalico = new SuministroLRCobrosMetalico();

            envelope.Body.SuministroLRCobrosMetalico.Cabecera.TipoComunicacion = CommunicationType.ToString();

            envelope.Body.SuministroLRCobrosMetalico.Cabecera.Titular.NIF         = Titular.TaxIdentificationNumber;
            envelope.Body.SuministroLRCobrosMetalico.Cabecera.Titular.NombreRazon = Titular.PartyName;

            foreach (OPTributaria invoice in CashReceipts)
            {
                envelope.Body.SuministroLRCobrosMetalico.RegistroLRCobrosMetalico.Add(invoice.ToSII());
            }

            return(envelope);
        }
示例#7
0
        /// <summary>
        /// Devuelve el sobre soap del lote de Bienes de Inversión (Activos).
        /// </summary>
        /// <returns></returns>
        public Envelope GetEnvelope()
        {
            Envelope envelope = new Envelope();

            envelope.Body.SuministroLRBienesInversion = new SuministroLRBienesInversion();

            envelope.Body.SuministroLRBienesInversion.Cabecera.TipoComunicacion = CommunicationType.ToString();

            envelope.Body.SuministroLRBienesInversion.Cabecera.Titular.NIF         = Titular.TaxIdentificationNumber;
            envelope.Body.SuministroLRBienesInversion.Cabecera.Titular.NombreRazon = Titular.PartyName;

            foreach (Asset invoice in Assets)
            {
                envelope.Body.SuministroLRBienesInversion.RegistroLRBienesInversion.Add(invoice.ToSII());
            }

            return(envelope);
        }
示例#8
0
        /// <summary>
        /// Devuelve el sobre soap del lote de Operaciones Seguros.
        /// </summary>
        /// <returns>Devuelve un string con el xml del sobre SOAP
        /// compuesto para el envío del mensaje de lote de operaciones de seguros.</returns>
        public Envelope GetEnvelope()
        {
            Envelope envelope = new Envelope();

            envelope.Body.SuministroLROperacionesSeguros = new SuministroLROperacionesSeguros();

            envelope.Body.SuministroLROperacionesSeguros.Cabecera.TipoComunicacion = CommunicationType.ToString();

            envelope.Body.SuministroLROperacionesSeguros.Cabecera.Titular.NIF         = Titular.TaxIdentificationNumber;
            envelope.Body.SuministroLROperacionesSeguros.Cabecera.Titular.NombreRazon = Titular.PartyName;

            foreach (OPTributaria invoice in Insurances)
            {
                envelope.Body.SuministroLROperacionesSeguros.RegistroLROperacionesSeguros.Add(invoice.ToSII());
            }

            return(envelope);
        }
示例#9
0
        /// <summary>
        /// Devuelve el sobre soap del lote de facturas emitidas.
        /// </summary>
        /// <param name="skipErrors">Indica si hay que omitir las excepciones.</param>
        /// <returns>Devuelve un string con el xml del sobre SOAP
        /// compuesto para el envío del mensaje de lote de facturas
        /// emitidas.</returns>
        public Envelope GetEnvelope(bool skipErrors = false)
        {
            Envelope envelope = new Envelope();

            envelope.Body.SuministroLRFacturasEmitidas = new SuministroLRFacturasEmitidas();

            envelope.Body.SuministroLRFacturasEmitidas.Cabecera.TipoComunicacion = CommunicationType.ToString();

            envelope.Body.SuministroLRFacturasEmitidas.Cabecera.Titular.NIF         = Titular.TaxIdentificationNumber;
            envelope.Body.SuministroLRFacturasEmitidas.Cabecera.Titular.NombreRazon = Titular.PartyName;

            foreach (ARInvoice invoice in ARInvoices)
            {
                if (invoice.InvoiceNumberLastItem != null && invoice.InvoiceType != InvoiceType.F4 && !skipErrors)
                {
                    throw new InvalidOperationException(
                              "InvoiceNumberLastItem only valid with InvoiceType.F4");
                }

                envelope.Body.SuministroLRFacturasEmitidas.RegistroLRFacturasEmitidas.Add(invoice.ToSII(skipErrors));
            }

            return(envelope);
        }
示例#10
0
        /// <summary>
        /// Devuelve el sobre soap del lote de Operaciones Intracomunitarias.
        /// </summary>
        /// <returns>Devuelve un string con el xml del sobre SOAP
        /// compuesto para el envío del mensaje de lote de facturas
        /// emitidas.</returns>
        public Envelope GetEnvelope()
        {
            Envelope envelope = new Envelope();

            envelope.Body.SuministroLRDetOperacionIntracomunitaria = new SuministroLRDetOperacionIntracomunitaria();

            envelope.Body.SuministroLRDetOperacionIntracomunitaria.Cabecera.TipoComunicacion = CommunicationType.ToString();

            envelope.Body.SuministroLRDetOperacionIntracomunitaria.Cabecera.Titular.NIF         = Titular.TaxIdentificationNumber;
            envelope.Body.SuministroLRDetOperacionIntracomunitaria.Cabecera.Titular.NombreRazon = Titular.PartyName;

            foreach (ITInvoice invoice in ITInvoices)
            {
                envelope.Body.SuministroLRDetOperacionIntracomunitaria.RegistroLRDetOperacionIntracomunitaria.Add(invoice.ToSII());
            }

            return(envelope);
        }
示例#11
0
 public string GetCommunicationType()
 {
     return(communicationType.ToString());
 }