예제 #1
0
        /// <summary>
        /// Compacta os arquivos gerados.
        /// </summary>
        /// <param name="outputStream"></param>
        public void Compactar(System.IO.Stream outputStream)
        {
            // Adiciona os arquivos FML
            using (var zip = new Ionic.Utils.Zip.ZipFile(outputStream))
            {
                var errosGeracaoMarcacao = string.Empty;
                var buffer = new byte[1024];
                var read   = 0;

                for (var i = 0; i < _arquivos.Count; i++)
                {
                    // Verifica se o arquivo é um zip ou seja um arquivo GLO
                    if (Glass.Arquivos.VerificarArquivoZip(_arquivos[i]))
                    {
                        // Descompacta o arquivo zip
                        using (var ms = new System.IO.MemoryStream(_arquivos[i]))
                        {
                            var zip2 = new CalcEngine.Compression.ZipArchive(ms, System.IO.FileAccess.Read);
                            foreach (var file in zip2.Files)
                            {
                                using (var stream2 = file.OpenRead())
                                {
                                    var ms2 = new System.IO.MemoryStream((int)file.Length);

                                    while ((read = stream2.Read(buffer, 0, buffer.Length)) > 0)
                                    {
                                        ms2.Write(buffer, 0, read);
                                    }

                                    var fileName  = System.IO.Path.GetFileNameWithoutExtension(_nomes[i]);
                                    var directory = System.IO.Path.GetDirectoryName(file.Name);

                                    zip.AddFileStream(fileName + System.IO.Path.GetExtension(file.Name), directory, ms2);
                                }
                            }
                        }
                    }
                    else
                    {
                        zip.AddFileStream(_nomes[i].Replace("  ", "").Replace(" ", ""), "", new System.IO.MemoryStream(_arquivos[i]));
                    }
                }

                // Verifica se existe algum erro tratado no momento da geração do arquivo.
                if (_erros != null && _erros.Any(f => f.Value != null))
                {
                    // Monta um texto com todos os problemas ocorridos ao gerar o arquivo de mesa, ao final do método, o texto é salvo em um arquivo separado e é zipado junto com o ASC.
                    errosGeracaoMarcacao = string.Format("Situações com arquivos de mesa: </br></br>{0}",
                                                         string.Join("</br>", _erros.Where(f => f.Value != null).Select(f => string.Format("Etiqueta: {0} Erro: {1}.", f.Key, MensagemAlerta.FormatErrorMsg(null, f.Value)))));

                    zip.AddStringAsFile(errosGeracaoMarcacao, "Situações com arquivos de mesa.error", string.Empty);
                }

                zip.Save();
            }
        }
예제 #2
0
    protected void OnButtonDownloadAllInvoices_Click(object sender, EventArgs e)
    {
        string fileName = WebConfig.AbsoluteExportDirectory + "\\" + DateTime.Now.ToString("ddMMyyhhmmss") + "_invoices.zip";

        using (Ionic.Utils.Zip.ZipFile zip = new Ionic.Utils.Zip.ZipFile())
        {
            zip.AddDirectoryByName("Invoices");
            foreach (GridDataItem item in GridInvoiceFile.Items)
            {
                TableCell cell = item["FilePath"];
                if (!string.IsNullOrEmpty(cell.Text))
                {
                    string filePath = cell.Text;
                    if (File.Exists(filePath))
                    {
                        //string shortName = filePath.Substring(filePath.LastIndexOf("\\") + 1, filePath.Length - filePath.LastIndexOf('\\') - 1);
                        //string dirPath = filePath.Substring(0, filePath.Length - shortName.Length);
                        //zip.AddFile(filePath);
                        zip.AddFile(filePath, "Invoices");
                    }
                }
            }
            if(zip.Count >0)
            {
                zip.Save(fileName);
            }
        }
        if (File.Exists(fileName))
        {
            string originalFilename = "invoices.zip";
            FileStream liveStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);

            byte[] buffer = new byte[(int)liveStream.Length];
            liveStream.Read(buffer, 0, (int)liveStream.Length);
            liveStream.Close();

            Response.Clear();
            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Length", buffer.Length.ToString());
            Response.AddHeader("Content-Disposition", "attachment; filename=" + originalFilename);
            Response.BinaryWrite(buffer);
            Response.End();
        }
    }
