示例#1
0
        public async Task <IEnumerable <NavMessage> > ReadMessages(string externalCompanyId)
        {
            var navMessagesList = new List <NavMessage>();

            try
            {
                var messages = await _altinnClient.GetMessages(externalCompanyId);

                foreach (var message in messages)
                {
                    var messageId   = message.MessageId;
                    var attachments = await _altinnClient.GetAttachments(externalCompanyId, messageId);

                    foreach (var attachment in attachments)
                    {
                        var xmlAttachment = await _altinnClient.GetAttachmentData(externalCompanyId, messageId, attachment.AttachmentId);

                        if (xmlAttachment != null)
                        {
                            var elementNamespace = xmlAttachment?.Root?.Name?.NamespaceName;

                            if (!string.Equals(elementNamespace, Sykmelding_Namespace))
                            {
                                _logger.LogInformation($"Message will be skipped.Namespace: {elementNamespace}");
                            }
                            else
                            {
                                var xmlMessage = _xmlSerializer.Deserialize <SykmeldingArbeidsgiver>(xmlAttachment.ToString());

                                var navMessage = new NavMessage
                                {
                                    Namespace                  = elementNamespace,
                                    MessageXml                 = xmlAttachment.ToString(),
                                    IntegrationType            = IntegrationType.Import,
                                    WorkState                  = WorkState.ReadyForProcessing,
                                    ExternalId                 = xmlMessage.sykmeldingId,
                                    ReporteeId                 = externalCompanyId,
                                    MesssageId                 = messageId,
                                    AttachmentId               = attachment.AttachmentId,
                                    BusinessOrganizationNumber = xmlMessage.virksomhetsnummer,
                                };
                                navMessagesList.Add(navMessage);
                            }
                        }
                        else
                        {
                            Debug.WriteLine("Attachment is not XML file");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Error connecting to Altinn", ex);
            }
            return(navMessagesList);
        }
示例#2
0
        private string GetQueryString(NavMessage message)
        {
            string qstr = null;

            if (message.QueryStringParams != null)
            {
                qstr = string.Concat(message.QueryStringParams.Select(x => x.Key + "=" + x.Value).ToList <string>().ToArray());
                qstr = "?" + qstr;
            }
            return(qstr);
        }
        private NavMessage CreateHrManagerMessage(string referenceId, string businessOrganizationNumber, object hrMananger, SykmeldingArbeidsgiver sm)
        {
            var sykmeldingPasient    = sm.sykmelding.pasient;
            var socialSecurityNumber = sykmeldingPasient.ident;

            //todo: check if this business is paying salary to the employee in the employer-period (arbeidsgiverperioden, first 16days)
            bool businessPayingSalaryInEmployerPeriod = true;
            //todo: Create a new "OppgiPersonalleder"/(Provide HR Manager)-message  and persist in database
            var provideHrManagerMessage = new OppgiPersonalleder_M()
            {
                Skjemainnhold = new Skjemainnhold()
                {
                    hendelseId     = sm.sykmeldingId,
                    naermesteLeder = new NaermesteLeder()
                    {
                    },                                         //map data from hrManager
                    organisasjonsnummer    = sm.virksomhetsnummer,
                    utbetalesLonn          = businessPayingSalaryInEmployerPeriod,
                    utbetalesLonnSpecified = true,
                    sykmeldt = new Sykmeldt()
                    {
                        sykmeldtFoedselsnummer = socialSecurityNumber,
                        sykmeldtNavn           = $"{sykmeldingPasient.navn.fornavn} {sykmeldingPasient.navn.mellomnavn} {sykmeldingPasient.navn.etternavn}",
                    }
                }
            };
            var messageXml = _serializer.Serialize(provideHrManagerMessage);

            var navHrManagerMessage = new NavMessage()
            {
                MessageXml                 = messageXml,
                Namespace                  = OppgiLeder_Namespace,
                IntegrationType            = IntegrationType.Export,
                WorkState                  = WorkState.ReadyforExport,
                ReferenceId                = referenceId,
                BusinessOrganizationNumber = businessOrganizationNumber
            };

            return(navHrManagerMessage);
        }
示例#4
0
        private void NavigateToPage(NavMessage message)
        {
            object viewObject      = message.ViewObject;
            object navigationState = message.NavigationStateParams;

            if ((viewObject != null) && (navigationState != null))
            {
                _MainFrame.NavigationService.Navigate(viewObject, navigationState);
                return;
            }
            else if (viewObject != null)
            {
                _MainFrame.NavigationService.Navigate(viewObject);
                return;
            }

            //Silverlight
            string queryStringParams = message.QueryStringParams == null ? "" : GetQueryString(message);
            string uri = string.Format("/Views/{0}.xaml{1}", message.PageName, queryStringParams);

            _MainFrame.NavigationService.Navigate(new Uri(uri, UriKind.Relative));
        }
示例#5
0
 static void RinexParserNewNavMessageEvent(object sender, NavMessage e)
 {
     sw1.Write(e.ToString());
 }