private void recupereazaModificari()
        {
            this.utilizator = CUtile.GetUtilizatorISTOMA();
            this.masina     = new BMasina();

            Actualizari.ActualizariSoapClient act = new Actualizari.ActualizariSoapClient();

            this.lModificariDisponibile   = act.GetDescriereVersiuneDisponibila(this.utilizator.Item1, this.utilizator.Item2, CUtile.getCheieLicenta(), masina.Id);
            this.lExistaUpgradeDisponibil = act.ExistaActualizareDisponibila(this.utilizator.Item1, this.utilizator.Item2, CUtile.getCheieLicenta(), masina.Id);
            act.Close();
        }
        private void actualizeazaAplicatia()
        {
            this.lActiune = BMultiLingv.GetById(BMultiLingv.EnumDictionar.recuperareaInfoReferitoaeLaVersiuneaActuala, this.lTipAplicatie);// "Recuperarea informațiilor referitoare la versiunea actuală";
            this.bwServer.ReportProgress(10);

            //Descarcam elementele necesare
            this.utilizator = CUtile.GetUtilizatorISTOMA();
            this.masina     = new BMasina();

            string idMasina = masina.Id;

            this.lActiune = BMultiLingv.GetById(BMultiLingv.EnumDictionar.conectareLaServer, this.lTipAplicatie);// "Conectare la server";
            this.bwServer.ReportProgress(20);

            Actualizari.ActualizariSoapClient act = new Actualizari.ActualizariSoapClient();
            byte[] arhiva   = act.GetVersiuneaUrmatoare(this.utilizator.Item1, this.utilizator.Item2, CUtile.getCheieLicenta(), idMasina);
            string versiune = string.Empty;

            this.lAreDreptUpgrade = arhiva != null;

            if (this.lAreDreptUpgrade)
            {
                this.lActiune = BMultiLingv.GetById(BMultiLingv.EnumDictionar.recuperareaNoilorFunctionalitati, this.lTipAplicatie);//"Recuperarea noilor funcționalități";
                this.bwServer.ReportProgress(40);

                string folderActual = CUtile.GetLocatieAplicatie();

                //Incarcam arhiva in memorie
                using (MemoryStream arhivaMemorie = new MemoryStream(arhiva))
                {
                    List <Ionic.Zip.ZipEntry> listaSQL     = new List <Ionic.Zip.ZipEntry>();
                    List <Ionic.Zip.ZipEntry> listaFisiere = new List <Ionic.Zip.ZipEntry>();
                    bool upgradeML = false;
                    //Cream arhiva
                    using (Ionic.Zip.ZipFile fisierZip = Ionic.Zip.ZipFile.Read(arhivaMemorie))
                    {
                        foreach (Ionic.Zip.ZipEntry intrare in fisierZip)
                        {
                            if (intrare.FileName.EndsWith(".sql"))
                            {
                                //Fisier de executat SQL
                                listaSQL.Add(intrare);
                            }
                            else
                            {
                                //Fisier de copiat
                                if (intrare.FileName.Contains("upgradeMultiLingv"))
                                {
                                    upgradeML = true;
                                }
                                else
                                {
                                    if (intrare.FileName.Contains(".vrs"))
                                    {
                                        versiune = intrare.FileName.Substring(0, intrare.FileName.IndexOf(".vrs"));
                                    }
                                    else
                                    {
                                        listaFisiere.Add(intrare);
                                    }
                                }
                            }
                        }
                    }

                    if (!string.IsNullOrEmpty(versiune))
                    {
                        string versiuneBDDExistenta = CUtile.getUltimaVersiuneBDD();

                        if (string.IsNullOrEmpty(versiuneBDDExistenta))
                        {
                            versiuneBDDExistenta = "1";
                        }

                        if (!versiune.Equals(versiuneBDDExistenta) && Convert.ToInt32(versiune) > Convert.ToInt32(versiuneBDDExistenta))
                        {
                            this.lActiune = BMultiLingv.GetById(BMultiLingv.EnumDictionar.modificareaStructuriiDeDate, this.lTipAplicatie);//"Modificarea structurii de date";
                            this.bwServer.ReportProgress(80);

                            foreach (Ionic.Zip.ZipEntry executaSQL in listaSQL)
                            {
                                //Executam scripturile
                                System.IO.StreamReader reader = new StreamReader(executaSQL.OpenReader());

                                CUtile.executaFisierSQL(reader.ReadToEnd(), "-$$$-");
                            }

                            //Facem update la versiunea BDD
                            CUtile.UpdateVersiuneBDD(versiune);

                            if (upgradeML)
                            {
                                //rescriem tabela de multi lingv
                                byte[] fisierMultiLingv = null;

                                iStoma.VerificareSoapClient servVerif = new iStoma.VerificareSoapClient();
                                fisierMultiLingv = servVerif.IncarcaMultiLingv(this.utilizator.Item1, this.utilizator.Item2);

                                CUtile.updateMultiLingv(fisierMultiLingv);
                            }
                        }
                    }

                    this.lActiune = BMultiLingv.GetById(BMultiLingv.EnumDictionar.modificareaLibrariilorIStoma, this.lTipAplicatie);//"Modificarea librariilor iStoma";
                    this.bwServer.ReportProgress(100);

                    foreach (Ionic.Zip.ZipEntry fisierCopiere in listaFisiere)
                    {
                        //Inlocuim fisierele
                        //Stergem fisierele care exista deja
                        if (File.Exists(Path.Combine(folderActual, fisierCopiere.FileName)))
                        {
                            File.Delete(Path.Combine(folderActual, fisierCopiere.FileName));
                        }

                        fisierCopiere.Extract(folderActual, Ionic.Zip.ExtractExistingFileAction.OverwriteSilently);
                    }

                    //Anuntam serverul ca actualizarea a fost efectuata
                    act.SeteazaNouaVersiune(this.utilizator.Item1, this.utilizator.Item2, CUtile.getCheieLicenta(), idMasina);
                    act.Close();

                    this.lActualizareEfectuata = true;
                }
            }
            else
            {
                this.lActualizareEfectuata = true;
            }
        }