예제 #3
0
        public string CheckSDMXObject(string id, string agency, string version, string type_structure)
        {
            // Retrive Logged user
            SDMX_Dataloader.Engine.Client client = null;
            try
            {
                client = HttpContext.Current.Session[UserDef.UserSessionKey] as SDMX_Dataloader.Engine.Client; if (client == null) throw new Exception("Session Expiried");
            }
            catch (Exception ex)
            {
                return JsonMessage.SessionExpired;
            }

            try
            {
                using (System.IO.MemoryStream memoryStream = DataSDMX.GetStreamSDMXObject(new SDMXIdentifier() { id = id, agencyid = agency, version = version }, (Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType)Enum.Parse(typeof(Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType), type_structure)))
                {
                    //byte[] bytesInStream = memoryStream.ToArray();
                    //memoryStream.Close();

                    //string filename = "File";
                    //filename = Server.MapPath(filename);

                    string fileZip = System.Web.HttpContext.Current.Server.MapPath(@"~\Temp\\File.zip");
                    System.IO.File.Delete(fileZip);
                    Ionic.Utils.Zip.ZipFile zip = new Ionic.Utils.Zip.ZipFile(fileZip);
                    zip.AddFileStream("structure.xml", string.Empty, memoryStream);
                    zip.Save();

                    //SendAttachment(bytesInStream, filename);
                    //SaveStreamToFile(filename, memoryStream);
                }

                return JsonMessage.EmptyJSON;
            }
            catch (Exception ex) {
                return JsonMessage.ErrorOccured;
            }
        }
예제 #4
0
        public void SaveDotSTATCodelistFile(ICodelistObject codelist)
        {
            CodelistExporter _codeExp = new CodelistExporter(codelist.Id, codelist);
            List<ISTAT.IO.Utility.FileGeneric> files = new List<ISTAT.IO.Utility.FileGeneric>();
            List<ContactRef> contacs = GetConfigContact();
            string ExportFileName;

            ExportFileName = "DotStatExport-" + codelist.Id + "_" + codelist.AgencyId + "_" + codelist.Version;

            _codeExp.CreateData(contacs);

            System.Xml.XmlDocument xDoc_code = _codeExp.XMLDoc;
            MemoryStream xmlStream_code = new MemoryStream();
            xDoc_code.Save(xmlStream_code);
            xmlStream_code.Flush();
            xmlStream_code.Position = 0;
            ISTAT.IO.Utility.FileGeneric file_code = new ISTAT.IO.Utility.FileGeneric();
            file_code.filename = _codeExp.Code.ToString() + ".xml";
            file_code.stream = xmlStream_code;
            files.Add(file_code);

            Stream streamCSV = CSVWriter.CreateStream(_codeExp.DataView);
            ISTAT.IO.Utility.FileGeneric file_csv = new ISTAT.IO.Utility.FileGeneric();
            file_csv.filename = _codeExp.DataFilename;
            file_csv.stream = streamCSV;
            files.Add(file_csv);

            string fileZip = System.Web.HttpContext.Current.Server.MapPath("OutputFiles" + "\\" + ExportFileName + ".zip");

            System.IO.File.Delete(fileZip);
            Ionic.Utils.Zip.ZipFile zip = new Ionic.Utils.Zip.ZipFile(fileZip);
            foreach (ISTAT.IO.Utility.FileGeneric file in files)
                zip.AddFileStream(file.filename, string.Empty, file.stream);
            zip.Save();

            SendAttachment(fileZip, ExportFileName + ".zip");
        }
