@@ -6,26 +6,30 @@ package io.tolgee.api.v2.controllers.organization
6
6
7
7
import io.swagger.v3.oas.annotations.Operation
8
8
import io.swagger.v3.oas.annotations.tags.Tag
9
+ import io.tolgee.dtos.cacheable.LanguageDto
10
+ import io.tolgee.dtos.cacheable.OrganizationLanguageDto
11
+ import io.tolgee.dtos.request.language.LanguageFilters
9
12
import io.tolgee.exceptions.NotFoundException
10
13
import io.tolgee.facade.ProjectWithStatsFacade
14
+ import io.tolgee.hateoas.language.LanguageModel
15
+ import io.tolgee.hateoas.language.LanguageModelAssembler
16
+ import io.tolgee.hateoas.language.OrganizationLanguageModel
17
+ import io.tolgee.hateoas.language.OrganizationLanguageModelAssembler
11
18
import io.tolgee.hateoas.project.ProjectModel
12
19
import io.tolgee.hateoas.project.ProjectModelAssembler
13
20
import io.tolgee.hateoas.project.ProjectWithStatsModel
14
21
import io.tolgee.model.views.ProjectWithLanguagesView
15
22
import io.tolgee.security.authorization.UseDefaultPermissions
23
+ import io.tolgee.service.language.LanguageService
16
24
import io.tolgee.service.organization.OrganizationService
17
25
import io.tolgee.service.project.ProjectService
18
26
import org.springdoc.core.annotations.ParameterObject
19
27
import org.springframework.data.domain.Pageable
28
+ import org.springframework.data.domain.Sort
20
29
import org.springframework.data.web.PagedResourcesAssembler
21
30
import org.springframework.data.web.SortDefault
22
31
import org.springframework.hateoas.PagedModel
23
- import org.springframework.web.bind.annotation.CrossOrigin
24
- import org.springframework.web.bind.annotation.GetMapping
25
- import org.springframework.web.bind.annotation.PathVariable
26
- import org.springframework.web.bind.annotation.RequestMapping
27
- import org.springframework.web.bind.annotation.RequestParam
28
- import org.springframework.web.bind.annotation.RestController
32
+ import org.springframework.web.bind.annotation.*
29
33
30
34
@RestController
31
35
@CrossOrigin(origins = [" *" ])
@@ -38,6 +42,9 @@ class OrganizationProjectController(
38
42
private val projectService : ProjectService ,
39
43
private val projectModelAssembler : ProjectModelAssembler ,
40
44
private val projectWithStatsFacade : ProjectWithStatsFacade ,
45
+ private val languageService : LanguageService ,
46
+ private val organizationLanguageModelAssembler : OrganizationLanguageModelAssembler ,
47
+ private val pagedAssembler : PagedResourcesAssembler <OrganizationLanguageDto >,
41
48
) {
42
49
@GetMapping(" /{id:[0-9]+}/projects" )
43
50
@Operation(
@@ -111,5 +118,21 @@ class OrganizationProjectController(
111
118
} ? : throw NotFoundException ()
112
119
}
113
120
114
- // TODO: get getAllLanguagesInUse - for glossaries
121
+ @Operation(
122
+ summary = " Get all languages in use by projects owned by specified organization" ,
123
+ description = " Returns all languages in use by projects owned by specified organization" ,
124
+ )
125
+ @GetMapping(" /{organizationId:[0-9]+}/languages" )
126
+ @UseDefaultPermissions
127
+ fun getAllLanguagesInUse (
128
+ @ParameterObject
129
+ @SortDefault(" base" , direction = Sort .Direction .DESC )
130
+ @SortDefault(" tag" , direction = Sort .Direction .ASC )
131
+ pageable : Pageable ,
132
+ @RequestParam(" search" ) search : String? ,
133
+ @PathVariable organizationId : Long ,
134
+ ): PagedModel <OrganizationLanguageModel > {
135
+ val languages = languageService.getPagedByOrganization(organizationId, pageable, search)
136
+ return pagedAssembler.toModel(languages, organizationLanguageModelAssembler)
137
+ }
115
138
}
0 commit comments