Ejemplo n.º 1
0
        /// <summary>
        /// Changes username asynchronously.
        /// </summary>
        /// <param name="request">The <see cref="UsernameChangeRequest" /> instance.</param>
        /// <returns>Returns the <see cref="UsernameChangeResponse" /> instance.</returns>
        public async Task <UsernameChangeResponse> ChangeUsernameAsync(UsernameChangeRequest request)
        {
            var handler = this._handlers.SingleOrDefault(p => p.CanHandle(request));

            if (handler == null)
            {
                return(await Task.FromResult(default(UsernameChangeResponse)));
            }

            var ev = handler.CreateEvent(request) as UsernameChangedEvent;

            PopulateBaseProperties(ev);

            UsernameChangeResponse response;

            try
            {
                await this._processor.ProcessEventsAsync(new[] { ev });

                response = new UsernameChangeResponse()
                {
                    Data = new UsernameResponseData()
                    {
                        Value = request.Value
                    }
                };
            }
            catch (Exception ex)
            {
                response = new UsernameChangeResponse()
                {
                    Error = new ResponseError()
                    {
                        Message    = ex.Message,
                        StackTrace = ex.StackTrace,
                    }
                };
            }

            return(await Task.FromResult(response));
        }
        public virtual async Task <UsernameChangeResponse> SetUsername([FromBody] UsernameChangeRequest request)
        {
            var response = await this._service.ChangeUsernameAsync(request);

            return(response);
        }