예제 #5
0
        public void SaveDotSTATFile(ISdmxObjects sdmxObjects, DotStatExportType exportType)
        {
            string ExportFileName;

            ExportFileName = "DotStatExport-" + sdmxObjects.DataStructures.First().Id + "_" + sdmxObjects.DataStructures.First().AgencyId + "_" + sdmxObjects.DataStructures.First().Version;

            List<ISTAT.IO.Utility.FileGeneric> files = new List<ISTAT.IO.Utility.FileGeneric>();

            List<ContactRef> contacs = GetConfigContact();
            List<SecurityDef> securities = GetConfigSecurity();

            DSDExporter _dsdExp = new DSDExporter(sdmxObjects);

            switch (exportType)
            {
                case DotStatExportType.DSD:
                    if (_dsdExp.CreateData(
                        contacs,
                        securities,
                        true, false))
                    {
                        System.Xml.XmlDocument xDoc = _dsdExp.XMLDoc;

                        MemoryStream xmlStream = new MemoryStream();
                        xDoc.Save(xmlStream);

                        xmlStream.Flush();
                        xmlStream.Position = 0;

                        ISTAT.IO.Utility.FileGeneric file = new ISTAT.IO.Utility.FileGeneric();
                        file.filename = ExportFileName + ".xml";
                        file.stream = xmlStream;

                        files.Add(file);
                    }
                    break;
                case DotStatExportType.CODELIST:
                    if (_dsdExp.CreateData(
                        contacs,
                        securities,
                        true, false))
                    {
                        foreach (CodelistExporter _codeExp in _dsdExp.ExporterCodelists)
                        {
                            System.Xml.XmlDocument xDoc_code = _codeExp.XMLDoc;
                            MemoryStream xmlStream_code = new MemoryStream();
                            xDoc_code.Save(xmlStream_code);
                            xmlStream_code.Flush();
                            xmlStream_code.Position = 0;
                            ISTAT.IO.Utility.FileGeneric file_code = new ISTAT.IO.Utility.FileGeneric();
                            file_code.filename = _codeExp.Code.ToString() + ".xml";
                            file_code.stream = xmlStream_code;
                            files.Add(file_code);

                            Stream streamCSV = CSVWriter.CreateStream(_codeExp.DataView);
                            ISTAT.IO.Utility.FileGeneric file_csv = new ISTAT.IO.Utility.FileGeneric();
                            file_csv.filename = _codeExp.DataFilename;
                            file_csv.stream = streamCSV;
                            files.Add(file_csv);
                        }
                    }
                    break;
                case DotStatExportType.ALL:
                    if (_dsdExp.CreateData(
                        contacs,
                        securities,
                        true, false))
                    {
                        System.Xml.XmlDocument xDoc = _dsdExp.XMLDoc;

                        MemoryStream xmlStream = new MemoryStream();
                        xDoc.Save(xmlStream);

                        xmlStream.Flush();
                        xmlStream.Position = 0;

                        ISTAT.IO.Utility.FileGeneric file = new ISTAT.IO.Utility.FileGeneric();
                        file.filename = ExportFileName + ".xml";
                        file.stream = xmlStream;

                        files.Add(file);
                        foreach (CodelistExporter _codeExp in _dsdExp.ExporterCodelists)
                        {
                            System.Xml.XmlDocument xDoc_code = _codeExp.XMLDoc;
                            MemoryStream xmlStream_code = new MemoryStream();
                            xDoc_code.Save(xmlStream_code);
                            xmlStream_code.Flush();
                            xmlStream_code.Position = 0;
                            ISTAT.IO.Utility.FileGeneric file_code = new ISTAT.IO.Utility.FileGeneric();
                            file_code.filename = _codeExp.Code.ToString() + ".xml";
                            file_code.stream = xmlStream_code;
                            files.Add(file_code);

                            Stream streamCSV = CSVWriter.CreateStream(_codeExp.DataView);
                            ISTAT.IO.Utility.FileGeneric file_csv = new ISTAT.IO.Utility.FileGeneric();
                            file_csv.filename = _codeExp.DataFilename;
                            file_csv.stream = streamCSV;
                            files.Add(file_csv);
                        }
                    }
                    break;
            }

            string fileZip = System.Web.HttpContext.Current.Server.MapPath("OutputFiles" + "\\" + ExportFileName + ".zip");

            System.IO.File.Delete(fileZip);
            Ionic.Utils.Zip.ZipFile zip = new Ionic.Utils.Zip.ZipFile(fileZip);
            foreach (ISTAT.IO.Utility.FileGeneric file in files)
                zip.AddFileStream(file.filename, string.Empty, file.stream);
            zip.Save();

            SendAttachment(fileZip, ExportFileName + ".zip");

        }
