예제 #1
0
        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);
        }
예제 #2
0
        /// <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>();
            }
        }
예제 #3
0
        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);
                }
            }
        }
예제 #4
0
        //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);
        }