// TODO: This should be refactored in task-based way. No PutUser, but ChangeEmail // PUT api/User //[ResponseType(typeof(User))] //public async Task<IHttpActionResult> PutUser(User user) public IHttpActionResult PutUser(ChangeUserEmailViewModel changeEmail) { if (!ModelState.IsValid) { return BadRequest(ModelState); } string userName = User.Identity.GetUserName(); if (userName.Equals(changeEmail.UserName)) { CommandWorker.ChangeUserEmail(changeEmail); } else { return BadRequest(ModelState); } return Ok(); //ChangeUserEmailViewModel changeEmail = new ChangeUserEmailViewModel() //{ // UserId = user.UserId, // UserName = user.UserName, // Email = user.Email //}; //User cUser = await db.Users.Where(u => u.UserName.Equals(userName)).FirstAsync<Mag14.discitur.Models.User>(); //if (cUser.UserId != user.UserId) //{ // return BadRequest(); //} //cUser.Email = user.Email; //db.Entry(cUser).State = EntityState.Modified; //try //{ // await db.SaveChangesAsync(); //} //catch (DbUpdateConcurrencyException) //{ // if (!UserExists(user.UserId)) // { // return NotFound(); // } // else // { // throw; // } //} //return Ok(cUser); }
public void ChangeUserEmail(ChangeUserEmailViewModel model) { Guid userId = database.IdMaps.GetAggregateId<User>(model.UserId); bus.Send(new ChangeUserEmailCommand(userId, model.Email, model.UserName)); }