Beispiel #1
0
        async void ExportFiles(IList lstFiles)
        {
            try
            {
                int countFiles = 0;
                System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = null;

                var lstUpdate = new List <DebtorPaymentFileClient>();

                var qrFiles = lstFiles.Cast <DebtorPaymentFileClient>();

                foreach (var rec in qrFiles)
                {
#if !SILVERLIGHT
                    countFiles++;

                    if (folderBrowserDialog == null)
                    {
                        folderBrowserDialog = UtilDisplay.LoadFolderBrowserDialog;
                        var dialogResult = folderBrowserDialog.ShowDialog();
                        if (dialogResult != System.Windows.Forms.DialogResult.OK)
                        {
                            break;
                        }
                    }

                    var filepath = folderBrowserDialog.SelectedPath;

                    if (paymentFormatCache == null)
                    {
                        paymentFormatCache = api.CompanyEntity.GetCache(typeof(Uniconta.DataModel.DebtorPaymentFormat)) ?? await api.CompanyEntity.LoadCache(typeof(Uniconta.DataModel.DebtorPaymentFormat), api);
                    }

                    var paymentFormat = (DebtorPaymentFormatClient)paymentFormatCache.Get(rec.PaymentFormat);

                    if (rec._Filename.EndsWith(".zip"))
                    {
                        if (paymentFormat._ExportFormat == (byte)Uniconta.DataModel.DebtorPaymFormatType.SEPA)
                        {
                            Stream data = new MemoryStream(rec._Data);

                            ZipArchive archive = new ZipArchive(data);
                            foreach (ZipArchiveEntry entry in archive.Entries)
                            {
                                using (var stream = entry.Open())
                                {
                                    var filename = string.Concat(filepath, "\\", entry.FullName);
                                    using (var fileStream = new FileStream(filename, FileMode.Create, FileAccess.Write))
                                    {
                                        stream.CopyTo(fileStream);
                                    }
                                }
                            }
                        }
                        else
                        {
                            File.WriteAllBytes(string.Concat(filepath, @"\", rec._Filename), rec._Data);
                        }
                    }
                    else
                    {
                        File.WriteAllText(string.Concat(filepath, @"\", rec._Filename), Encoding.GetEncoding("iso-8859-1").GetString(rec._Data));
                    }

                    if (paymentFormat != null && (paymentFormat._ExportFormat == (byte)Uniconta.DataModel.DebtorPaymFormatType.SEPA || paymentFormat._ExportFormat == (byte)Uniconta.DataModel.DebtorPaymFormatType.Iceland))
                    {
                        rec.StatusInfo = string.Format("({0}) {1}\n{2}", Uniconta.DirectDebitPayment.Common.GetTimeStamp(), Uniconta.ClientTools.Localization.lookup("Exported"), rec._StatusInfo);
                        rec.Status     = AppEnums.DebtorPaymentStatus.ToString((int)DebtorPaymentStatus.Ok);
                        lstUpdate.Add(rec);
                    }
#endif
                }

                if (lstUpdate != null && lstUpdate.Count > 0)
                {
                    api.UpdateNoResponse(lstUpdate);
                }

                if (countFiles != 0)
                {
                    UnicontaMessageBox.Show(string.Format(Uniconta.ClientTools.Localization.lookup("TotalFilesExported"), countFiles), Uniconta.ClientTools.Localization.lookup("Message"));
                }
            }
            catch (Exception ex)
            {
                UnicontaMessageBox.Show(ex.Message, Uniconta.ClientTools.Localization.lookup("Exception"));
            }
        }