public bool SendMessage(Guid SenderId, Guid ChatId, String MessageText) { IMMessagesContainerDTO Chat = GetChat(ChatId, SenderId); //Se uno degli utenti è di quella chat... if (Chat.UserA.Id == SenderId || Chat.UserB.Id == SenderId) { DateTime Date = DateTime.Now; IMMessageDTO Message = new Domain.IMMessageDTO(); Message.Date = Date; Message.MessageText = MessageText; Message.SenderId = SenderId; Chat.Messages.Add(Message); if (Chat.UserA.Id == SenderId) { Chat.UserA.LastAccess = Date; } else { Chat.UserB.LastAccess = Date; } } else { throw new ArgumentException("Wrong chat or user"); } return(true); }
/// <summary> /// Inizializza una chat, se non è già presente. /// </summary> /// <param name="InitUser">L'utente che cerca di aprire la chat.</param> /// <param name="ReceiveUser">L'utente "ricevente"</param> /// <returns>Nel primo caso restituisce la nuova chat, nel secondo quella corretta.</returns> public IMMessagesContainerDTO StarChat(IMUserDTO InitUser, IMUserDTO ReceiveUser) { IMMessagesContainerDTO TempChat = (from ct in Chats where ((ct.UserA.Id == InitUser.Id) && (ct.UserB.Id == ReceiveUser.Id) || (ct.UserA.Id == ReceiveUser.Id) && (ct.UserB.Id == InitUser.Id)) select ct).FirstOrDefault(); if (TempChat != null) { //Restituisco la chat corretta return(TempChat); } else { //Creo la nuova chat TempChat = new Domain.IMMessagesContainerDTO(); TempChat.Id = Guid.NewGuid(); TempChat.UserA = InitUser; TempChat.UserB = ReceiveUser; TempChat.UserA.LastAccess = DateTime.Now; TempChat.UserB.LastAccess = DateTime.Now; TempChat.UserA.IsActive = true; TempChat.UserB.IsActive = false; TempChat.UserA.IsEnter = true; TempChat.UserB.IsEnter = false; //TempChat.Person1.IsChatvisible = true; //TempChat.Person2.IsChatvisible = true; TempChat.IsStarted = false; //Original: TempChat.UserDiscarded = ReceiveUser.Id; TempChat.UserDiscarded = ReceiveUser.PersonId; TempChat.Messages = new List <IMMessageDTO>(); Chats.Add(TempChat); return(TempChat); // this.Messages = new List<Ct1o1_Message_DTO>(); } }
public void DiscardChat(Int32 UserDiscardId, Guid ChatId) { IMMessagesContainerDTO Chat = (from ct in Chats where ct.Id == ChatId select ct).First(); if (Chat != null) { if (Chat.IsActive) { Chat.IsActive = false; Chat.UserDiscarded = UserDiscardId; } else if (Chat.UserDiscarded != UserDiscardId) { Chats.Remove(Chat); //this.DeleteChat(ChatId); } } }
//private DateTime GetLastAccess(Int32 PersonId) //{ // DateTime DT; // if( Person1.Id == PersonId) // { // DT = Person1.LastAccess; // Person1.LastAccess = DateTime.Now; // } // else if (Person2.Id == PersonId) // { // DT = Person2.LastAccess; // Person2.LastAccess = DateTime.Now; // } // else // { // throw new ArgumentException("Persons ID not in this chat"); // } // return DT; //} //private void UpdateUser(Int32 UserId) //{ // if (_UserDiscarded == UserId) // { // _UserDiscarded = 0; // IsActive = true; // } //} /// <summary> /// Restituisce una Chat /// </summary> /// <param name="ChatId"></param> /// <returns></returns> /// <remarks>Restituire NULL se la chat non c'è più.</remarks> public Domain.IMMessagesContainerDTO GetChat(Guid ChatId, Guid UserId) { IMMessagesContainerDTO Chat = (from ct in Chats where ct.Id == ChatId select ct).FirstOrDefault <IMMessagesContainerDTO>(); if (Chat == null) { Chat = new IMMessagesContainerDTO(); Chat.Id = ChatId; } else { if (Chat.UserA.Id == UserId) { Chat.UserA.IsEnter = true; } else if (Chat.UserB.Id == UserId) { Chat.UserB.IsEnter = true; } } return(Chat); }