Skip to content

Commit

Permalink
TRELLO-2881 document endpoints (and remove some unused ones)
Browse files Browse the repository at this point in the history
  • Loading branch information
eletallbetagouv authored Jan 28, 2025
1 parent 8bb2140 commit 1713b66
Show file tree
Hide file tree
Showing 10 changed files with 240 additions and 353 deletions.
17 changes: 0 additions & 17 deletions app/controllers/StaticController.scala

This file was deleted.

28 changes: 0 additions & 28 deletions app/controllers/StatisticController.scala
Original file line number Diff line number Diff line change
Expand Up @@ -74,34 +74,6 @@ class StatisticController(
)
}

def getPublicStatCount(publicStat: PublicStat) = IpRateLimitedAction2.async {
((publicStat.filter, publicStat.percentageBaseFilter) match {
case (filter, Some(percentageBaseFilter)) =>
statsOrchestrator.getReportCountPercentageWithinReliableDates(None, filter, percentageBaseFilter)
case (filter, _) =>
statsOrchestrator.getReportCount(None, filter)
}).map(curve => Ok(Json.toJson(curve)))
}

def getPublicStatCurve(publicStat: PublicStat) = IpRateLimitedAction2.async {
((publicStat.filter, publicStat.percentageBaseFilter) match {
case (filter, Some(percentageBaseFilter)) =>
statsOrchestrator.getReportsCountPercentageCurve(None, filter, percentageBaseFilter)
case (filter, _) =>
statsOrchestrator.getReportsCountCurve(None, filter)
}).map(curve => Ok(Json.toJson(curve)))
}

def getDelayReportReadInHours(companyId: Option[UUID]) = SecuredAction
.andThen(
WithRole(UserRole.AdminsAndReadOnlyAndCCRF)
)
.async {
statsOrchestrator
.getReadAvgDelay(companyId)
.map(count => Ok(Json.toJson(StatsValue(count.map(_.toHours.toInt)))))
}

