Exemplo n.º 1
0
        public WorkspaceInfo Map(DbWorkspace dbWorkspace, List <UserInfo> users)
        {
            if (dbWorkspace is null)
            {
                return(null);
            }

            ImageConsist image = dbWorkspace.ImageContent is null
        ? null
        : new() { Content = dbWorkspace.ImageContent, Extension = dbWorkspace.ImageExtension };

            return(new WorkspaceInfo
            {
                Id = dbWorkspace.Id,
                Name = dbWorkspace.Name,
                Description = dbWorkspace.Description,
                Image = image,
                CreatedAtUtc = dbWorkspace.CreatedAtUtc,
                CreatedBy = users?.FirstOrDefault(u => u.Id == dbWorkspace.CreatedBy),
                IsActive = dbWorkspace.IsActive,
                Channels = dbWorkspace.Channels?
                           .Select(_channelInfoMapper.Map).ToList(),
                Users = users?
                        .Where(u => dbWorkspace.Users.Any(wu => wu.UserId == u.Id)).ToList()
            });
        }
    }
        public async Task <JsonPatchDocument <DbWorkspace> > MapAsync(JsonPatchDocument <EditWorkspaceRequest> request)
        {
            if (request is null)
            {
                return(null);
            }

            JsonPatchDocument <DbWorkspace> result = new();

            foreach (var item in request.Operations)
            {
                if (item.path.EndsWith(nameof(EditWorkspaceRequest.Image), StringComparison.OrdinalIgnoreCase))
                {
                    ImageConsist image = JsonConvert.DeserializeObject <ImageConsist>(item.value.ToString());
                    (bool _, string resizedContent, string extension) = await _resizeHelper.ResizeAsync(
                        image.Content, image.Extension);

                    result.Operations.Add(new Operation <DbWorkspace>(item.op, nameof(DbWorkspace.ImageContent), item.from, resizedContent));
                    result.Operations.Add(new Operation <DbWorkspace>(item.op, nameof(DbWorkspace.ImageExtension), item.from, extension));

                    continue;
                }

                result.Operations.Add(new Operation <DbWorkspace>(item.op, item.path, item.from, item.value));
            }

            return(result);
        }
        public ChannelInfo Map(DbChannel dbChannel, List <MessageInfo> messages, List <UserInfo> users)
        {
            if (dbChannel is null)
            {
                return(null);
            }

            ImageConsist image = dbChannel.ImageContent is null
        ? null
        : new() { Content = dbChannel.ImageContent, Extension = dbChannel.ImageExtension };

            return(new()
            {
                Id = dbChannel.Id,
                Avatar = image,
                Name = dbChannel.Name,
                IsPrivate = dbChannel.IsPrivate,
                Messages = messages,
                Users = users
            });
        }
    }