コード例 #1
0
        public async Task <RequestResult <UserResponse> > Handle(CreateUserRequest request, CancellationToken cancellationToken)
        {
            try
            {
                // can only have one user with an email address, enforced by db but fail fast here...
                var existingUser = await _ctx.Users.FirstOrDefaultAsync(x => x.Email == request.Email);

                if (existingUser != null)
                {
                    return(RequestResult.Error <UserResponse>());
                }
                var user = _mapper.Map <User>(request);
                user.Active = true;
                await _ctx.Users.AddAsync(user);

                await _ctx.SaveChangesAsync();

                var createdUser = await _ctx.Users.FirstOrDefaultAsync(x => x.Email == request.Email);

                if (createdUser == null)
                {
                    _logger.LogError("user not found after creation");
                    return(RequestResult.Error <UserResponse>());
                }

                var response = _mapper.Map <UserResponse>(createdUser);

                return(RequestResult.Success(response));
            }
            catch (Exception ex)
            {
                _logger.LogError("Error creating user", ex);
                return(RequestResult.Error <UserResponse>());
            }
        }
コード例 #2
0
        public async Task <RequestResult <UserResponse> > Handle(PatchUserProfileRequest request, CancellationToken cancellationToken)
        {
            try
            {
                var user = await _ctx.Users.FirstOrDefaultAsync(x => x.Id == request.Id);

                if (user == null)
                {
                    _logger.LogError("user not found");
                    return(RequestResult.Error <UserResponse>());
                }

                user.UserProfile = request.ProfileContent;
                await _ctx.SaveChangesAsync();

                var updatedUser = await _ctx.Users.FirstOrDefaultAsync(x => x.Id == request.Id);

                if (updatedUser == null)
                {
                    _logger.LogError("user not found after update");
                    return(RequestResult.Error <UserResponse>());
                }

                var response = _mapper.Map <UserResponse>(updatedUser);

                return(RequestResult.Success(response));
            }
            catch (Exception ex)
            {
                _logger.LogError("Error updating user profile user", ex);
                return(RequestResult.Error <UserResponse>());
            }
        }
コード例 #3
0
        public async Task <RequestResult <RunActivityResponse> > Handle(AddRunActivityRequest request, CancellationToken cancellationToken)
        {
            try
            {
                var activity = _mapper.Map <RunActivity>(request);
                await _ctx.RunActivities.AddAsync(activity);

                await _ctx.SaveChangesAsync();

                var createdActivity = await _ctx.RunActivities.FindAsync(activity.Id);

                if (createdActivity == null)
                {
                    _logger.LogError("activity not found after creation");
                    return(RequestResult.Error <RunActivityResponse>());
                }

                var response = _mapper.Map <RunActivityResponse>(createdActivity);

                return(RequestResult.Success(response));
            }
            catch (Exception ex)
            {
                _logger.LogError("Error creating run activity", ex);
                return(RequestResult.Error <RunActivityResponse>());
            }
        }