Beispiel #1
0
        public async Task <OperationResultResponse <WorkspaceInfo> > ExecuteAsync(GetWorkspaceFilter filter)
        {
            DbWorkspace dbWorkspace = await _repository.GetAsync(filter);

            if (dbWorkspace is null)
            {
                return(_responseCreator.CreateFailureResponse <WorkspaceInfo>(HttpStatusCode.NotFound));
            }

            if (!dbWorkspace.Users.Select(u => u.UserId).Contains(_httpContextAccessor.HttpContext.GetUserId()))
            {
                return(_responseCreator.CreateFailureResponse <WorkspaceInfo>(HttpStatusCode.Forbidden));
            }

            OperationResultResponse <WorkspaceInfo> response = new();

            List <UserData> usersData = await GetUsersAsync(dbWorkspace.Users?.Select(u => u.UserId).ToList(), response.Errors);

            List <ImageInfo> imagesInfo = (await GetImagesAsync(
                                               usersData?.Where(u => u.ImageId.HasValue).Select(u => u.ImageId.Value).ToList(),
                                               response.Errors))
                                          ?.Select(_imageMapper.Map).ToList();

            response.Status = response.Errors.Any() ? OperationResultStatusType.PartialSuccess : OperationResultStatusType.FullSuccess;
            response.Body   = _workspaceInfoMapper.Map(
                dbWorkspace,
                usersData?.Select(u => _userMapper.Map(u, imagesInfo?.FirstOrDefault(i => i.Id == u.ImageId))).ToList());

            return(response);
        }
Beispiel #2
0
 public async Task <OperationResultResponse <WorkspaceInfo> > GetAsync(
     [FromServices] IGetWorkspaceCommand command,
     [FromQuery] GetWorkspaceFilter filter)
 {
     return(await command.ExecuteAsync(filter));
 }