예제 #1
0
        public void LookForOutboxUpdates()
        {
            while (true)
            {
                form1.Outbox_update_mutex.WaitOne();

                if (form1.Outbox_update_needed)
                {
                    form1.Outbox_update_needed = false;
                    form1.Outbox_update_mutex.ReleaseMutex();

                    BeginInvoke(new SetTextDeleg(setlabel4state), new object[] { "обновляется" });
                    using (CourseDB db = new CourseDB())
                    {
                        string sqlQuery = "SELECT * FROM outbox WHERE sender = '" + this.userLogin + "';";
                        BeginInvoke(new UpdateDataGridDeleg(UpdateDataGrid1), new object[] { db.outbox.SqlQuery(sqlQuery).ToList() });
                    }
                }
                else
                {
                    form1.Outbox_update_mutex.ReleaseMutex();
                }

                Thread.Sleep(1000);
                BeginInvoke(new SetTextDeleg(setlabel4state), new object[] { "ожидание" });

                if (UpdateThread_to_close)
                {
                    break;
                }
            }
        }
예제 #2
0
        public void LookForInboxUpdates()
        {
            while (true)
            {
                form1.Inbox_update_mutex.WaitOne();
                if (form1.Inbox_update_needed)
                {
                    form1.Inbox_update_needed = false;
                    form1.Inbox_update_mutex.ReleaseMutex();
                    BeginInvoke(new SetTextDeleg(setlabel4state), new object[] { "обновляется" });
                    using (CourseDB db = new CourseDB())
                    {
                        BeginInvoke(new UpdateDataGridDeleg(UpdateDataGrid1), new object[] { db.inbox.ToList() });
                    }
                }
                else
                {
                    form1.Inbox_update_mutex.ReleaseMutex();
                }

                Thread.Sleep(1000);
                BeginInvoke(new SetTextDeleg(setlabel4state), new object[] { "ожидание" });

                if (UpdateThread_to_close)
                {
                    break;
                }
            }
        }
예제 #3
0
 public void Show_Inbox()
 {
     using (CourseDB db = new CourseDB())
     {
         dataGridView1.DataSource = db.inbox.ToList();
     }
     dataGridView1.Columns[4].Visible = false;
     dataGridView1.Columns[6].Visible = false;
     dataGridView1.Columns[0].Width   = 20;
     dataGridView1.Columns[1].Width   = 50;
     dataGridView1.Columns[2].Width   = 50;
     dataGridView1.Columns[3].Width   = 80;
     dataGridView1.Columns[5].Width   = 90;
     dataGridView1.Columns[7].Width   = 70;
     foreach (DataGridViewRow row in dataGridView1.Rows)
     {
         if (row.Cells[5].Value.ToString() == "Принято")
         {
             row.DefaultCellStyle.BackColor = Color.AliceBlue;
         }
         if (row.Cells[5].Value.ToString() == "Прочитано")
         {
             row.DefaultCellStyle.BackColor = Color.LightCyan;
         }
     }
     dataGridView1.Update();
     dataGridView1.Refresh();
 }
예제 #4
0
        public void Show_Outbox()
        {
            using (CourseDB db = new CourseDB())
            {
                string sqlQuery = "SELECT * FROM outbox WHERE sender = '" + this.userLogin + "';";
                dataGridView1.DataSource = db.outbox.SqlQuery(sqlQuery).ToList();
            }

            dataGridView1.Columns[4].Visible    = false;
            dataGridView1.Columns[6].Visible    = false;
            dataGridView1.Columns[0].Width      = 70;
            dataGridView1.Columns[0].HeaderText = "Номер";
            dataGridView1.Columns[1].Width      = 100;
            dataGridView1.Columns[1].HeaderText = "Отправитель";
            dataGridView1.Columns[2].Width      = 100;
            dataGridView1.Columns[2].HeaderText = "Получатель";
            dataGridView1.Columns[3].Width      = 100;
            dataGridView1.Columns[3].HeaderText = "Тема";
            dataGridView1.Columns[5].Width      = 100;
            dataGridView1.Columns[5].HeaderText = "Статус";
            dataGridView1.Columns[7].Width      = 70;
            dataGridView1.Columns[7].HeaderText = "Время";

            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Cells[5].Value.ToString() == "Принято")
                {
                    row.DefaultCellStyle.BackColor = Color.AliceBlue;
                }
                if (row.Cells[5].Value.ToString() == "Прочитано")
                {
                    row.DefaultCellStyle.BackColor = Color.Azure;
                }
            }
            dataGridView1.Update();
            dataGridView1.Refresh();
        }
예제 #5
0
        // Обработка клика на письмо
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                // Получение информации по письму
                DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];

                //Отображение письма в текстБоксы
                try { textBox1.Text = row.Cells[1].Value.ToString(); }
                catch (Exception ex) { textBox1.Text = ""; }

                try { textBox2.Text = row.Cells[3].Value.ToString(); }
                catch (Exception ex) { textBox2.Text = ""; }

                try { textBox3.Text = row.Cells[4].Value.ToString(); }
                catch (Exception ex) { textBox3.Text = ""; }

                try { textBox4.Text = row.Cells[7].Value.ToString(); }
                catch (Exception ex) { textBox4.Text = ""; }
                try
                { textBox5.Text = row.Cells[5].Value.ToString(); }
                catch (Exception ex) { textBox5.Text = ""; }

                // Попытка отправить уведомление о прочтении
                bool   foreign_id_exists = false;
                string foreign_id_string = "";
                string sender_string     = "";
                string status_string     = "";
                try {
                    foreign_id_string = row.Cells[6].Value.ToString();
                    sender_string     = row.Cells[1].Value.ToString();
                    status_string     = row.Cells[5].Value.ToString();
                    foreign_id_exists = true;
                }
                catch (Exception ex)
                {
                    foreign_id_exists = false;
                }
                if (foreign_id_exists)
                {
                    if (form1.AuthData["Port1"] != null && form1.AuthData["Port2"] != null && form1.AuthData["local"] != null)
                    {
                        if (status_string != "Прочитано")
                        {
                            int len = foreign_id_string.Length;
                            // Здесь ожидаем получения мьютекса на создание заданий
                            // После получения, используя методы Form1 создается кадр об открытии письма
                            // Необходимо получить значение "Port1/2" по ключу "sender",
                            // а также номер машины, за которой сидит этот sender
                            var Receiver_Port = form1.AuthData.FirstOrDefault(x => x.Value == sender_string).Key;
                            //either "Port1" or "Port2"
                            string Port = Receiver_Port.ToString();

                            // Конвертирование из utf-8 в win1251 уже предусмотрено в функции
                            byte[] frame = form1.CreateNewFrame(Form1.FrameType.OPENLETTER, "0", len.ToString(), "0", foreign_id_string, false);

                            //Form1.One_Task openletterframe = new Form1.One_Task();

                            form1.TaskToSend_mutex.WaitOne();
                            form1.TasksToSend.Add(new Form1.One_Task(Receiver_Port, frame));
                            form1.TaskToSend_mutex.ReleaseMutex();

                            using (CourseDB db = new CourseDB())
                            {
                                var foreign_id_num = long.Parse(foreign_id_string);
                                var result         = db.inbox.SingleOrDefault(x => x.foreign_id == foreign_id_num);
                                if (result != null)
                                {
                                    result.status = "Прочитано";
                                    db.SaveChanges();
                                    form1.Inbox_update_mutex.WaitOne();
                                    form1.Inbox_update_needed = true;
                                    form1.Inbox_update_mutex.ReleaseMutex();
                                }
                            }
                        }
                        else
                        {
                        }
                    }
                }
            }
        }