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); }
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); }