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