public User Create(NewUserRequest user)
 {
     return new User()
     {
         Domain = new Domain() { Name = user.Domain },
         Login = user.Login,
         Name = string.Format("{0} {1} {2} ({3})", user.Surname, user.GivenName, user.Middlename, user.Login),
         DisplayName = string.Format("{0} {1} {2}", user.Surname, user.GivenName, user.Middlename),
         GivenName = user.GivenName,
         Surname = user.Surname,
         Info = user.Info
         //MiddleName = user.Middlename,
         //Type = new ObjectType() { Name = user.Type },
         //MailEnabled = user.Mail != 1 ? true : false
     };
 }
        public async Task<IHttpActionResult> CreateUser(NewUserRequest userModel)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            //Response _workflow = new Response();
            var _workflow = new CreateUserWorkflow(UserFactory.Create(userModel));

            try
            {
                //_workflow = await wf.User.Create(UserFactory.Create(userModel), null, userModel.Type);
                _workflow.Data.Add("template", userModel.Type);
                await _workflow.Start();

                if (_workflow.Succeed)
                {
                    //var _user = _workflow.Object as User;
                    //return CreatedAtRoute("GetUserById", new { id = _user.Id }, UserFactory.Create(_user, _workflow.State["Password"]));
                    var _user = _workflow.Result as User;
                    //return CreatedAtRoute("GetUserById", new { id = _user.Id }, UserFactory.Create(_user, _workflow.Data["password"]));
                    return CreatedAtRoute("GetUserById", new { id = _user.Id }, UserFactory.Create(_workflow));
                }
                else
                {
                    return GetErrorResult(_workflow);
                }
                
            }
            catch(Exception ex)
            {
                _workflow.Errors.Add(ex.Message);
                return GetErrorResult(_workflow);
            }
        }