// INSERT //------------------------------------------------------------------------------------------------------------ public int InsertMensagem(objMensagem mensagem, object dbTran = null) { AcessoDados db = null; try { db = dbTran == null ? new AcessoDados() : (AcessoDados)dbTran; //--- clear Params db.LimparParametros(); //--- define Params db.AdicionarParametros("@IDUsuarioDestino", mensagem.IDUsuarioDestino); db.AdicionarParametros("@IDUsuarioOrigem", mensagem.IDUsuarioOrigem); db.AdicionarParametros("@Suporte", mensagem.Suporte); db.AdicionarParametros("@IsResposta", mensagem.IsResposta); db.AdicionarParametros("@Mensagem", mensagem.Mensagem); db.AdicionarParametros("@MensagemData", mensagem.MensagemData); db.AdicionarParametros("@IDOrigem", mensagem.IDOrigem); //--- convert null parameters db.ConvertNullParams(); //--- create query string query = db.CreateInsertSQL("tblUsuarioMensagem"); //--- insert return((int)db.ExecutarInsertAndGetID(query)); } catch (Exception ex) { throw ex; } }
// UPDATE //------------------------------------------------------------------------------------------------------------ public bool UpdateMensagem(objMensagem mensagem) { try { AcessoDados db = new AcessoDados(); //--- clear Params db.LimparParametros(); //--- define Params db.AdicionarParametros("@IDMensagem", mensagem.IDMensagem); db.AdicionarParametros("@IDUsuarioDestino", mensagem.IDUsuarioDestino); db.AdicionarParametros("@IDUsuarioOrigem", mensagem.IDUsuarioOrigem); db.AdicionarParametros("@Suporte", mensagem.Suporte); db.AdicionarParametros("@IsResposta", mensagem.IsResposta); db.AdicionarParametros("@Mensagem", mensagem.Mensagem); db.AdicionarParametros("@MensagemData", mensagem.MensagemData); db.AdicionarParametros("@Recebida", mensagem.Recebida); db.AdicionarParametros("@RecebidaData", mensagem.RecebidaData); //--- convert null parameters db.ConvertNullParams(); ////--- create query string query = db.CreateUpdateSQL("tblUsuarioMensagem", "IDMensagem"); //--- UPDATE db.ExecutarManipulacao(CommandType.Text, query); return(true); } catch (Exception ex) { throw ex; } }
// GET MESSAGES RELATED AND RETURN A LIST OF OBJ MENSAGEM //------------------------------------------------------------------------------------------------------------ public List <objMensagem> GetListMensagensRelacionadas(int IDMensagem) { AcessoDados db = null; try { db = new AcessoDados(); db.BeginTransaction(); objMensagem mensagem = GetMensagemByID(IDMensagem, db); List <objMensagem> list = new List <objMensagem>(); while (mensagem.MensagemOrigem != null) { list.Add(mensagem.MensagemOrigem); mensagem = mensagem.MensagemOrigem; } db.CommitTransaction(); return(list); } catch (Exception ex) { db.RollBackTransaction(); throw ex; } }
// CONTROLA AS CORES DA LISTAGEM //------------------------------------------------------------------------------------------------------------ private void dgvListagem_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { objMensagem mensagem = (objMensagem)dgvListagem.Rows[e.RowIndex].DataBoundItem; if (e.ColumnIndex == clnSituacao.Index) { if (mensagem.Recebida == false) { e.Value = _Recebida ? "NOVA" : "NÃO LIDA"; dgvListagem.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.MistyRose; dgvListagem.Rows[e.RowIndex].DefaultCellStyle.SelectionBackColor = Color.Firebrick; e.CellStyle.ForeColor = Color.Red; e.CellStyle.SelectionForeColor = Color.Yellow; } else { e.Value = "LIDA"; if ((e.RowIndex + 1) % 2 != 0) // row ODD (impar) { dgvListagem.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.OldLace; dgvListagem.Rows[e.RowIndex].DefaultCellStyle.SelectionBackColor = SystemColors.Highlight; } else // row EVEN (par) { dgvListagem.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White; dgvListagem.Rows[e.RowIndex].DefaultCellStyle.SelectionBackColor = SystemColors.Highlight; } } } }
// MARCAR COMO LIDA //------------------------------------------------------------------------------------------------------------ private void MarcarComoLida() { if (dgvListagem.SelectedRows.Count == 0) { AbrirDialog("Selecione um registro para Marcar como Lida...", "Selecionar"); return; } //--- get selected message objMensagem mensagem = (objMensagem)dgvListagem.SelectedRows[0].DataBoundItem; mensagem.Recebida = true; mensagem.RecebidaData = DateTime.Today; try { // --- Ampulheta ON Cursor.Current = Cursors.WaitCursor; //--- update mBLL.UpdateMensagem(mensagem); } catch (Exception ex) { AbrirDialog("Uma exceção ocorreu ao Salvar Mensagem..." + "\n" + ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation); } finally { // --- Ampulheta OFF Cursor.Current = Cursors.Default; } }
// SEND MESSAGE TO ALL ACTIVE USERS //------------------------------------------------------------------------------------------------------------ public int SendToAllActiveUsers(objMensagem mensagem) { AcessoDados db = null; try { db = new AcessoDados(); db.BeginTransaction(); //--- get users list List <objUsuario> listUser = new UsuarioBLL().GetListUsuario("", true); foreach (var user in listUser) { //--- check if user is the sender user if (user.IDUsuario == mensagem.IDUsuarioOrigem) { continue; } //--- crete new message var newMensage = new objMensagem() { IDUsuarioDestino = (int)user.IDUsuario, IDUsuarioOrigem = mensagem.IDUsuarioOrigem, IsResposta = false, IDMensagem = null, IDOrigem = null, Mensagem = mensagem.Mensagem, MensagemData = mensagem.MensagemData, MensagemOrigem = null, Recebida = false, RecebidaData = null, Suporte = false, UsuarioOrigem = mensagem.UsuarioOrigem, UsuarioDestino = user.UsuarioApelido }; //--- insert new message InsertMensagem(newMensage); } //--- COMMIT db.CommitTransaction(); //--- RETURN WITH NUMBER OF SENDED MESSAGES return(listUser.Count); } catch (Exception ex) { //--- ROOLBACK db.RollBackTransaction(); throw ex; } }
// ENVIAR MENSAGEM //------------------------------------------------------------------------------------------------------------ private void EnviarMensagem(objMensagem mensagem) { try { // --- Ampulheta ON Cursor.Current = Cursors.WaitCursor; //---mensagem string texto = ""; //--- check usuario destino if (mensagem.IDUsuarioDestino != -1) { mBLL.InsertMensagem(mensagem); texto = "Mensagem enviada com sucesso!"; } else { int total = mBLL.SendToAllActiveUsers(mensagem); if (total > 1) { texto = $"Mensagens enviadas com sucesso para {total: D2} usuários."; } else { texto = $"Mensagem enviada com sucesso para 1 usuário."; } } if (rbtEnviadas.Checked) { ObterDados(); } else { rbtEnviadas.Checked = true; } AbrirDialog(texto, "Enviada"); } catch (Exception ex) { AbrirDialog("Uma exceção ocorreu ao Enviar Mensagem..." + "\n" + ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation); } finally { // --- Ampulheta OFF Cursor.Current = Cursors.Default; } }
public frmMensagemEditar(objMensagem mensagem, objUsuario DestinoUser, Form formOrigem) { InitializeComponent(); _formOrigem = formOrigem; _DestinoUser = DestinoUser; _mensagem = mensagem; bind.DataSource = _mensagem; BindingCreator(); if (_mensagem.IDMensagem == null) { Sit = EnumFlagEstado.NovoRegistro; } else { Sit = EnumFlagEstado.RegistroSalvo; if (mensagem.IDUsuarioOrigem != Program.usuarioAtual.IDUsuario) { txtUsuarioDestino.ReadOnly = true; txtMensagem.ReadOnly = true; btnSetConta.Enabled = false; btnEnviar.Visible = false; btnCancelar.Text = "&Fechar"; } } // CHECK IF IS RESPOSTA if (_mensagem.IsResposta && mensagem.IDOrigem != null) { mBLL = new MensagemBLL(); lstAntigas = ObterAnteriores((int)mensagem.IDOrigem); if (lstAntigas != null && lstAntigas.Count > 0) { PreencheControleAntigas(); } } // CHECK FORM SIZE WithAnteriores(); // ADD HANDLERS HandlerKeyDownControl(this); }
// EDITAR MENSAGEM //------------------------------------------------------------------------------------------------------------ private void EditarMensagem() { if (dgvListagem.SelectedRows.Count == 0) { AbrirDialog("Selecione um registro para editar...", "Selecionar"); return; } //--- get selected message objMensagem mensagem = (objMensagem)dgvListagem.SelectedRows[0].DataBoundItem; //--- create destino user var user = new objUsuario(mensagem.IDUsuarioDestino) { UsuarioApelido = mensagem.UsuarioDestino }; //--- open form mensagem var frmM = new frmMensagemEditar(mensagem, user, this); frmM.ShowDialog(); if (frmM.DialogResult != DialogResult.OK) { return; } try { // --- Ampulheta ON Cursor.Current = Cursors.WaitCursor; //--- update mBLL.UpdateMensagem(mensagem); } catch (Exception ex) { AbrirDialog("Uma exceção ocorreu ao Salvar Mensagem..." + "\n" + ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation); } finally { // --- Ampulheta OFF Cursor.Current = Cursors.Default; } }
// REMOVER MENSAGEM //------------------------------------------------------------------------------------------------------------ private void RemoverMensagem() { if (dgvListagem.SelectedRows.Count == 0) { AbrirDialog("Selecione um registro para Remover...", "Selecionar"); return; } //--- get selected message objMensagem mensagem = (objMensagem)dgvListagem.SelectedRows[0].DataBoundItem; //--- ask user var resp = AbrirDialog("Você deseja realmente REMOVER a mensagem selecionada para o usuário\n" + $"{mensagem.UsuarioDestino.ToUpper()}?", "Remover Mensagem", DialogType.SIM_NAO, DialogIcon.Question, DialogDefaultButton.Second); if (resp != DialogResult.Yes) { return; } try { // --- Ampulheta ON Cursor.Current = Cursors.WaitCursor; //--- remove mBLL.DeleteMensagem((int)mensagem.IDMensagem); //--- get dados bind.Remove(mensagem); } catch (Exception ex) { AbrirDialog("Uma exceção ocorreu ao Salvar Mensagem..." + "\n" + ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation); } finally { // --- Ampulheta OFF Cursor.Current = Cursors.Default; } }
// CONVERT ROW IN CLASS //------------------------------------------------------------------------------------------------------------ public objMensagem ConvertRowInClass(DataRow row) { objMensagem mensagem = new objMensagem() { IDMensagem = (int)row["IDMensagem"], IDUsuarioDestino = (int)row["IDUsuarioDestino"], UsuarioDestino = (string)row["UsuarioDestino"], IDUsuarioOrigem = (int)row["IDUsuarioOrigem"], UsuarioOrigem = (string)row["UsuarioOrigem"], Recebida = (bool)row["Recebida"], Suporte = (bool)row["Suporte"], IsResposta = (bool)row["IsResposta"], Mensagem = (string)row["Mensagem"], MensagemData = (DateTime)row["MensagemData"], RecebidaData = row["RecebidaData"] == DBNull.Value ? null : (DateTime?)row["RecebidaData"], IDOrigem = row["IDOrigem"] == DBNull.Value ? null : (int?)row["IDOrigem"], }; return(mensagem); }
// LISTAGEM AO CLICAR //------------------------------------------------------------------------------------------------------------ private void dgvListagem_MouseDown(object sender, MouseEventArgs e) { // check button if (e.Button != MouseButtons.Right) { return; } Control c = (Control)sender; DataGridView.HitTestInfo hit = dgvListagem.HitTest(e.X, e.Y); dgvListagem.ClearSelection(); if (hit.Type != DataGridViewHitTestType.Cell) { return; } // seleciona o ROW dgvListagem.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dgvListagem.CurrentCell = dgvListagem.Rows[hit.RowIndex].Cells[2]; dgvListagem.Rows[hit.RowIndex].Selected = true; // mostra o MENU ativar e desativar objMensagem item = (objMensagem)dgvListagem.Rows[hit.RowIndex].DataBoundItem; // revela menu if (_Recebida) { mnuRecebida.Enabled = !item.Recebida; mnuOperacoes.Show(c.PointToScreen(e.Location)); } else { mnuEnviadas.Show(c.PointToScreen(e.Location)); } }
// GET MENSAGEM BY ID RECURSIVE //------------------------------------------------------------------------------------------------------------ public objMensagem GetMensagemByID(int IDMensagem, object dbTran) { try { AcessoDados db = (AcessoDados)dbTran; // define paramns db.LimparParametros(); db.AdicionarParametros("@IDMensagem", IDMensagem); // define query string query = "SELECT * FROM qryUsuarioMensagem " + "WHERE IDMensagem = @IDMensagem"; var mensagem = new objMensagem(); // execute query DataTable dt = db.ExecutarConsulta(CommandType.Text, query); if (dt.Rows.Count > 0) { mensagem = ConvertRowInClass(dt.Rows[0]); if (mensagem.IDOrigem != null) { mensagem.MensagemOrigem = GetMensagemByID((int)mensagem.IDOrigem, db); } } return(mensagem); } catch (Exception ex) { throw ex; } }
// RESPONDER MENSAGEM SELECIONADA //------------------------------------------------------------------------------------------------------------ private void ResponderMensagem() { if (dgvListagem.SelectedRows.Count == 0) { AbrirDialog("Selecione uma mensagem para Responder...", "Selecionar"); return; } //--- get selected message objMensagem mensagem = (objMensagem)dgvListagem.SelectedRows[0].DataBoundItem; //--- check if mensagem is RECEBIDA if (!mensagem.Recebida) { AbrirDialog("Para responder uma mensagem, a mesma deve estar marcada como mensagem LIDA..." + "Favor marcar essa mensagem com LIDA.", "Responder Mensagem", DialogType.OK, DialogIcon.Exclamation); return; } try { // --- Ampulheta ON Cursor.Current = Cursors.WaitCursor; //--- Define Destination User message objUsuario userDestino = new objUsuario(mensagem.IDUsuarioOrigem) { UsuarioApelido = mensagem.UsuarioOrigem }; //--- create new mensagem var novaMensagem = new objMensagem() { IDMensagem = null, IDUsuarioDestino = (int)userDestino.IDUsuario, IDUsuarioOrigem = (int)Program.usuarioAtual.IDUsuario, IsResposta = true, IDOrigem = mensagem.IDMensagem, Mensagem = "", MensagemData = DateTime.Today, MensagemOrigem = mensagem, Recebida = false, RecebidaData = null, Suporte = false, UsuarioOrigem = Program.usuarioAtual.UsuarioApelido, UsuarioDestino = userDestino.UsuarioApelido }; //--- open form mensagem var frmM = new frmMensagemEditar(novaMensagem, userDestino, this); frmM.ShowDialog(); if (frmM.DialogResult != DialogResult.OK) { return; } EnviarMensagem(novaMensagem); } catch (Exception ex) { AbrirDialog("Uma exceção ocorreu ao Enviar a Resposta da Mensagem..." + "\n" + ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation); } finally { // --- Ampulheta OFF Cursor.Current = Cursors.Default; } }
// CREATE ENVIAR NOVA MENSAGEM //------------------------------------------------------------------------------------------------------------ private void btnEnviarNova_Click(object sender, EventArgs e) { try { // --- Ampulheta ON Cursor.Current = Cursors.WaitCursor; //--- get destination user message var frm = new frmUsuarioProcura(this, null, true); frm.ShowDialog(); if (frm.DialogResult != DialogResult.OK) { return; } var user = frm.propEscolha; if (user.IDUsuario == (int)Program.usuarioAtual.IDUsuario) { AbrirDialog("Não é possível enviar uma mensagem para o usuário atual:\n" + $"{Program.usuarioAtual.UsuarioApelido}", "Mensagem para Usuário", DialogType.OK, DialogIcon.Exclamation); return; } //--- create new mensagem var novaMensagem = new objMensagem() { IDUsuarioDestino = (int)user.IDUsuario, IDUsuarioOrigem = (int)Program.usuarioAtual.IDUsuario, IsResposta = false, IDMensagem = null, IDOrigem = null, Mensagem = "", MensagemData = DateTime.Today, MensagemOrigem = null, Recebida = false, RecebidaData = null, Suporte = false, UsuarioOrigem = Program.usuarioAtual.UsuarioApelido, UsuarioDestino = user.UsuarioApelido }; //--- open form mensagem var frmM = new frmMensagemEditar(novaMensagem, user, this); frmM.ShowDialog(); if (frmM.DialogResult != DialogResult.OK) { return; } EnviarMensagem(novaMensagem); } catch (Exception ex) { AbrirDialog("Uma exceção ocorreu ao Enviar Nova Mensagem..." + "\n" + ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation); } finally { // --- Ampulheta OFF Cursor.Current = Cursors.Default; } }