public static OutboundFileResendAudit SaveOutboundFileResendDetailsInDB(OutboundFileResendViewModel fileResendViewModel, string fileName, string archiveLocation, string targetLocation)
        {
            OutboundFileResendAudit outboundDetails = new OutboundFileResendAudit();

            foreach (var item in fileResendViewModel.resendSelectedArchiveFiles)
            {
                if (item.ToLower() == fileName.ToLower())
                {
                    outboundDetails.AccountId   = fileResendViewModel.accountId;
                    outboundDetails.AccountName = fileResendViewModel.accountName;
                    outboundDetails.DatasetId   = fileResendViewModel.datasetId;
                    string tempFileDate = item.Substring(0, item.LastIndexOf('_'));
                    tempFileDate = tempFileDate.Substring(tempFileDate.LastIndexOf('_') + 1);
                    tempFileDate = tempFileDate.Substring(0, 4) + "/" + tempFileDate.Substring(4, 2) + "/" + tempFileDate.Substring(6, 2);
                    string tempFileTime = item.Substring(item.LastIndexOf('_') + 1);
                    tempFileTime = tempFileTime.Substring(0, tempFileTime.LastIndexOf('.'));
                    //checking whether time part exist in the file name before substring
                    if (tempFileTime.Length == 8)
                    {
                        tempFileTime = tempFileTime.Substring(0, 2) + ":" + tempFileTime.Substring(3, 2) + ":" + tempFileTime.Substring(6, 2);
                        tempFileDate = tempFileDate + " " + tempFileTime;
                    }
                    else
                    {
                        tempFileDate = null;
                    }
                    DateTime checkFileDate;
                    if (DateTime.TryParse(tempFileDate, out checkFileDate))
                    {
                        outboundDetails.ArchivalDate = Convert.ToDateTime(tempFileDate);
                    }
                    else
                    {
                        outboundDetails.ArchivalDate = null;
                    }
                    outboundDetails.FileName         = item;
                    outboundDetails.ArchiveLocation  = archiveLocation;
                    outboundDetails.OutboundLocation = targetLocation;
                    outboundDetails.CreatedDate      = DateTime.Now;
                    outboundDetails.CreatedBy        = fileResendViewModel.createdBy;
                }
            }
            return(outboundDetails);
        }
        public static int CopyArchiveFiles(AppSettings appSettings, string HostName, int Port, string UserName, string Password, string PrivateKey, string TargetLocation, OutboundFileResendViewModel outboundFileResendViewModel, string interfaceType)
        {
            List <string>                  failedFiles         = new List <string>();
            OutboundFileResendAudit        record              = new OutboundFileResendAudit();
            List <OutboundFileResendAudit> outboundFileDALData = new List <OutboundFileResendAudit>();

            try
            {
                foreach (string filename in outboundFileResendViewModel.resendSelectedArchiveFiles)
                {
                    try
                    {
                        byte[] bytes = null;
                        string defaulSftpArchiveLoction = appSettings.Archival_Location["DefaultLocation"] + "/" + outboundFileResendViewModel.datasetId;
                        string Loactiontype             = appSettings.Archival_Location["Location"];
                        if (Loactiontype == "SFTP")
                        {
                            bytes = ReadFileFromSFTP(appSettings, defaulSftpArchiveLoction + "/" + filename);
                        }
                        else if (Loactiontype == "FTP")
                        {
                            bytes = ReadFileFromFTP(appSettings, defaulSftpArchiveLoction + "/" + filename);
                        }
                        else if (Loactiontype == "LOCAL NETWORK")
                        {
                            bytes = ImpersonationHelper.ReadLocalNetworkFile(appSettings.Archival_Location["Username"], appSettings.Archival_Location["Password"], @"//" + appSettings.Archival_Location["Hostname"] + defaulSftpArchiveLoction + "/" + filename);
                        }
                        bool fileCopied = false;
                        if (bytes != null)
                        {
                            if (interfaceType == "SFTP")
                            {
                                fileCopied = WriteFileToSFTP(HostName, Port, UserName, Cryptography.Decrypt(Password, PrivateKey), TargetLocation + "/" + filename, bytes);
                            }
                            else if (interfaceType == "FTP")
                            {
                                fileCopied = WriteFileToFTP(HostName, Port, UserName, Cryptography.Decrypt(Password, PrivateKey), TargetLocation + "/" + filename, bytes);
                            }
                            else if (interfaceType == "LOCAL NETWORK")
                            {
                                fileCopied = ImpersonationHelper.WriteLocalNetworkFile(UserName, Cryptography.Decrypt(Password, PrivateKey), @"//" + HostName + TargetLocation + "/" + filename, bytes);
                            }
                        }
                        if (fileCopied)
                        {
                            record = SaveOutboundFileResendDetailsInDB(outboundFileResendViewModel, filename, defaulSftpArchiveLoction, TargetLocation);
                            outboundFileDALData.Add(record);
                        }
                        else
                        {
                            failedFiles.Add(filename);
                        }
                    }
                    catch (Exception)
                    {
                        //for failed files
                        failedFiles.Add(filename);
                    }
                }
                if (outboundFileDALData.Count > 0)
                {
                    _outgestionFileResendDAL.CreateOutboundResendAudit(outboundFileDALData);
                }
            }
            catch (Exception e) {
            }
            return(failedFiles.Count);;
        }