def getDelayReportResponseInHours(companyId: Option[UUID]) = SecuredAction.async { request =>
statsOrchestrator
.getResponseAvgDelay(companyId: Option[UUID], request.identity.userRole)
Expand Down
8 changes: 0 additions & 8 deletions app/controllers/package.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import play.api.mvc.PathBindable
import play.api.mvc.QueryStringBindable
import play.api.mvc.Request
import cats.syntax.either._
import models.PublicStat
import models.extractUUID
import models.report.ReportFileOrigin
import models.report.ReportResponseType
Expand Down Expand Up @@ -91,13 +90,6 @@ package object controllers {
reportAdminActionType => reportAdminActionType.entryName
)

implicit val PublicStatQueryStringBindable: QueryStringBindable[PublicStat] =
QueryStringBindable.bindableString
.transform[PublicStat](
publicStat => PublicStat.withNameInsensitive(publicStat),
publicStat => publicStat.entryName
)

implicit class RequestOps[T <: JsValue](request: Request[T])(implicit ec: ExecutionContext) {
def parseBody[B](path: JsPath = JsPath())(implicit reads: Reads[B]) = request.body
.validate[B](path.read[B])
Expand Down
45 changes: 21 additions & 24 deletions app/loader/SignalConsoApplicationLoader.scala
Original file line number Diff line number Diff line change
Expand Up @@ -895,8 +895,6 @@ class SignalConsoComponents(
controllerComponents
)

val staticController = new StaticController(cookieAuthenticator, controllerComponents)

val statisticController = new StatisticController(statsOrchestrator, cookieAuthenticator, controllerComponents)

val subscriptionOrchestrator = new SubscriptionOrchestrator(subscriptionRepository)
Expand Down Expand Up @@ -948,38 +946,37 @@ class SignalConsoComponents(
new _root_.router.Routes(
httpErrorHandler,
new HealthController(controllerComponents),
staticController,
statisticController,
companyAccessController,
reportListController,
reportFileController,
assets,
reportController,
socialNetworkController,
barcodeController,
reportConsumerReviewController,
eventsController,
engagementController,
emailValidationController,
ratingController,
constantController,
reportListController,
bookmarkController,
reportToExternalController,
dataEconomieController,
adminController,
asyncFileController,
constantController,
socialNetworkController,
mobileAppController,
eventsController,
reportFileController,
adminController,
statisticController,
companyAccessController,
authController,
accountController,
emailValidationController,
blacklistedEmailsController,
companyController,
ratingController,
importController,
reportBlockedNotificationController,
subscriptionController,
websiteController,
reportedPhoneController,
reportBlockedNotificationController,
blacklistedEmailsController,
signalConsoReviewController,
siretExtractorController,
importController,
barcodeController,
engagementController,
assets
reportedPhoneController,
mobileAppController,
reportToExternalController,
dataEconomieController,
signalConsoReviewController
)

def scheduleTasks() = {
Expand Down
38 changes: 0 additions & 38 deletions app/models/Statistics.scala
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
package models

import enumeratum.EnumEntry
import enumeratum.PlayEnum
import models.report.ReportStatus.statusReadByPro
import models.report.ReportStatus.statusWithProResponse
import models.report.ReportFilter
import models.report.ReportFilter.allReportsFilter
import models.report.ReportFilter.transmittedReportsFilter
import models.report.ReportStatus

import java.time.LocalDate
import play.api.libs.json.Json
import play.api.libs.json.OFormat
Expand Down Expand Up @@ -37,32 +28,3 @@ case class ReportReviewStats(
object ReportReviewStats {
implicit val format: OFormat[ReportReviewStats] = Json.format[ReportReviewStats]
}

sealed abstract class PublicStat(val filter: ReportFilter, val percentageBaseFilter: Option[ReportFilter] = None)
extends EnumEntry

object PublicStat extends PlayEnum[PublicStat] {
lazy val values = findValues
case object PromesseAction extends PublicStat(ReportFilter(status = Seq(ReportStatus.PromesseAction)))
case object Reports extends PublicStat(allReportsFilter)
case object TransmittedPercentage
extends PublicStat(
transmittedReportsFilter,
Some(allReportsFilter)
)
case object ReadPercentage
extends PublicStat(
ReportFilter(status = statusReadByPro),
Some(transmittedReportsFilter)
)
case object ResponsePercentage
extends PublicStat(
ReportFilter(status = statusWithProResponse),
Some(ReadPercentage.filter)
)
case object WebsitePercentage
extends PublicStat(
ReportFilter(hasWebsite = Some(true)),
Some(allReportsFilter)
)
}
30 changes: 0 additions & 30 deletions app/orchestrators/StatsOrchestrator.scala
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import models.report.delete.ReportAdminActionType
import models.report.review.ResponseEvaluation
import orchestrators.StatsOrchestrator.computeStartingDate
import orchestrators.StatsOrchestrator.formatStatData
import orchestrators.StatsOrchestrator.restrictToReliableDates
import orchestrators.StatsOrchestrator.toPercentage
import repositories.accesstoken.AccessTokenRepositoryInterface
import repositories.event.EventRepositoryInterface
Expand Down Expand Up @@ -126,17 +125,6 @@ class StatsOrchestrator(
baseCount <- reportRepository.count(user, basePercentageFilter)
} yield toPercentage(count, baseCount)

def getReportCountPercentageWithinReliableDates(
user: Option[User],
filter: ReportFilter,
basePercentageFilter: ReportFilter
): Future[Int] =
getReportCountPercentage(
user,
restrictToReliableDates(filter),
restrictToReliableDates(basePercentageFilter)
)

def getReportsCountCurve(
user: Option[User],
reportFilter: ReportFilter,
Expand All @@ -149,21 +137,6 @@ class StatsOrchestrator(
case CurveTickDuration.Day => reportRepository.getDailyCount(user, reportFilter, ticks)
}

def getReportsCountPercentageCurve(
user: Option[User],
reportFilter: ReportFilter,
baseFilter: ReportFilter
): Future[Seq[CountByDate]] =
for {
rawCurve <- getReportsCountCurve(user, reportFilter)
baseCurve <- getReportsCountCurve(user, baseFilter)
} yield rawCurve.sortBy(_.date).zip(baseCurve.sortBy(_.date)).map { case (a, b) =>
CountByDate(
count = toPercentage(a.count, b.count),
date = a.date
)
}

def getReportsTagsDistribution(companyId: Option[UUID], user: User): Future[Map[ReportTag, Int]] =
reportRepository.getReportsTagsDistribution(companyId, user)

Expand Down Expand Up @@ -195,9 +168,6 @@ class StatsOrchestrator(
}
}

def getReadAvgDelay(companyId: Option[UUID] = None) =
eventRepository.getAvgTimeUntilEvent(ActionEvent.REPORT_READING_BY_PRO, companyId)

def getResponseAvgDelay(companyId: Option[UUID] = None, userRole: UserRole): Future[Option[Duration]] = {
val onlyProShareable = userRole == UserRole.Professionnel
eventRepository.getAvgTimeUntilEvent(
Expand Down
59 changes: 0 additions & 59 deletions app/views/api.scala.html

This file was deleted.

4 changes: 1 addition & 3 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ routesImport ++= Seq(
"models.report.reportfile.ReportFileId",
"models.report.ReportResponseType",
"models.report.delete.ReportAdminActionType",
"models.PublicStat",
"controllers.IdentificationStatusQueryStringBindable",
"controllers.WebsiteIdPathBindable",
"controllers.UUIDPathBindable",
Expand All @@ -48,8 +47,7 @@ routesImport ++= Seq(
"controllers.ReportFileIdPathBindable",
"controllers.ReportResponseTypeQueryStringBindable",
"controllers.ReportAdminActionTypeQueryStringBindable",
"controllers.ReportFileOriginQueryStringBindable",
"controllers.PublicStatQueryStringBindable"
"controllers.ReportFileOriginQueryStringBindable"
)

semanticdbVersion := scalafixSemanticdb.revision
Expand Down
Loading

0 comments on commit 1713b66

Please sign in to comment.