예제 #6
0
        private void Atualiza(string arquivo)
        {
            if (!System.IO.Directory.Exists("C:\\Aliance.NET\\Versao\\Dll"))
            {
                System.IO.Directory.CreateDirectory("C:\\Aliance.NET\\Versao\\Dll");
            }

            //Verificar se existe arquivos .ali
            System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("c:\\aliance.net\\Versao\\Dll");
            foreach (System.IO.FileInfo file in dir.GetFiles("*.ali"))
            {
                if (file.Name.Substring(file.Name.LastIndexOf('.') + 1, 3).Trim().Equals("ali"))
                {
                    System.IO.File.Delete(file.DirectoryName + "\\" + file.Name);
                }
            }
            lblMsg.Items.Add("Fazendo Download Versão " + arquivo.Substring(0, arquivo.IndexOf('.')));


            // download
            FtpWebRequest req = (FtpWebRequest)WebRequest.Create(Properties.Settings.Default.servidorFTP + "/" + arquivo);

            req.Method      = WebRequestMethods.Ftp.DownloadFile;
            req.Credentials = new NetworkCredential(Properties.Settings.Default.loginFTP, Properties.Settings.Default.senhaFTP);
            req.UsePassive  = true;
            req.UseBinary   = true;
            req.KeepAlive   = true;


            // busca tamanho do arquivo
            FtpWebRequest ftpsize = (FtpWebRequest)WebRequest.Create(Properties.Settings.Default.servidorFTP + "/" + arquivo);

            ftpsize.Method      = WebRequestMethods.Ftp.GetFileSize;
            ftpsize.Credentials = new NetworkCredential(Properties.Settings.Default.loginFTP, Properties.Settings.Default.senhaFTP);
            ftpsize.UsePassive  = true;
            ftpsize.UseBinary   = true;
            ftpsize.KeepAlive   = true;
            FtpWebResponse respsize = (FtpWebResponse)ftpsize.GetResponse();


            FtpWebResponse resp = (FtpWebResponse)req.GetResponse();

            byte[] buffer = new byte[2048];
            if (!System.IO.Directory.Exists("c:\\aliance.net\\Versao\\Dll"))
            {
                System.IO.Directory.CreateDirectory("c:\\aliance.net\\Versao\\Dll");
            }
            System.IO.FileStream newFile        = new System.IO.FileStream("c:\\aliance.net\\Versao\\Dll\\" + arquivo, System.IO.FileMode.Create);
            System.IO.Stream     responseStream = resp.GetResponseStream();
            int readCount = responseStream.Read(buffer, 0, buffer.Length);

            progressBar1.Maximum = (int)respsize.ContentLength;
            progressBar1.Visible = (int)respsize.ContentLength == 0 ? false : true;
            while (readCount > 0)
            {
                progressBar1.Value = (int)newFile.Length;

                newFile.Write(buffer, 0, readCount);
                readCount = responseStream.Read(buffer, 0, buffer.Length);
            }
            lblMsg.Items.Add("Download efetuado com sucesso! ");
            newFile.Close();
            responseStream.Close();
            resp.Close();
            //Verificar se existe alguma instancia do Aliance Aberta
            foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName("Aliance.NET"))
            {
                p.Kill();
                p.WaitForExit();
            }
            //Descompactar arquivo
            using (Ionic.Utils.Zip.ZipFile zip = Ionic.Utils.Zip.ZipFile.Read("c:\\aliance.net\\Versao\\Dll\\" + arquivo))
            {
                zip.ExtractAll("c:\\aliance.net\\Versao\\Dll", true);
            }
            Properties.Settings.Default.versaoAliance = decimal.Parse(arquivo.Substring(0, arquivo.IndexOf('.')));
            Properties.Settings.Default.Save();
        }
