Example #1
0
        public async Task LastOppDataleveranse(DataleveranseXmlGreier dataDeliveryCore, IDataFile metadata, DataFiles files,
                                               string username)
        {
            if (metadata == null)
            {
                throw new Exception("Kan ikke lagre en tom leveranse.");
            }

            var dataDeliveryXml = metadata.ReadXml();

            dataDeliveryCore.ValidateDataDelivery(dataDeliveryXml);
            var dataleveranse = DataleveranseXmlGreier.ParseDataDelivery(dataDeliveryXml);

            files.CheckDocuments(dataleveranse);
            DataleveranseXmlGreier.ValidateDataDeliveryContent(dataleveranse);

            OvertaForForrigeVersjon(dataleveranse);
            ImporterDataleveranse(dataleveranse, username);

            var metadataFile = new File
            {
                Id          = dataleveranse.Id.Replace("DataDeliveries/", ""),
                FileName    = metadata.Filename,
                ContentType = metadata.ContentType,
                Content     = metadata.OpenReadStream()
            };

            await LagreFil(metadataFile);

            foreach (var file in files.Values)
            {
                var fileName = file.Filename;
                var document = dataleveranse.Metadata.FindDocument(fileName);
                if (document == null)
                {
                    throw new DataDeliveryParseException("Finner ingen referanse i datafilen til vedlegg '" + fileName +
                                                         "'.");
                }

                var docFile = new File
                {
                    Id          = document.Guid.ToString(),
                    FileName    = fileName,
                    ContentType = file.ContentType,
                    Content     = file.OpenReadStream()
                };
                await LagreFil(docFile);
            }

            SaveChanges();
        }