public static List <DtoOutMessageDetails> getMessageDetailsFromMessagesListByIdChatRoom(int idUser, int idChatRoom) { if (_chatMembersRepository.FindBy(x => x.IdChat == idChatRoom && x.ObjectChat.IsDeleted == false && x.ObjectUser.IsDeleted == false && x.ObjectUser.Id == idUser).FirstOrDefault() == null) { return(null); } List <Message> messages = getAllMessagesByIdChatRoom(idUser, idChatRoom); List <SeenMessage> seenMessages = new List <SeenMessage>(); List <DtoOutMessageDetails> result = new List <DtoOutMessageDetails>(); List <Message> messagestmp = new List <Message>(); foreach (Message item in messages) { SeenMessage message = _seenMessagesRepository.FindBy(x => x.IsDeleted == false && x.IdMessage == item.Id).FirstOrDefault(); if (message == null) { messagestmp.Add(item); } else { seenMessages.Add(message); } } foreach (SeenMessage item in seenMessages) { result.Add(new DtoOutMessageDetails(item)); } foreach (Message item in messagestmp) { result.Add(new DtoOutMessageDetails(item)); } return(result); }
public static List <DtoOutMessageDetails> getMessageDetailsFromMessagesList(int idUser) { List <Message> messages = getAllMessages(idUser); List <SeenMessage> seenMessages = new List <SeenMessage>(); List <DtoOutMessageDetails> result = new List <DtoOutMessageDetails>(); List <Message> messagestmp = new List <Message>(); foreach (Message item in messages) { SeenMessage message = _seenMessagesRepository.FindBy(x => x.IsDeleted == false && x.IdMessage == item.Id).FirstOrDefault(); if (message == null) { messagestmp.Add(item); } else { seenMessages.Add(message); } } foreach (SeenMessage item in seenMessages) { result.Add(new DtoOutMessageDetails(item)); } foreach (Message item in messagestmp) { result.Add(new DtoOutMessageDetails(item)); } return(result); }
public DtoOutMessageDetails(SeenMessage seenMessage) { this.Id = seenMessage.ObjectMessage.Id; this.IdUser = seenMessage.ObjectMessage.IdUser; this.IdChatRoom = seenMessage.ObjectMessage.IdChatRoom; this.Text = seenMessage.ObjectMessage.Text; this.SendTime = seenMessage.ObjectMessage.SendTime; this.File = seenMessage.ObjectMessage.File; this.IdSeenUser = seenMessage.IdUser; this.SeenTime = seenMessage.SeenTime; }
/// <summary> /// Receives the Seen message /// </summary> /// <param name="message">The message.</param> private void Execute(SeenMessage message) { if (message.ErrorMessage != null) { Log(LogLevel.Warning, message.ErrorMessage); return; } if (message.ClientDatabaseIds.Count == 1 && message.ClientDatabaseIds.Contains(Self.ClientDatabaseId)) { return; } for (int index = 0; index < message.ClientDatabaseIds.Count; index++) { var clientDatabaseId = message.ClientDatabaseIds[index]; var client = Repository.Client.GetClientDataBaseInfo(clientDatabaseId); if (client != null) { var lastSeen = Repository.Client.GetLastSeen(clientDatabaseId); var context = new MessageContext { Index = index + 1, ClientDatabaseId = client.DatabaseId, ClientNickname = client.NickName, ClientLastLogin = client.LastConnected.ToLocalTime().ToString(Repository.Static.DateTimeFormat), ClientLastSeen = lastSeen != default(DateTime) && lastSeen > DateTime.MinValue ? lastSeen.ToLocalTime().ToString(Repository.Static.DateTimeFormat) : client.LastConnected.ToLocalTime().ToString(Repository.Static.DateTimeFormat) }; QueryRunner.SendTextMessage(Repository.Settings.Control.Seen.Target, Repository.Settings.Control.Seen.TargetId > 0 ? Repository.Settings.Control.Seen.TargetId : message.SenderClientId, Repository.Settings.Control.Seen.TextMessage.ToMessage(context)); } } var senderClientEntry = Repository.Client.GetClientInfo(message.SenderClientId); Log(Repository.Settings.Control.Seen, string.Format("Client '{1}'(id:{2}) used {0} for clients '{3}'.", Repository.Settings.Control.Seen.Command, senderClientEntry.Nickname, senderClientEntry.DatabaseId, string.Join("', '", message.ClientDatabaseIds.ConvertAll(i => i.ToString(CultureInfo.InvariantCulture)).ToArray()))); }
public IDtoOutObjects Seen(DtoInSeenMessage dtoInSeenMessage) { DtoOutError error = new DtoOutError(); if (TokenTools.Authentication(dtoInSeenMessage.Token, dtoInSeenMessage.DeviceName)) { SeenMessage seenMessage = new SeenMessage(); seenMessage.SeenTime = System.DateTime.Now; Message message = _messagesRepository.FindBy(x => x.Id == dtoInSeenMessage.IdMessage && x.IsDeleted == false).FirstOrDefault(); if (message == null) { error.Exception = new MessageWithThisIdDoesNotExistsException(); error.Message = "Message with this id {" + dtoInSeenMessage.IdMessage + "} does not exists"; return(error); } if (!ChatRoomTools.getListIdChatRoomFromUser(TokenTools.getUserFromToken(dtoInSeenMessage.Token).Id).Contains(message.IdChatRoom)) { error.Exception = new MessageIsNotInYourListOfChatRooms(); error.Message = "Message is not in your list of chatRooms"; return(error); } seenMessage.IdMessage = dtoInSeenMessage.IdMessage; seenMessage.IdUser = TokenTools.getUserFromToken(dtoInSeenMessage.Token).Id; SeenMessage result = _seenMessagesRepository.Add(seenMessage); var config = new MapperConfiguration(cfg => { cfg.CreateMap <SeenMessage, DtoOutSeenMessage>(); }); IMapper mapper = config.CreateMapper(); DtoOutSeenMessage dtoOutSeenMessage = new DtoOutSeenMessage(); mapper.Map(result, dtoOutSeenMessage); return(dtoOutSeenMessage); } else { NotAuthenticatedException ex = new NotAuthenticatedException(); error.Exception = ex; return(error); } }
/// <summary> /// Receives the Seen message /// </summary> /// <param name="message">The message.</param> private void Execute(SeenMessage message) { if (message.ErrorMessage != null) { Log(LogLevel.Warning, message.ErrorMessage); return; } if (message.ClientDatabaseIds.Count == 1 && message.ClientDatabaseIds.Contains(Self.ClientDatabaseId)) return; for (int index = 0; index < message.ClientDatabaseIds.Count; index++) { var clientDatabaseId = message.ClientDatabaseIds[index]; var client = Repository.Client.GetClientDataBaseInfo(clientDatabaseId); if (client != null) { var lastSeen = Repository.Client.GetLastSeen(clientDatabaseId); var context = new MessageContext { Index = index + 1, ClientDatabaseId = client.DatabaseId, ClientNickname = client.NickName, ClientLastLogin = client.LastConnected.ToLocalTime().ToString(Repository.Static.DateTimeFormat), ClientLastSeen = lastSeen != default(DateTime) && lastSeen > DateTime.MinValue ? lastSeen.ToLocalTime().ToString(Repository.Static.DateTimeFormat) : client.LastConnected.ToLocalTime().ToString(Repository.Static.DateTimeFormat) }; QueryRunner.SendTextMessage(Repository.Settings.Control.Seen.Target, Repository.Settings.Control.Seen.TargetId > 0 ? Repository.Settings.Control.Seen.TargetId : message.SenderClientId, Repository.Settings.Control.Seen.TextMessage.ToMessage(context)); } } var senderClientEntry = Repository.Client.GetClientInfo(message.SenderClientId); Log(Repository.Settings.Control.Seen, string.Format("Client '{1}'(id:{2}) used {0} for clients '{3}'.", Repository.Settings.Control.Seen.Command, senderClientEntry.Nickname, senderClientEntry.DatabaseId, string.Join("', '", message.ClientDatabaseIds.ConvertAll(i => i.ToString(CultureInfo.InvariantCulture)).ToArray()))); }