示例#1
0
        public static int GetCountNotesFromDB()
        {
            if (OfflineMode)
            {
                return(-1);
            }
            MyDataBase.ConnectToDB();

            MyDataBase.ExecuteCommand("SELECT COUNT(idnote) FROM notes WHERE notes.iduser = "******";");

            if (!MyDataBase.rdr.HasRows)
            {
                return(0);
            }

            int x = 0;

            while (MyDataBase.rdr.Read())
            {
                x = Convert.ToInt32((long)MyDataBase.rdr[0]);
            }

            MyDataBase.rdr.Close();
            MyDataBase.CloseConnectToDB();

            return(x);
        }
示例#2
0
        public static bool Registration(string username, string password, DateTime birth, string email, byte[] avatar)
        {
            MyDataBase.ConnectToDB();

            MyDataBase.ExecuteCommand("SELECT * FROM users WHERE users.username = '******' OR users.email = '" + email + "'");

            if (MyDataBase.rdr.HasRows)
            {
                MessageBox.Show("This user already exist.");//Некрасиво тут содержать MessageBox, но всё же.
                return(false);
            }

            MyDataBase.rdr.Close();
            MyDataBase.AddWithValue("@avatar", avatar);
            MyDataBase.ExecuteCommand(
                "INSERT INTO `users` (`username`, `userpass`, `email`, `avatar`, `datebirth`)" +
                "VALUES ('" + username + "', '" + password + "', '" + email + "', @avatar, '"
                + birth.Year + "-"
                + birth.Month + "-"
                + birth.Day + "');");

            MyDataBase.rdr.Close();
            MyDataBase.CloseConnectToDB();

            return(true);
        }
示例#3
0
 private void mainwindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
 {
     if (Evennote.OfflineMode)
     {
         return;
     }
     if (Evennote.user != null && Evennote.user.online == true)
     {
         MyDataBase.ConnectToDB();
         MyDataBase.SetOfflineUser(Evennote.user.id);
         MyDataBase.CloseConnectToDB();
     }
 }
示例#4
0
        public static bool Authorization(string username, string password)
        {
            //Подключение к своей базе данных
            MyDataBase.ConnectToDB();

            //Проверяем совпадают ли имя и пароли
            MyDataBase.ExecuteCommand("SELECT * FROM users WHERE users.username = '******' AND users.userpass = '******'");

            //Проверка, нашли ли мы вообще такого пользователя в БД
            if (MyDataBase.rdr.HasRows == false)
            {
                //Надо сделать throwException //ай, потом..
                MyDataBase.rdr.Close();
                MyDataBase.CloseConnectToDB();
                return(false);
            }

            //Читаем данные
            while (MyDataBase.rdr.Read())
            {
                MySql.Data.Types.MySqlDateTime x = (MySql.Data.Types.MySqlDateTime)MyDataBase.rdr[5];
                DateTime tempDate = new DateTime(x.Year, x.Month, x.Day);

                //Сохраняем данные о себе
                user = new User(Convert.ToInt32(MyDataBase.rdr[0].ToString()),
                                MyDataBase.rdr[1].ToString(),
                                MyDataBase.rdr[3].ToString(),
                                MyDataBase.rdr[4] as byte[],
                                tempDate);
            }

            contextUser = user;

            MyDataBase.rdr.Close();

            //Пишем что мы онлайн в БД
            MyDataBase.SetOnlineUser(user.id);

            //Отключаемся от БД
            MyDataBase.CloseConnectToDB();

            return(true);
        }
示例#5
0
        private void logout_btn_Click(object sender, RoutedEventArgs e)
        {
            Notebook.notebook.RemoveRange(0, Notebook.notebook.Count);
            if (Evennote.OfflineMode)
            {
                (Application.Current.MainWindow as MainWindow).ChangePage("pages/login_page.xaml");
                System.IO.File.Delete(Evennote.ConfigFile);
                Evennote.OfflineMode = false;
                return;
            }

            Evennote.user.online = false;
            (Application.Current.MainWindow as MainWindow).ChangePage("pages/login_page.xaml");
            Evennote.AutoLogin = false;
            System.IO.File.Delete(Evennote.ConfigFile);
            MyDataBase.ConnectToDB();
            MyDataBase.ChangeOnlineStatus(Evennote.user.id);
            MyDataBase.CloseConnectToDB();
            Evennote.user = null;
        }
