Files
MIP/Mip/frmChat.cs
Culak-HP\Culak cc7c23eca4 Initial commit
2020-10-10 18:25:36 +02:00

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();
}
}
}