private bool Log()
        {
            //TOTO (cris): Add company chooser


            //return true;

            var task = Task.Run(async() => await ServerUpDown.LogIn(tbUserName.Text, tbPassword.Text));

            //try
            //{
            task.Wait();
            var asyncfunctionresult = task.Result;

            //}
            //catch { }

            if (CB.CloudUser.Current != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        private void Init()
        {
            incDT    = new DataTable();
            dbsDT    = new DataTable();
            newItems = new List <Item>();
            incItems = new Dictionary <string, Item>();
            dbsItems = new Dictionary <string, Item>();
            ServerUpDown.GetColumns();

            foreach (string s in ServerUpDown.Columns)
            {
                incDT.Columns.Add(s, typeof(String));
                dbsDT.Columns.Add(s, typeof(String));
            }


            InitializeComponent();

            foreach (string s in ServerUpDown.Columns)
            {
                cbSearchType.Items.Add(s);
            }

            cbSearchType.SelectedIndex = 0;

            dgvIncomming.DataSource = incDT;
            dgvDatabase.DataSource  = dbsDT;

            dgvDatabase.AutoGenerateColumns = true;
        }
        private void downloadToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ArrayList res;

            Debug.WriteLine("Thread #{0} is calling Load...", Thread.CurrentThread.ManagedThreadId);
            try
            {
                var task = Task.Run(async() => await ServerUpDown.Load());
                task.Wait();
                res = task.Result;
                Debug.WriteLine("Load has finished...");
            }
            catch { MessageBox.Show("An error occured when downloading from server."); return; }

            foreach (CloudObject item in res)
            {
                Debug.WriteLine("Loaded Item ID: " + item.ID);
                if (!dbsItems.ContainsKey(item.ID))
                {
                    Debug.WriteLine("Added Item ID: " + item.ID);
                    Item temp = new Item(item.Get <string>("Name"), item.Get <string>("Type"));
                    temp.CloudID = item.ID;
                    if (item.Get("User") != null)
                    {
                        temp.User = item.Get <string>("User");
                    }
                    if (item.Get("Quantity") != null)
                    {
                        temp.Quantity = item.Get <uint>("Quantity");
                    }
                    temp.OnServer = true;

                    dbsItems.Add(temp.CloudID, temp);

                    //for (int i = 0; i < ServerUpDown.Columns.Count; i++)
                    //{
                    //    temp =
                    //}
                }
                else
                {
                    Debug.WriteLine("Skipped Item ID: " + item.ID);
                }
            }

            PopulateTable();
        }
        private void btnSignUp_Click(object sender, EventArgs e)
        {
            _username = tbUserName.Text;
            _password = tbPassword.Text;
            _email    = tbEmail.Text;



            if (!CheckFields())
            {
                return;
            }

            try
            {
                CloudUser outuser;
                Debug.WriteLine("Thread #{0} is calling Signup...", Thread.CurrentThread.ManagedThreadId);
                try
                {
                    var task = Task.Run(async() => await ServerUpDown.SignUp(_username, _password, _email));
                    task.Wait();
                    outuser = task.Result;
                }
                catch { outuser = new CloudUser(); outuser.Username = "******"; }

                Debug.WriteLine("Signup has finished...");

                if (outuser.Username == "Exception")
                {
                    MessageBox.Show("Error has occured");
                }
                else
                {
                    MessageBox.Show("User created Successfully!");
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Unknonw Error has occured.");
                this.Close();
            }
        }
        private void Remove(DataTable grid, Dictionary <String, Item> items, List <int> delete, bool fromServer = false)
        {
            List <string> remKey = new List <string>();

            foreach (var i in delete)
            {
                remKey.Add(items.ToList()[i].Key);
            }

            if (fromServer)
            {
                ServerUpDown.Remove(remKey);
            }

            for (int i = 0; i < remKey.Count; i++)
            {
                items.Remove(remKey[i]);
                //grid.Rows[delete[i]].Delete();
                grid.Rows[0].Delete();
                grid.AcceptChanges();
            }
        }
 private void uploadToolStripMenuItem_Click(object sender, EventArgs e)
 {
     ServerUpDown.Save(dbsItems);
 }