Example #1
0
        /// <summary>
        /// Creates the specified message.
        /// </summary>
        /// <param name="iMessage">The imessage.</param>
        /// <returns>The newly created message.</returns>
        public static Entites.Message Create(IMessage iMessage)
        {
            //TODO: Actually process the real message types.
            Entites.Message message =
                DAL.Message.Create(
                    new Entites.Message(Application.UpdateOrCreate(iMessage.Channel.Application),
                                        iMessage.ApplicationId, iMessage.SentDate,
                                        UserToChannel.UpdateOrCreate(iMessage.Channel.Application, iMessage.From,
                                                                     iMessage.Channel),
                                        MessageType.Get("Text"),
                                        iMessage.RepliesTo != null ? GetOrCreate(iMessage.RepliesTo) : null,
                                        false,
                                        iMessage.JoinedUser == null
                            ? null
                            : UserToChannel.GetOrCreate(iMessage.Channel.Application, iMessage.JoinedUser,
                                                        iMessage.Channel)));

            if (!string.IsNullOrEmpty(iMessage.Text))
            {
                message.Texts = new List <Entites.Text>
                {
                    Text.Create(new Entites.Text(iMessage.Text, iMessage.SentDate, message,
                                                 string.IsNullOrEmpty(iMessage.Text) ? null : Rules.ToR9KText(iMessage.Text)))
                };
            }

            // If the user was invited back, we make sure to reboot their consequences.
            if (message.JoinedUserToChannel != null &&
                (message.JoinedUserToChannel.NbSilences != 0 || message.JoinedUserToChannel.SilencedTo != null))
            {
                message.JoinedUserToChannel.NbSilences = 0;
                message.JoinedUserToChannel.SilencedTo = null;
                UserToChannel.Update(message.JoinedUserToChannel);
            }

            return(message);
        }