Пример #1
0
        public HttpResponseMessage Register(RegisterViewModel registerModel)
        {
            // check if user already exists
            var user = dbContext.Users.SingleOrDefault(u => u.Name == registerModel.Name);
            HttpResponseMessage response = new HttpResponseMessage();

            if (user != null)
            {
                response = Request.CreateErrorResponse(HttpStatusCode.BadRequest,
                                                       $"Name = {registerModel.Name} already in use");
                return(response);
            }
            user = new User
            {
                Name      = registerModel.Name,
                Password  = registerModel.Password,
                AvatarUrl = registerModel.AvatarUrl
            };
            dbContext.Users.Add(user);
            dbContext.SaveChanges();
            user     = dbContext.Users.SingleOrDefault(u => u.Name == registerModel.Name);
            response = Request.CreateResponse(HttpStatusCode.OK, new
            {
                status = "registered",
                user   = new AccountViewModel
                {
                    Id        = user.UserId,
                    Name      = user.Name,
                    Password  = user.Password,
                    AvatarUrl = user.AvatarUrl
                }
            });
            return(response);
        }
Пример #2
0
        public HttpResponseMessage SendMessage(int userId, SendMessageViewModel model)
        {
            var sender = dbContext.Users.Find(userId);

            if (sender == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "User not found"));
            }
            var receiver = dbContext.Users.Find(model.ReceiverId);

            if (receiver == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "User not found"));
            }
            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
            var message = new Message
            {
                Text   = model.Text,
                User   = sender,
                UserId = sender.UserId
            };
            // find dialog
            var dialog = sender.Dialogs.SingleOrDefault(d => d.Users.Contains(receiver));

            if (dialog == null)
            {
                dialog = new Dialog();
                //dbContext.Dialogs.Add(dialog);
                //dbContext.SaveChanges();
            }
            dialog.Users.Add(sender);
            dialog.Users.Add(receiver);
            dialog.Messages.Add(message);
            //dbContext.Entry(dialog).State = EntityState.Modified;
            message.Dialog   = dialog;
            message.DialogId = dialog.DialogId;
            dbContext.Messages.Add(message);
            dbContext.SaveChanges();

            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, new
            {
                status = "delivered"
            });

            return(response);
        }