コード例 #1
0
ファイル: WebServiceNFSe.cs プロジェクト: netopvh/Nfe_SGE
        public static void SalvarXMLMunicipios(string uf, string cidade, int codigomunicipio, string padrao, bool forcaAtualizacao)
        {
            try
            {
                if (uf != null)
                {
                    Municipio mun = null;
                    for (int i = 0; i < Propriedade.Municipios.Count; ++i)
                    {
                        if (Propriedade.Municipios[i].CodigoMunicipio == codigomunicipio)
                        {
                            mun = Propriedade.Municipios[i];
                            break;
                        }
                    }

                    if (padrao == PadroesNFSe.NaoIdentificado.ToString() && mun != null)
                    {
                        Propriedade.Municipios.Remove(mun);
                    }

                    if (padrao != PadroesNFSe.NaoIdentificado.ToString())
                    {
                        if (mun != null)
                        {
                            ///
                            /// é o mesmo padrão definido?
                            /// o parametro "forcaAtualizacao" é "true" somente quando vier da aba "Municipios definidos"
                            /// desde que o datagrid atualiza automaticamente o membro "padrao" da classe "Municipio" quando ele é alterado.
                            if (mun.PadraoStr == padrao && !forcaAtualizacao)
                            {
                                return;
                            }

                            mun.Padrao    = GetPadraoFromString(padrao);
                            mun.PadraoStr = padrao;
                        }
                        else
                        {
                            Propriedade.Municipios.Add(new Municipio(codigomunicipio, uf, cidade.Trim(), GetPadraoFromString(padrao)));
                        }
                    }
                }
                if (System.IO.File.Exists(Propriedade.NomeArqXMLMunicipios))
                {
                    ///
                    /// faz uma copia por segurança
                    if (System.IO.File.Exists(Propriedade.NomeArqXMLMunicipios + ".bck"))
                    {
                        System.IO.File.Delete(Propriedade.NomeArqXMLMunicipios + ".bck");
                    }
                    System.IO.File.Copy(Propriedade.NomeArqXMLMunicipios, Propriedade.NomeArqXMLMunicipios + ".bck");
                }

                /*
                 * <nfes_municipios>
                 *  <Registro ID="4125506" Nome="São José dos Pinais - PR" Padrao="GINFES" />
                 * </nfes_municipios>
                 */

                var      xml       = new XDocument(new XDeclaration("1.0", "utf-8", null));
                XElement elementos = new XElement("nfes_municipios");
                var      r         = (from ss in Propriedade.Municipios orderby ss.Nome select ss);
                foreach (Municipio item in r)//Propriedade.Municipios)
                {
                    elementos.Add(new XElement(NFeStrConstants.Registro,
                                               new XAttribute(TpcnResources.ID.ToString(), item.CodigoMunicipio.ToString()),
                                               new XAttribute(NFeStrConstants.Nome, item.Nome.Trim()),
                                               new XAttribute(NFeStrConstants.Padrao, item.PadraoStr)));
                }
                xml.Add(elementos);
                xml.Save(Propriedade.NomeArqXMLMunicipios);
            }
            catch (Exception ex)
            {
                //recupera a copia feita se houve erro na criacao do XML de municipios
                if (System.IO.File.Exists(Propriedade.NomeArqXMLMunicipios + ".bck"))
                {
                    Functions.Move(Propriedade.NomeArqXMLMunicipios + ".bck", Propriedade.NomeArqXMLMunicipios);
                }
                throw ex;
            }
        }