242 lines
9.7 KiB
C#
242 lines
9.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Mip
|
|
{
|
|
public partial class frmChat : Form
|
|
{
|
|
public frmChat()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
string idUserKomu = "0";
|
|
string idUserOd = "0";
|
|
DateTime maxDateTime = DateTime.MinValue;
|
|
//float pocet = 0;
|
|
private void dataGridView3_CellClick(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
|
|
idUserKomu = dataGridView3.Rows[dataGridView3.CurrentRow.Index].Cells["IDUsers"].Value.ToString();
|
|
idUserOd = classUser.ID.ToString();
|
|
|
|
textBox3.Enabled = true;
|
|
label1.Enabled = true;
|
|
povolitrefresh = true;
|
|
classUser.IndexChat = dataGridView3.CurrentRow.Index;
|
|
refreshChatUsers();
|
|
refreshListView();
|
|
}
|
|
|
|
private void frmChat_Load(object sender, EventArgs e)
|
|
{
|
|
refreshChatUsers();
|
|
|
|
listView2.Columns.Add("Smer", 25,HorizontalAlignment.Center);
|
|
listView2.Columns.Add("DatumCas", 80,HorizontalAlignment.Left);
|
|
listView2.Columns.Add("Text", 350,HorizontalAlignment.Left);
|
|
listView2.HeaderStyle = ColumnHeaderStyle.None;
|
|
dataGridView3.ClearSelection();
|
|
|
|
string cmd = "SELECT IFNULL(MAX(`DatumCas`),0) AS `posledny` FROM `mip`.`tabchat` WHERE `Komu` = " + classUser.ID.ToString() + ";";
|
|
string strPoslednyDatum;
|
|
classSQL.SQL(cmd, out strPoslednyDatum);
|
|
if (strPoslednyDatum != "0") maxDateTime = Convert.ToDateTime(strPoslednyDatum);
|
|
|
|
Timer refresh = new Timer();
|
|
refresh.Enabled = true;
|
|
refresh.Interval = 1000;
|
|
refresh.Tick += new System.EventHandler(refresh_Tick);
|
|
|
|
|
|
}
|
|
|
|
private void refresh_Tick(object sender, EventArgs e)
|
|
{
|
|
if (dataGridView3.SelectedRows.Count > 0)
|
|
{
|
|
refreshListView();
|
|
//refreshChatUsers();
|
|
}
|
|
|
|
}
|
|
//int selectedRow;
|
|
private void refreshChatUsers()
|
|
{
|
|
/*
|
|
SELECT CONCAT(IFNULL(`Titul`,''), ' ', `Priezvisko`, ' ', `Meno`) AS Meno,
|
|
`OnlineStatus`,
|
|
`IDUsers`
|
|
FROM `tabusers` ORDER BY `OnlineStatus` DESC, `Priezvisko`;
|
|
|
|
|
|
*/
|
|
|
|
string cmd = @"SELECT CONCAT(IFNULL(`Titul`,''), ' ', `Priezvisko`, ' ', `Meno`) AS Meno,
|
|
`OnlineStatus`,
|
|
`IDUsers`,
|
|
IF((SELECT COUNT(`Od`) FROM `tabchat` WHERE(`Od` = `tabusers`.IDUsers AND `Komu` = " + classUser.ID.ToString() + @" AND `tabchat`.`Status` = 'Neprečítaná'))=0,'False','True') AS NoveSpravy
|
|
FROM `tabusers` ORDER BY `OnlineStatus` DESC, `Priezvisko`;";
|
|
|
|
DataTable tblChat = new DataTable();
|
|
classSQL.SQL(cmd, out tblChat);
|
|
|
|
// vymaze uzivatela aby nemohol posielat spravy sam sebe
|
|
DataRow[] drr = tblChat.Select("IDUsers=' " + classUser.ID.ToString() + " ' ");
|
|
foreach (var row in drr) row.Delete();
|
|
|
|
dataGridView3.DataSource = tblChat;
|
|
dataGridView3.Columns["IDUsers"].Visible = false;
|
|
dataGridView3.Columns["Meno"].HeaderText = "Meno";
|
|
dataGridView3.Columns["OnlineStatus"].HeaderText = "Status";
|
|
dataGridView3.Columns["NoveSpravy"].Visible = false;//pridane aby sme mohly oznacit od koho ma uzivatel nove spravy
|
|
dataGridView3.AutoResizeColumns();
|
|
dataGridView3.Columns["Meno"].Width = 125;
|
|
|
|
dataGridView3.ClearSelection();
|
|
if (classUser.IndexChat <= dataGridView3.Rows.Count - 1) dataGridView3.Rows[classUser.IndexChat].Selected = true;
|
|
else if (dataGridView3.Rows.Count != 0) dataGridView3.Rows[dataGridView3.Rows.Count - 1].Selected = true;
|
|
|
|
}
|
|
|
|
private void refreshListView()
|
|
{
|
|
string cmd = "SELECT IFNULL(MAX(`DatumCas`),0) AS `posledny` FROM `mip`.`tabchat` WHERE `Komu` = " + classUser.ID.ToString() + ";";
|
|
string strposlednyDatumNovy;
|
|
classSQL.SQL(cmd, out strposlednyDatumNovy);
|
|
DateTime novyHladanyMaxDateTime = DateTime.MinValue;
|
|
//if (strposlednyDatumNovy != "0" || strposlednyDatumNovy !=null) novyHladanyMaxDateTime = Convert.ToDateTime(strposlednyDatumNovy);
|
|
if (strposlednyDatumNovy != "") novyHladanyMaxDateTime = Convert.ToDateTime(strposlednyDatumNovy);
|
|
|
|
if ((novyHladanyMaxDateTime > maxDateTime && dataGridView3.SelectedRows.Count >0 ) ||
|
|
povolitrefresh == true)
|
|
{
|
|
|
|
for (int i = listView2.Items.Count - 1; i >= 0; i--) listView2.Items[i].Remove();
|
|
|
|
string cmd2 = @"SELECT `Od`,
|
|
`Komu`,
|
|
DATE_FORMAT (`DatumCas`, '%e' '.' '%c' '. - ' '%H' ':' '%i') AS `DatCas`,
|
|
`Text`,
|
|
`Status`,
|
|
`IDChat`
|
|
FROM `tabchat`
|
|
WHERE ((`Od` = " + idUserOd + " AND `Komu` = " + idUserKomu + ") OR (`Od` = " + idUserKomu + " AND `Komu` = " + idUserOd + ")) ORDER BY `DatumCas`;";
|
|
|
|
DataTable tbllistView = new DataTable();
|
|
classSQL.SQL(cmd2, out tbllistView);
|
|
//"↑↓"
|
|
for (int i = 0; i < tbllistView.Rows.Count; i++)
|
|
{
|
|
string smer = "";
|
|
string datumcas = "";
|
|
string text = "";
|
|
|
|
if (tbllistView.Rows[i].ItemArray[tbllistView.Columns["Od"].Ordinal].ToString() == idUserOd) smer = "↑";
|
|
else smer = "↓";
|
|
datumcas = tbllistView.Rows[i].ItemArray[tbllistView.Columns["DatCas"].Ordinal].ToString();
|
|
text = tbllistView.Rows[i].ItemArray[tbllistView.Columns["Text"].Ordinal].ToString();
|
|
|
|
addlistviewline(smer, datumcas, text);
|
|
|
|
if (tbllistView.Rows[i].ItemArray[tbllistView.Columns["Od"].Ordinal].ToString() == idUserOd) listView2.Items[listView2.Items.Count - 1].ForeColor = Color.Blue;
|
|
else
|
|
{
|
|
if (tbllistView.Rows[i].ItemArray[tbllistView.Columns["Status"].Ordinal].ToString() == "Neprečítaná")
|
|
{
|
|
string IDChat = tbllistView.Rows[i].ItemArray[tbllistView.Columns["IDChat"].Ordinal].ToString();
|
|
string cmd3 = @"UPDATE `mip`.`tabchat` SET `Status` = 'Prečítaná' WHERE `IDChat`=" + IDChat + ";";
|
|
|
|
classSQL.SQL(cmd3);
|
|
listView2.Items[listView2.Items.Count - 1].ForeColor = Color.Red;
|
|
}
|
|
else
|
|
{
|
|
listView2.Items[listView2.Items.Count - 1].ForeColor = Color.Black;
|
|
}
|
|
}
|
|
}
|
|
if (listView2.Items.Count > 0) listView2.Items[listView2.Items.Count - 1].EnsureVisible();
|
|
if (strposlednyDatumNovy != "0") maxDateTime = Convert.ToDateTime(strposlednyDatumNovy);
|
|
povolitrefresh = false;
|
|
}
|
|
|
|
}
|
|
|
|
private void addlistviewline(String addsmer, String adddatumcas, String addtext)
|
|
{
|
|
ListViewItem newitem = new ListViewItem(addsmer);
|
|
newitem.SubItems.Add(adddatumcas);
|
|
newitem.SubItems.Add(addtext);
|
|
listView2.Items.Add(newitem);
|
|
}
|
|
|
|
private void label3_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
bool vymazatText = false;
|
|
bool povolitrefresh = false;
|
|
private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
|
|
{
|
|
if (e.KeyChar == 13)
|
|
{
|
|
string cmd = @"INSERT INTO `mip`.`tabchat` (`Od`, `Komu`, `DatumCas`, `Text`, `Status`) VALUES ('"
|
|
+ idUserOd + "', '"
|
|
+ idUserKomu + "', "
|
|
+ "NOW()" + ", '"
|
|
+ textBox3.Text + "', "
|
|
+ "'Neprečítaná');";
|
|
|
|
classSQL.SQL(cmd);
|
|
povolitrefresh = true;
|
|
refreshListView();
|
|
vymazatText = true;
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
private void textBox3_TextChanged(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void textBox3_KeyUp(object sender, KeyEventArgs e)
|
|
{
|
|
if (vymazatText == true)
|
|
{
|
|
textBox3.Clear();
|
|
vymazatText = false;
|
|
}
|
|
|
|
}
|
|
|
|
private void frmChat_Leave(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
private void dataGridView3_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
|
|
{
|
|
classGlobal.SetCellColor(dataGridView3, e.ColumnIndex, e.RowIndex, e.Value.ToString());
|
|
}
|
|
|
|
private void dataGridView3_SelectionChanged(object sender, EventArgs e)
|
|
{
|
|
if(dataGridView3.SelectedRows.Count != 0) label1.Text = "Adresát: " + dataGridView3.Rows[dataGridView3.SelectedRows[0].Index].Cells["Meno"].Value.ToString();
|
|
|
|
}
|
|
|
|
}
|
|
}
|