public ServiceResult <SingleChatMessage> UpdateMessage(SingleChatMessage model) { var serviceResult = new ServiceResult <SingleChatMessage>(); try { var entity = _uow.Repository <SingleChatMessage>() .GetQueryable() .FirstOrDefault(m => m.Id == model.Id && m.FromId == model.FromId); if (entity == null) { serviceResult.Status = ResultStatus.Forbidden; return(serviceResult); } entity.Update(model); _uow.SaveChanges(); serviceResult.Status = ResultStatus.Success; } catch (Exception e) { serviceResult.Status = ResultStatus.ServerError; } return(serviceResult); }
} // end of method private void SendMessageToParticularClient(SingleChatMessage chatmessage, string sender, string intendedReceiver) { // Inform all of the clients of the new message List <string> callbackKeys = loggedInUsers?.Keys.ToList(); // Loops through each logged in user foreach (string key in callbackKeys) { if (key == intendedReceiver || key == sender) { try { IOneToOneChatCallback callback = loggedInUsers[key]; callback.SendMessageToParticularClient(chatmessage); Console.WriteLine($"Sending user {key} message {chatmessage}"); } // catches an issue with a user disconnect and loggs off that user catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "." + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name); // Remove the disconnected client LeaveServer(key); } } } // end of foreach }
public ServiceResult <SingleChatMessage> CreateMessage(SingleChatMessage message) { var serviceResult = new ServiceResult <SingleChatMessage>(); try { _uow.Repository <SingleChatMessage>().Add(message); _uow.SaveChanges(); var result = _uow.Repository <SingleChatMessage>() .GetQueryable() .Include(s => s.To) .Include(s => s.From) .FirstOrDefault(m => message.Id == m.Id); serviceResult.Result = result; serviceResult.Status = ResultStatus.Success; } catch (Exception e) { serviceResult.Status = ResultStatus.ServerError; } return(serviceResult); }
} // end of method #endregion methods #region Ionetoonechatservicecallback implementataion public void SendMessageToParticularClient(SingleChatMessage message) { // Don't receive any messages until the chat history is loaded if (!IsChatHistoryLoaded) { return; } try { // UI Threading Sync if (lstChatMessages.InvokeRequired) { // UI Thread Sync is Required, Invoke the Request on the // UI thread Action <SingleChatMessage> del = new Action <SingleChatMessage>(SendMessageToParticularClient); lstChatMessages.BeginInvoke(del, message); } // Add the recent chat message to the listbox else { lstChatMessages.Items.Add(message); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "." + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name); MessageBox.Show("Error receiving message: " + ex.Message); } }
public static SingleChatMessageApiModel From(SingleChatMessage entity) { if (entity == null) { return(null); } return(new SingleChatMessageApiModel { FullName = entity.From.FirstName + " " + entity.From.LastName, Text = entity.Text, FromId = entity.FromId, ToId = entity.ToId, PostTime = entity.PostTime, LastEdited = DateTime.UtcNow }); }
/// <summary> /// Methods Adds Message to local queue as well as to DB /// </summary> /// <param name="message"></param> private void AddMessage(SingleChatMessage message) { DbInit(); // There is a Message Limit // Dequeue then Enqueue if (chatMessages?.Count >= maximumMessages) { chatMessages.Dequeue(); chatMessages.Enqueue(message); } // Enqueue else { chatMessages?.Enqueue(message); } // update message history in database table cmd.CommandText = "Insert into [OneToOneChatMessages] values(@SenderId, @ReceiveId, @SenderName,@ReceiveName, @Message, @TimeStamp)"; cmd.Parameters.AddWithValue("@SenderId", message.SenderId); cmd.Parameters.AddWithValue("@ReceiveId", message.ReceiveId); cmd.Parameters.AddWithValue("@SenderName", message.SenderName); cmd.Parameters.AddWithValue("@ReceiveName", message.ReceiverName); cmd.Parameters.AddWithValue("@Message", message.Message); cmd.Parameters.AddWithValue("@TimeStamp", message.TimeStamp); conn.Open(); SingleChatMessage newMessage; try { cmd.ExecuteNonQuery(); } catch (System.Data.SqlClient.SqlException e) // If phonenumber is already exists then { conn.Close(); } newMessage = message; conn.Close(); return; } // end of method
public ServiceResult DeleteMessage(SingleChatMessage model) { var serviceResult = new ServiceResult(); try { var entity = _uow.Repository <SingleChatMessage>() .GetQueryable() .FirstOrDefault(m => m.FromId == model.FromId && m.Id == model.Id); entity.IsDeleted = DeletedMessage.ForSender; serviceResult.Status = ResultStatus.Success; } catch (Exception e) { serviceResult.Status = ResultStatus.ServerError; } return(serviceResult); }
} // end of method public void SendMessageToParticularUser(string sender, string receiver, string messageText) { // Trim the Username to 15 Characters if (sender.Length > 15) { sender = sender.Substring(0, 15); } try { User messageSenderUser = new User(); User messageReceiverUser = new User(); //Verify the User is Logged On First if (sender != "Admin" || receiver != "Admin" || !loggedInUsers.ContainsKey(sender)) { messageSenderUser = userService.GetUserByUserName(sender); } messageSenderUser = userService.GetUserByUserName(sender); messageReceiverUser = userService.GetUserByUserName(receiver); // Create New Message Object SingleChatMessage chatmessage = new SingleChatMessage(messageSenderUser.UserId, messageReceiverUser.UserId, sender, receiver, messageText, DateTime.Now); // Add to Message History AddMessage(chatmessage); // Transmitt to Intended User SendMessageToParticularClient(chatmessage, sender, receiver); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "." + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name); } }
public static void Update(this SingleChatMessage dest, SingleChatMessage source) { dest.Text = source.Text; dest.LastEdited = DateTime.UtcNow; }