示例#1
0
        public async Task <CreateUserResponse> Handle(PrivateSession session, CreateUserRequest request, Func <PrivateConnection> connectionFactory)
        {
            var csrfToken = await session.CallAsync(MetaDataRequest.GetCrlfToken("mycompany/agents"));

            var createUserRequestEquivalentData = new JsonUser.CreateUserRequestEquivalentData
            {
                Name             = request.Name,
                AdminNewsMailFlg = request.AdminNewsMailFlg ? 1 : 0,
                ApprovalFlg      = request.ApprovalFlg ? 1 : 0,
                DeptId           = request.DeptId,
                EndDate          = request.EndDate,
                Language         = request.Language,
                Mail             = request.Mail,
                Mobile           = request.Mobile,
                MobileMail       = request.MobileMail,
                NewsMailFlg      = request.NewsMailFlg ? 1 : 0,
                StartDate        = request.StartDate,
                Tel      = request.Tel,
                TimeZone = request.TimeZone,
                Username = request.Username,
                Role     = request.Administrator ? "admin" : "user"
            };
            var requestModel = new JsonUser.CreateUserRequestEquivalent
            {
                User      = createUserRequestEquivalentData,
                CsrfToken = csrfToken
            };

            using (var connection = connectionFactory().AppendHook(PrivateConnectionHooks.ForceQuery(USER)).Method(PrivateConnectionMethod.Create))
            {
                try
                {
                    using (var response = await connection.SendAsync(requestModel))
                    {
                        var result = await response.ReadAsync <JsonUser.CreateEquivalentUserResponse>();

                        return(new CreateUserResponse(result.Id));
                    }
                }
                catch (ConnectionResponseException e)
                {
                    //FIXME this will not work correctly because response is not in privateapi format.
                    throw e.ToRequestException("Could not create a user", requestModel);
                }
            }
        }