示例#6
0
        //Сравнивает даты локальной заметки и сохраненной на сервере
        public void RefreshNoteState()
        {
            if (Evennote.OfflineMode == true)
            {
                Backuped = -2;
                return;
            }

            MyDataBase.ConnectToDB();

            MyDataBase.ExecuteCommand("SELECT dateChanged FROM notes WHERE iduser = "******" AND title = '" + Title + "';");

            if (!MyDataBase.rdr.HasRows)
            {
                Backuped = -2;
                return;
            }

            while (MyDataBase.rdr.Read())
            {
                DateTime fromDB = new DateTime((long)MyDataBase.rdr[0]);

                if (DateTime.Compare(DateChanged, fromDB) > 0)//Когда на бд старая заметка, а у нас новая
                {
                    Backuped = -1;
                }
                else if (DateTime.Compare(DateChanged, fromDB) < 0)//Когда на бд новая заметка, а у нас старая
                {
                    Backuped = 1;
                }
                else
                {
                    Backuped = 0;
                }
            }

            MyDataBase.CloseConnectToDB();
        }
示例#7
0
        public static User GetUserData(string username)
        {
            User temp = null;

            //Подключение к своей базе данных
            MyDataBase.ConnectToDB();
            MyDataBase.ExecuteCommand("SELECT * FROM users WHERE users.username = "******"'" + username + "'");

            if (MyDataBase.rdr.HasRows == false)
            {
                return(null);
            }

            while (MyDataBase.rdr.Read())
            {
                MySql.Data.Types.MySqlDateTime x = (MySql.Data.Types.MySqlDateTime)MyDataBase.rdr[5];
                DateTime tempDate = new DateTime(x.Year, x.Month, x.Day);

                //Сохраняем данные о себе
                temp = new User(Convert.ToInt32(MyDataBase.rdr[0].ToString()),
                                MyDataBase.rdr[1].ToString(),
                                MyDataBase.rdr[3].ToString(),
                                MyDataBase.rdr[4] as byte[],
                                tempDate);

                if (MyDataBase.rdr[6].ToString().Equals("True"))
                {
                    temp.online = true;
                }
            }

            //Отключаемся от БД
            MyDataBase.rdr.Close();
            MyDataBase.CloseConnectToDB();

            return(temp);
        }
