Skip to content

Commit

Permalink
Merge pull request #16 from bb-io/develop
Browse files Browse the repository at this point in the history
Added find project member action
  • Loading branch information
ce-nistal authored Oct 7, 2024
2 parents bacaf42 + 0786d41 commit 95304d7
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 16 deletions.
40 changes: 33 additions & 7 deletions Apps.Crowdin/Actions/UserActions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ public UserActions(InvocationContext invocationContext) : base(invocationContext
{
}

[Action("Search users in project", Description = "Returns all matching project members")]
public async Task<SearchUsersResponse> SearchProjectUsers([ActionParameter] SearchUsersRequest input)
[Action("Search project members", Description = "Get all matching project members")]
public async Task<SearchUsersResponse> SearchProjectMembers([ActionParameter] SearchUsersRequest input)
{

var client = new CrowdinRestClient();
Expand All @@ -36,17 +36,43 @@ public async Task<SearchUsersResponse> SearchProjectUsers([ActionParameter] Sear
new CrowdinRestRequest(
$"/projects/{input.ProjectId}/members?limit={lim}&offset={offset}",
Method.Get, Creds);
request.AddQueryParameter("role", input.Role);
if (input.Role != null)
{ request.AddQueryParameter("role", input.Role); }
if (input.LanguageId != null)
{ request.AddQueryParameter("languageId", input.LanguageId); }
var response = await client.ExecuteAsync(request);
return JsonConvert.DeserializeObject<ResponseList<DataResponse<AssigneeEntity>>>(response.Content);
});


var users = items.Select(x => new AssigneeEntity(x)).ToArray();
return new(users);
var users = items.Select(x => x.Data).ToArray();
return new SearchUsersResponse(users) ;
}


[Action("Find project member", Description = "Get first matching project member")]
public async Task<AssigneeEntity> FindProjectUsers([ActionParameter] FindUserRequest input)
{

var client = new CrowdinRestClient();
var items = await Paginator.Paginate(async (lim, offset)
=>
{
var request =
new CrowdinRestRequest(
$"/projects/{input.ProjectId}/members?limit={lim}&offset={offset}",
Method.Get, Creds);
if (input.Role != null)
{ request.AddQueryParameter("role", input.Role); }
if (input.LanguageId != null)
{ request.AddQueryParameter("languageId", input.LanguageId); }
if (input.search != null)
{ request.AddQueryParameter("search", input.search); }
var response = await client.ExecuteAsync(request);
return JsonConvert.DeserializeObject<ResponseList<DataResponse<AssigneeEntity>>>(response.Content);
});

var users = items.Select(x => x.Data).ToArray();
return users.FirstOrDefault();
}

}

2 changes: 1 addition & 1 deletion Apps.Crowdin/Apps.Crowdin.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<Nullable>enable</Nullable>
<Product>Crowdin</Product>
<Description>Cloud-based solution that streamlines localization management</Description>
<Version>1.0.12</Version>
<Version>1.0.13</Version>
<AssemblyName>Apps.Crowdin</AssemblyName>
</PropertyGroup>
<ItemGroup>
Expand Down
7 changes: 0 additions & 7 deletions Apps.Crowdin/Models/Entities/AssigneEntity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,6 @@ namespace Apps.Crowdin.Models.Entities;

public class AssigneeEntity
{
private DataResponse<AssigneeEntity> x;

public AssigneeEntity(DataResponse<AssigneeEntity> x)
{
this.x = x;
}

public string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
Expand Down
16 changes: 16 additions & 0 deletions Apps.Crowdin/Models/Request/Users/FindUserRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using Apps.Crowdin.DataSourceHandlers;
using Apps.Crowdin.DataSourceHandlers.EnumHandlers;
using Blackbird.Applications.Sdk.Common;
using Blackbird.Applications.Sdk.Common.Dictionaries;
using Blackbird.Applications.Sdk.Common.Dynamic;
using System.ComponentModel;

namespace Apps.Crowdin.Models.Request.Users
{
public class FindUserRequest : SearchUsersRequest
{
[Display("Name"), Description("Search by username, first name or last name")]
public string? search { get; set; }

}
}
2 changes: 1 addition & 1 deletion Apps.Crowdin/Models/Request/Users/SearchUsersRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class SearchUsersRequest
public string? LanguageId { get; set; }

[StaticDataSource(typeof(UserRoleHandler))]
public string Role { get; set; }
public string? Role { get; set; }

}
}
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,11 @@ Crowdin is a cloud-based localization platform that helps businesses and organiz
- **Get translation memory** Get specific translation memory
- **List translation memories** List all translation memories

### Users

- **Search project members** Get all matching project members. Filter by role or language.
- **Find project member** Get first matching project member. Filter by role, language or username/fist name/last name.

## Events

### Comment
Expand Down

0 comments on commit 95304d7

Please sign in to comment.