using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Diagnostics;
using BazaZamowien.Classes;

namespace BazaZamowien
{
    public partial class FormBadVer : Form
    {
        private WebClient webClient;
        private bool isBusy = false;
        const string strUrl = "http://www.infocity.pl/baza_zamowien/Updater.exe";

        public FormBadVer()
        {
            InitializeComponent();
            
            webClient = new WebClient();
            webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string updater = Environment.CurrentDirectory + "\\Updater.exe";

           if (System.IO.File.Exists(updater))
            {
                startUpdater();
            }
            else
            {
                isBusy = true;
                webClient.DownloadFileAsync(new Uri(strUrl), Environment.CurrentDirectory + "\\Updater.exe");            
            }
        }

        private void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            isBusy = false;
                     
            if (e.Error == null)
            {
                startUpdater();
            }
            else
            {
                MessageBox.Show("Błąd aktualizacji oprogramowania: " + e.Error.Message, "Aktualizacja oprogramowania", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Close();
            }
        }

        private void startUpdater()
        {
            string updater = Environment.CurrentDirectory + "\\Updater.exe";

            Close();
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.Arguments = "2";
            startInfo.FileName = updater;

            try
            {
                Process.Start(startInfo);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void Extract(string zipFileName, string destinationPath)
        {
            Shell32.IShellDispatch4 sc = (Shell32.IShellDispatch4) new Shell32.ShellClass();
         //   Shell32.ShellClass sc = new Shell32.ShellClass();
            Shell32.Folder SrcFlder = sc.NameSpace(zipFileName);
            Shell32.Folder DestFlder = sc.NameSpace(destinationPath);
            Shell32.FolderItems items = SrcFlder.Items();
            DestFlder.CopyHere(items, 20);        
        }


    }
}