Exemplo n.º 1
0
        private bool CheckPeriod(SFTPkonto ftpAccount, List <string> okFileCodes, string fileCodeInFileName, Match match, RegisterInfo delregInfo)
        {
            var okPeriodFile = false;

            okPeriodFile = true;
            var periodInFileName = match.Groups[2].Value;

            if (!_portalService
                .HamtaGiltigaPerioderForDelregister(delregInfo.Id)
                .Contains(periodInFileName))
            {
                okPeriodFile = false;
            }
            return(okPeriodFile);
        }
Exemplo n.º 2
0
        private void CheckFilesInFolder(string folder)
        {
            _inCorrectFilenameList = new List <FileInfo>();
            var incorrectPeriodList   = new List <FileInfo>();
            var incorrectFileCodeList = new List <FileInfo>();

            _folderName = GetFolderNameFromPath(folder);
            //folderName equals sftpAccountName
            _ftpAccount = _portalService.HamtaFtpKontoByName(_folderName);

            //Check if registered ftpaccount before handling files
            if (_ftpAccount != null)
            {
                DirectoryInfo dir = new DirectoryInfo(folder);
                _filesInFolder = dir.GetFiles().OrderByDescending(p => p.CreationTime).ToList();

                if (_filesInFolder.Count > 0)
                {
                    //Check if account has any registered contactperson. Otherwise reject files and write to errorlog
                    var userEmails = _portalService.HamtaEpostadresserForSFTPKonto(_ftpAccount.Id);
                    if (userEmails.Any())
                    {
                        //Check files in folder
                        CheckFiles(folder, incorrectPeriodList, incorrectFileCodeList);
                        HandleIncorrectFilenameList(folder);
                    }
                    else
                    {
                        //No contactperson registered for account
                        NoRegisteredContactHandler(folder);
                    }
                }
            }
            else
            {
                NotRegisteredSFTPAccount(folder);
            }
        }
Exemplo n.º 3
0
        public void UploadSFTPFilesAndShowResults(List <FileInfo> fileList, List <ViewDataUploadFilesResult> resultList, SFTPkonto ftpAccount, int selectedRegisterId, string selectedUnitId, string selectedPeriod, List <RegisterInfo> registerList)
        {
            //Kolla vilket register filen/filerna hör till och skapa mapp om det behövs
            var slussmapp = registerList.Where(x => x.Id == selectedRegisterId).Select(x => x.Slussmapp).Single();
            var user      = _portalSosRepository.GetFirstUserForSFTPAccount(ftpAccount.Id);
            //Get orgcode
            var orgCode              = String.Empty;
            var orgtypeListForOrg    = _portalSosService.HamtaOrgtyperForOrganisation(ftpAccount.OrganisationsId);
            var orgtypeListForSubDir = _portalSosService.HamtaOrgtyperForDelregister(selectedRegisterId);

            //Compare organisations orgtypes with orgtypes for current subdir
            foreach (var subDirOrgtype in orgtypeListForSubDir)
            {
                foreach (var orgOrgtype in orgtypeListForOrg)
                {
                    if (subDirOrgtype.Typnamn == orgOrgtype.Typnamn)
                    {
                        if (orgOrgtype.Typnamn == "Kommun")
                        {
                            orgCode = _portalSosRepository.GetKommunkodForOrganisation(ftpAccount.OrganisationsId);
                        }
                        else if (orgOrgtype.Typnamn == "Landsting")
                        {
                            orgCode = _portalSosRepository.GetLandstingskodForOrganisation(ftpAccount.OrganisationsId);
                        }
                        else
                        {
                            orgCode = _portalSosRepository.GetInrapporteringskodForOrganisation(ftpAccount.OrganisationsId);
                        }
                    }
                }
            }

            //var fileName = fileList[0].Name;
            //var filkravList = _portalSosRepository.GetFileRequirementsAndExpectedFilesForSubDirectory(selectedRegisterId);

            //Hämta forvantadlevid beroende på vald period
            var forvantadLevId = _portalSosRepository.GetExpextedDeliveryIdForSubDirAndPeriod(selectedRegisterId, selectedPeriod);

            //var forvantadLevId = registerList.Where(x => x.Id == selectedRegisterId).Select(x => x.ForvantadLevransId).Single();
            StorageRoot = StorageRoot + slussmapp + "\\";
            String fullPath = Path.Combine(StorageRoot);

            Directory.CreateDirectory(fullPath);

            var orgenhetsId = 0;

            //Om leverans för stadsdelar/organisationsenheter, hämta organisationsenhetsid
            if (!String.IsNullOrWhiteSpace(selectedUnitId))
            {
                orgenhetsId = _portalSosRepository.GetOrganisationsenhetsId(selectedUnitId, ftpAccount.OrganisationsId);
            }

            var levId = _portalSosRepository.GetNewLeveransId(user.Id, user.Namn, ftpAccount.OrganisationsId, selectedRegisterId, orgenhetsId, forvantadLevId, "Levererad", ftpAccount.Id);
            var hash  = GetHashAddOn(orgCode, levId);

            var regId = _portalSosRepository.GetSubDirectoryById(selectedRegisterId).RegisterId;
            var reg   = _portalSosRepository.GetDirectoryById(regId);

            UploadWholeSFTPFile(fileList, resultList, hash, levId, selectedUnitId, reg.Kortnamn);

            //Om inga filer kunde sparas, rensa levid
            if (!resultList.Any())
            {
                _portalSosRepository.DeleteDelivery(levId);
            }
            else
            {
                //Om PAR-filer, skapa statusfil och ladda upp
                var registerId = _portalSosRepository.GetSubDirectoryById(selectedRegisterId).RegisterId;
                var register   = _portalSosRepository.GetDirectoryById(registerId);
                if (register.Kortnamn == "PAR")
                {
                    //Skapa statusfil
                    CreateAndUploadPARStatusFile(levId, resultList);
                }
                //Save copied files to database filelog
                foreach (var result in resultList)
                {
                    foreach (var itemFile in fileList)
                    {
                        if (result.name == itemFile.Name)
                        {
                            try
                            {
                                _portalSosRepository.SaveToFilelogg(ftpAccount.Kontonamn, itemFile.Name, result.sosName, result.leveransId, result.sequenceNumber);
                            }
                            catch (Exception e)
                            {
                                throw new ApplicationException("Kunde ej spara SFTPfil-info till databas. Konto: " + ftpAccount.Kontonamn + ", Filnamn: " + itemFile.Name + ", LeveransId: " + result.leveransId + ", sekvensnummer:" + result.sequenceNumber);
                            }
                        }
                    }
                }
            }
        }