Exemple #1
0
        public IHttpActionResult PostChannelMessage(string channelName, [FromBody] ChannelMessageBindingModel channelMessageModel)
        {
            var userId = User.Identity.GetUserId();

            var  channel = db.Channels.FirstOrDefault(c => c.Name == channelName);
            User user    = null;

            if (userId != null)
            {
                user = db.Users.Find(userId);
            }

            if (channel == null)
            {
                return(NotFound());
            }

            if (channelMessageModel == null)
            {
                return(BadRequest("Null text"));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            if (user == null && userId != null)
            {
                return(Unauthorized());
            }

            var channelMessage = new ChannelMessage()
            {
                Text     = channelMessageModel.Text,
                DateSent = DateTime.Now,
                Sender   = user
            };

            channel.ChannelMessages.Add(channelMessage);

            db.SaveChanges();

            if (user == null)
            {
                return(this.Ok(new
                {
                    Id = channelMessage.Id,
                    Message = "Anonymous message sent to channel " + channel.Name + "."
                }));
            }

            return(this.Ok(new
            {
                Id = channelMessage.Id,
                Sender = user.UserName,
                Message = "Message sent to channel " + channel.Name + "."
            }));
        }
Exemple #2
0
        public IHttpActionResult PostAnonymoustMessage([FromUri] string channelName, [FromBody] ChannelMessageBindingModel model)
        {
            if (string.IsNullOrEmpty(channelName) || model == null || !this.ModelState.IsValid)
            {
                return(this.BadRequest());
            }

            var dbChannel = this.Data.Channels.FirstOrDefault(c => c.Name == channelName);

            if (dbChannel == null)
            {
                return(this.NotFound());
            }

            if (this.User.Identity.IsAuthenticated)
            {
                var userId  = this.User.Identity.GetUserId();
                var dbUser  = this.Data.Users.First(u => u.Id == userId);
                var message = new ChannelMessage()
                {
                    DateSent = DateTime.Now,
                    Sender   = dbUser,
                    Text     = model.Text
                };
                dbChannel.ChannelMessages.Add(message);
                this.Data.SaveChanges();

                var viewModel = new ChannelMessageCreateWithUserViewModel()
                {
                    Id      = message.Id,
                    Sender  = message.Sender.UserName,
                    Message = "Message sent to channel " + dbChannel.Name + "."
                };
                return(this.Ok(viewModel));
            }
            else
            {
                var message = new ChannelMessage()
                {
                    DateSent = DateTime.Now,
                    Sender   = null,
                    Text     = model.Text
                };
                dbChannel.ChannelMessages.Add(message);
                this.Data.SaveChanges();

                var viewModel = new ChannelMessageCreateViewModel()
                {
                    Id      = message.Id,
                    Message = "Anonymous message sent to channel " + dbChannel.Name + "."
                };
                return(this.Ok(viewModel));
            }
        }
Exemple #3
0
        public IHttpActionResult SendChannelMessage(
            string channelName, ChannelMessageBindingModel channelMessageData)
        {
            if (channelMessageData == null)
            {
                return(BadRequest("Missing message data."));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var channel = db.Channels.All().FirstOrDefault(c => c.Name == channelName);

            if (channel == null)
            {
                return(this.NotFound());
            }

            var currentUserId = User.Identity.GetUserId();
            var currentUser   = this.db.Users.Find(currentUserId);

            var message = new ChannelMessage()
            {
                Text       = channelMessageData.Text,
                Channel    = channel,
                DateSent   = DateTime.Now,
                SenderUser = currentUser
            };

            db.ChannelMessages.Add(message);
            db.SaveChanges();

            if (message.SenderUser == null)
            {
                return(this.Ok(
                           new
                {
                    message.Id,
                    Message = "Anonymous message sent successfully to channel " + channelName + "."
                }
                           ));
            }

            return(this.Ok(
                       new
            {
                message.Id,
                Sender = message.SenderUser.UserName,
                Message = "Message sent successfully to channel " + channelName + "."
            }
                       ));
        }
Exemple #4
0
        public IHttpActionResult PostMessage(string channelName, ChannelMessageBindingModel model)
        {
            if (model == null)
            {
                return(this.BadRequest());
            }

            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var channel = this.Data.Channels
                          .FirstOrDefault(x => x.Name == channelName);

            if (channel == null)
            {
                return(this.BadRequest("No existing channel"));
            }

            var channelMessage = new ChannelMessage
            {
                Text      = model.Text,
                ChannelId = channel.Id
            };

            if (this.User.Identity.IsAuthenticated)
            {
                channelMessage.UserId = this.User.Identity.GetUserId();
            }

            this.Data.ChannelMessages.Add(channelMessage);
            this.Data.SaveChanges();

            return(this.CreatedAtRoute("GetById", new { id = channelMessage.Id }, ChannelMessageDataModel.ReturnFix(channelMessage)));

//            //return this.Ok("message created");
//            return this.CreatedAtRoute("GetById", new { id = channelMessage.Id },
//                this.Data.ChannelMessages
//                .Where(x => x.Id == channelMessage.Id)
//                .Select(ChannelMessageDataModel.DataModel)
//                .FirstOrDefault());
        }
        public IHttpActionResult PostChannelMessage(string channelName, ChannelMessageBindingModel channelMessageData)
        {
            if (channelMessageData == null)
            {
                return(this.BadRequest("Missing message data."));
            }

            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var channel = this.Data.Channels.All().FirstOrDefault(c => c.Name == channelName);

            if (channel == null)
            {
                return(this.NotFound());
            }

            var loggedUserId = this.User.Identity.GetUserId();
            var loggedUser   = this.Data.Users.Find(loggedUserId);

            var message = new ChannelMessage
            {
                Text        = channelMessageData.Text,
                FileContent = channelMessageData.FileContent,
                ChannelId   = channel.Id,
                Date        = DateTime.Now,
                SenderId    = loggedUser.Id
            };

            this.Data.ChannelMessages.Add(message);
            this.Data.SaveChanges();

            return(this.Ok(ChannelMessageViewModel.CreateSingleView(message)));
        }