예제 #7
0
        public string CreateExport(string agency, string id, string version, List<string> dimensions, List<string> attributes, string type_download)
        {
            // Retrive Logged user
            SDMX_Dataloader.Engine.Client client = null;
            try
            {
                client = HttpContext.Current.Session[UserDef.UserSessionKey] as SDMX_Dataloader.Engine.Client; if (client == null) throw new Exception("Session Expiried");
            }
            catch (Exception ex)
            {
                return JsonMessage.SessionExpired;
            }

            try
            {

                if (!UserDef.UserCan(client.LoggedUser, UserDef.ActionDef.DefaultProc))
                    return JsonMessage.GetError(Resources.Notification.err_action_denied);

                // Get Settings Properties
                ISTAT.EXPORT.Settings.ContactSettingsHandler configContact =
                   (ISTAT.EXPORT.Settings.ContactSettingsHandler)System.Configuration.ConfigurationManager.GetSection(
                       "ExportDotStatSettingsGroup/ContactSection");

                ISTAT.EXPORT.Settings.SecuritySettingsHandler configSecurity =
                   (ISTAT.EXPORT.Settings.SecuritySettingsHandler)System.Configuration.ConfigurationManager.GetSection(
                       "ExportDotStatSettingsGroup/SecuritySection");

                // Get the current user

                SDMXIdentifier sdmxIdentity = new SDMXIdentifier()
                {
                    agencyid = agency,
                    id = id,
                    version = version
                };

                string filenameDSD = sdmxIdentity.ToString();

                Org.Sdmxsource.Sdmx.Util.Objects.Container.SdmxObjectsImpl sdmxObjects = new Org.Sdmxsource.Sdmx.Util.Objects.Container.SdmxObjectsImpl();

                Org.Sdmxsource.Sdmx.Api.Model.Objects.DataStructure.IDataStructureObject dsd = DataSDMX.GetDSD(sdmxIdentity);

                sdmxObjects.AddDataStructure(dsd);

                foreach (Org.Sdmxsource.Sdmx.Api.Model.Objects.DataStructure.IDimension dim in dsd.DimensionList.Dimensions){
                    if (!dim.TimeDimension && dimensions.Contains(dim.Id) && dim.HasCodedRepresentation())
                    {
                        Org.Sdmxsource.Sdmx.Api.Model.Objects.Codelist.ICodelistObject codelist = DataSDMX.GetCodelist(new SDMXIdentifier()
                        {
                            agencyid = dim.Representation.Representation.MaintainableReference.AgencyId,
                            id = dim.Representation.Representation.MaintainableReference.MaintainableId,
                            version = dim.Representation.Representation.MaintainableReference.Version
                        });
                        sdmxObjects.AddCodelist(codelist);
                    }
                }

                foreach (Org.Sdmxsource.Sdmx.Api.Model.Objects.DataStructure.IAttributeObject att in dsd.Attributes){
                    if (attributes.Contains(att.Id) && att.HasCodedRepresentation())
                    {
                        Org.Sdmxsource.Sdmx.Api.Model.Objects.Codelist.ICodelistObject codelist=DataSDMX.GetCodelist(new SDMXIdentifier(){
                            agencyid = att.Representation.Representation.MaintainableReference.AgencyId,
                            id = att.Representation.Representation.MaintainableReference.MaintainableId,
                            version = att.Representation.Representation.MaintainableReference.Version
                        });
                        sdmxObjects.AddCodelist(codelist);
                    }
                }

                List<ISTAT.IO.Utility.FileGeneric> files = new List<ISTAT.IO.Utility.FileGeneric>();

                List<ContactRef> contacs = new List<ContactRef>();
                contacs.Add(new ContactRef()
                {
                    name = configContact.Name,
                    direction = configContact.Direction,
                    email = configContact.Email
                });

                List<SecurityDef> securities = new List<SecurityDef>();
                securities.Add(new SecurityDef()
                {
                    domain = configSecurity.Domain,
                    userGroup = configSecurity.UserGroup,
                });

                DSDExporter _dsdExp = new DSDExporter(sdmxObjects);

                #region Export DSD
                if (type_download == "dsd")
                {

                    if (_dsdExp.CreateData(
                        contacs,
                        securities,
                        true, false))
                    {
                        System.Xml.XmlDocument xDoc = _dsdExp.XMLDoc;

                        MemoryStream xmlStream = new MemoryStream();
                        xDoc.Save(xmlStream);

                        xmlStream.Flush();
                        xmlStream.Position = 0;

                        ISTAT.IO.Utility.FileGeneric file = new ISTAT.IO.Utility.FileGeneric();
                        file.filename = filenameDSD + ".xml";
                        file.stream = xmlStream;

                        files.Add(file);
                    }
                }
                #endregion
                #region Export Codelist
                if (type_download == "codelist")
                {

                    if (_dsdExp.CreateData(
                        contacs,
                        securities,
                        true, false))
                    {
                        foreach (CodelistExporter _codeExp in _dsdExp.ExporterCodelists)
                        {
                            System.Xml.XmlDocument xDoc_code = _codeExp.XMLDoc;
                            MemoryStream xmlStream_code = new MemoryStream();
                            xDoc_code.Save(xmlStream_code);
                            xmlStream_code.Flush();
                            xmlStream_code.Position = 0;
                            ISTAT.IO.Utility.FileGeneric file_code = new ISTAT.IO.Utility.FileGeneric();
                            file_code.filename = _codeExp.Code.ToString() + ".xml";
                            file_code.stream = xmlStream_code;
                            files.Add(file_code);

                            Stream streamCSV = CSVWriter.CreateStream(_codeExp.DataView);
                            ISTAT.IO.Utility.FileGeneric file_csv = new ISTAT.IO.Utility.FileGeneric();
                            file_csv.filename = _codeExp.DataFilename;
                            file_csv.stream = streamCSV;
                            files.Add(file_csv);
                        }
                    }
                }
                #endregion
                #region Export ALL
                if (type_download == "all")
                {

                    if (_dsdExp.CreateData(
                        contacs,
                        securities,
                        true, false))
                    {
                        System.Xml.XmlDocument xDoc = _dsdExp.XMLDoc;

                        MemoryStream xmlStream = new MemoryStream();
                        xDoc.Save(xmlStream);

                        xmlStream.Flush();
                        xmlStream.Position = 0;

                        ISTAT.IO.Utility.FileGeneric file = new ISTAT.IO.Utility.FileGeneric();
                        file.filename = filenameDSD + ".xml";
                        file.stream = xmlStream;

                        files.Add(file);
                        foreach (CodelistExporter _codeExp in _dsdExp.ExporterCodelists)
                        {
                            System.Xml.XmlDocument xDoc_code = _codeExp.XMLDoc;
                            MemoryStream xmlStream_code = new MemoryStream();
                            xDoc_code.Save(xmlStream_code);
                            xmlStream_code.Flush();
                            xmlStream_code.Position = 0;
                            ISTAT.IO.Utility.FileGeneric file_code = new ISTAT.IO.Utility.FileGeneric();
                            file_code.filename = _codeExp.Code.ToString() + ".xml";
                            file_code.stream = xmlStream_code;
                            files.Add(file_code);

                            Stream streamCSV = CSVWriter.CreateStream(_codeExp.DataView);
                            ISTAT.IO.Utility.FileGeneric file_csv = new ISTAT.IO.Utility.FileGeneric();
                            file_csv.filename = _codeExp.DataFilename;
                            file_csv.stream = streamCSV;
                            files.Add(file_csv);
                        }
                    }
                }
                #endregion

                string fileZip = System.Web.HttpContext.Current.Server.MapPath(@"~\Temp\\" + filenameDSD + ".zip");
                System.IO.File.Delete(fileZip);
                Ionic.Utils.Zip.ZipFile zip = new Ionic.Utils.Zip.ZipFile(fileZip);
                foreach (ISTAT.IO.Utility.FileGeneric file in files)
                    zip.AddFileStream(file.filename, string.Empty, file.stream);
                zip.Save();

                client.FileToDownload = fileZip;

                return JsonMessage.EmptyJSON;

            }
            catch (Exception ex)
            {

                Logger.Error(ex.Message);
                return JsonMessage.ErrorOccured;

            }
        }