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