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