示例#8
0
        public static void SyncNotes()
        {
            if (OfflineMode)
            {
                return;
            }

            //Удаление заметок из бд и из системы.
            MyDataBase.ConnectToDB();

            string[] notes = Directory.GetFiles(DeleteDirectory);

            for (int i = 0; i < notes.Length; i++)
            {
                MyDataBase.ExecuteCommand("DELETE FROM `notes` WHERE `iduser`='" + Evennote.user.id + "' AND `title`='" + notes[i].Split('\\').Last().Split('.').First() + "';");
                //Разбиваем путь по слэшам, берем имя файла с расширением. Разюиваем имя файла и вытягиваем имя заметки.
                File.Delete(notes[i]);

                MyDataBase.rdr.Close();
            }

            MyDataBase.ExecuteCommand("SELECT idnote, title, note, dateCreate, dateChanged FROM notes WHERE notes.iduser = "******";");

            //написать проверки о наличии данных

            int         idnote = -1;
            List <Note> fromDB = new List <Note>();

            while (MyDataBase.rdr.Read())
            {
                Note buf = new Note();
                using (MemoryStream mem = new MemoryStream((byte[])MyDataBase.rdr[2]))
                {
                    TextRange textRange = new TextRange(
                        buf.Text.ContentStart,
                        buf.Text.ContentEnd);
                    textRange.Load(mem, DataFormats.XamlPackage);

                    buf.Id          = (int)MyDataBase.rdr[0];
                    buf.Title       = (string)MyDataBase.rdr[1];
                    buf.DateCreate  = new DateTime((long)MyDataBase.rdr[3]);
                    buf.DateChanged = new DateTime((long)MyDataBase.rdr[4]);

                    fromDB.Add(buf);
                }
            }
            MyDataBase.rdr.Close();

            Notebook.notebook.ForEach(delegate(Note x)  //коллекция локальных заметок
            {
                bool flag = true;
                foreach (Note y in fromDB) //коллекция заметок из бд
                {
                    if (y.Title == x.Title)
                    {
                        flag = false;

                        if (DateTime.Compare(x.DateChanged, y.DateChanged) < 0)
                        {
                            //Когда на бд новая заметка, а у нас старая

                            x.DateChanged = y.DateChanged;
                            x.DateCreate  = y.DateCreate;

                            x.Text = y.Text;

                            x.SaveToFile(String.Format("{0}{1}.note", Evennote.path, x.Title));

                            File.SetCreationTime(String.Format("{0}{1}.note", Evennote.path, x.Title), x.DateCreate);
                            File.SetLastWriteTime(String.Format("{0}{1}.note", Evennote.path, x.Title), x.DateChanged);

                            break;
                        }
                        else if (DateTime.Compare(x.DateChanged, y.DateChanged) > 0)
                        {
                            //Когда на бд старая заметка, а у нас новая

                            idnote = y.Id;

                            using (MemoryStream mem = new MemoryStream())
                            {
                                TextRange textRange = new TextRange(
                                    x.Text.ContentStart,
                                    x.Text.ContentEnd);
                                textRange.Save(mem, DataFormats.XamlPackage);

                                MyDataBase.AddWithValue("@notefile", mem.ToArray());
                                MyDataBase.ExecuteCommand("UPDATE notes SET note = @notefile, dateChanged = " + x.DateChanged.Ticks + " WHERE notes.idnote = " + idnote);
                            }
                            break;
                        }
                    }
                }

                //Добавляем новую заметку в БД
                if (flag)
                {
                    using (MemoryStream mem = new MemoryStream())
                    {
                        TextRange textRange = new TextRange(
                            x.Text.ContentStart,
                            x.Text.ContentEnd);
                        textRange.Save(mem, DataFormats.XamlPackage);

                        DateTime cR = x.DateCreate;
                        DateTime cH = x.DateChanged;

                        MyDataBase.AddWithValue("@notefile", mem.ToArray());
                        MyDataBase.ExecuteCommand("INSERT INTO `notes` (`iduser`, `title`, `note`, `dateCreate`, `dateChanged`) VALUES (" + user.id + ", '" + x.Title + "', @noteFile, " + cR.Ticks + ", " + cH.Ticks + ");");
                    }
                }
            });

            //Когда у нас нет локальных заметок, и есть заметки в БД.
            foreach (Note y in fromDB) //коллекция заметок из бд
            {
                bool flag = true;
                Notebook.notebook.ForEach(delegate(Note x)  //коллекция локальных заметок
                {
                    if (y.Title == x.Title)
                    {
                        flag = false;
                    }
                });

                if (flag)
                {
                    y.SaveToFile(String.Format("{0}{1}.note", Evennote.path, y.Title));
                    Notebook.notebook.Add(y);

                    File.SetCreationTime(String.Format("{0}{1}.note", Evennote.path, y.Title), y.DateCreate);
                    File.SetLastWriteTime(String.Format("{0}{1}.note", Evennote.path, y.Title), y.DateChanged);
                }
            }

            MyDataBase.rdr.Close();
            MyDataBase.CloseConnectToDB();

            (((Application.Current.MainWindow as MainWindow).mainframe.Content as menu_page).frame.Content as notes_page).SyncListView();
        }