1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2018 Make.org
4  *
5  * This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Affero General Public License as
7  *  published by the Free Software Foundation, either version 3 of the
8  *  License, or (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Affero General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Affero General Public License
16  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  *
18  */
19 
20 package org.make.api.organisation
21 
22 import org.make.api.proposal._
23 import org.make.api.user.RegisterData
24 import org.make.core.common.indexed.Sort
25 import org.make.core.proposal.{CountrySearchFilter => _, LanguageSearchFilter => _, _}
26 import org.make.core.reference.{Country, Language}
27 import org.make.core.user._
28 import org.make.core.user.indexed.OrganisationSearchResult
29 import org.make.core.{Order, RequestContext}
30 
31 import scala.concurrent.Future
32 import org.make.core.technical.Pagination
33 
34 trait OrganisationServiceComponent {
35   def organisationService: OrganisationService
36 }
37 
38 trait OrganisationService {
39   def getOrganisation(id: UserId): Future[Option[User]]
40   def getOrganisations: Future[Seq[User]]
41   def find(
42     offset: Pagination.Offset,
43     end: Option[Pagination.End],
44     sort: Option[String],
45     order: Option[Order],
46     ids: Option[Seq[UserId]],
47     organisationName: Option[String]
48   ): Future[Seq[User]]
49   def count(ids: Option[Seq[UserId]], organisationName: Option[String]): Future[Int]
50   def search(
51     organisationName: Option[String],
52     slug: Option[String],
53     organisationIds: Option[Seq[UserId]],
54     country: Option[Country],
55     language: Option[Language]
56   ): Future[OrganisationSearchResult]
57   def searchWithQuery(query: OrganisationSearchQuery): Future[OrganisationSearchResult]
58   def register(organisationRegisterData: OrganisationRegisterData, requestContext: RequestContext): Future[User]
59   def update(
60     organisation: User,
61     moderatorId: Option[UserId],
62     oldEmail: String,
63     requestContext: RequestContext
64   ): Future[UserId]
65   def getVotedProposals(
66     organisationId: UserId,
67     maybeUserId: Option[UserId],
68     filterVotes: Option[Seq[VoteKey]],
69     filterQualifications: Option[Seq[QualificationKey]],
70     sort: Option[Sort],
71     limit: Option[Pagination.Limit],
72     offset: Option[Pagination.Offset],
73     requestContext: RequestContext
74   ): Future[ProposalsResultWithUserVoteSeededResponse]
75 }
76 
77 final case class OrganisationRegisterData(
78   name: String,
79   email: String,
80   password: Option[String],
81   avatar: Option[String],
82   description: Option[String],
83   country: Country,
84   language: Language,
85   website: Option[String]
86 ) extends RegisterData {
87   def trim: OrganisationRegisterData = copy(email = email.trim)
88 }
Line Stmt Id Pos Tree Symbol Tests Code
87 30055 2987 - 2987 Select org.make.api.organisation.OrganisationRegisterData.copy$default$5 org.make.api.organisation.organisationservicetest OrganisationRegisterData.this.copy$default$5
87 28712 2987 - 2987 Select org.make.api.organisation.OrganisationRegisterData.copy$default$4 org.make.api.organisation.organisationservicetest OrganisationRegisterData.this.copy$default$4
87 28484 2987 - 2987 Select org.make.api.organisation.OrganisationRegisterData.copy$default$7 org.make.api.organisation.organisationservicetest OrganisationRegisterData.this.copy$default$7
87 29952 2987 - 2987 Select org.make.api.organisation.OrganisationRegisterData.copy$default$1 org.make.api.organisation.organisationservicetest OrganisationRegisterData.this.copy$default$1
87 30209 2987 - 2987 Select org.make.api.organisation.OrganisationRegisterData.copy$default$8 org.make.api.organisation.organisationservicetest OrganisationRegisterData.this.copy$default$8
87 29270 2987 - 2987 Select org.make.api.organisation.OrganisationRegisterData.copy$default$6 org.make.api.organisation.organisationservicetest OrganisationRegisterData.this.copy$default$6
87 29120 2987 - 2987 Select org.make.api.organisation.OrganisationRegisterData.copy$default$3 org.make.api.organisation.organisationservicetest OrganisationRegisterData.this.copy$default$3
87 29413 2987 - 3011 Apply org.make.api.organisation.OrganisationRegisterData.copy org.make.api.organisation.organisationservicetest OrganisationRegisterData.this.copy(x$2, x$1, x$3, x$4, x$5, x$6, x$7, x$8)
87 28575 3000 - 3010 Apply java.lang.String.trim org.make.api.organisation.organisationservicetest OrganisationRegisterData.this.email.trim()