Skip to content

Commit

Permalink
Merge pull request #1873 from betagouv/master
Browse files Browse the repository at this point in the history
MEP demo data : add some consumer reviews
  • Loading branch information
eletallbetagouv authored Feb 5, 2025
2 parents 1bffbf5 + 27917ef commit 6d3d055
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 12 deletions.
2 changes: 2 additions & 0 deletions app/loader/SignalConsoApplicationLoader.scala
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,8 @@ class SignalConsoComponents(
reportRepository,
companyAccessRepository,
reportAdminActionOrchestrator,
reportConsumerReviewOrchestrator,
engagementOrchestrator,
websiteRepository,
eventRepository,
engagementRepository
Expand Down
25 changes: 25 additions & 0 deletions app/models/report/sampledata/ReviewGenerator.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package models.report.sampledata

import models.report.review.ConsumerReviewApi
import models.report.review.ResponseEvaluation.Negative
import models.report.review.ResponseEvaluation.Neutral

object ReviewGenerator {

def randomConsumerReview() =
ConsumerReviewApi(
evaluation = Negative,
details = Some(
"Je ne veux pas d’un avoir. Je veux la livraison du produit qui a été proposé en promotion et qui est toujours disponible en stock . Cordialement "
)
)

def randomEngagementReview() =
ConsumerReviewApi(
evaluation = Neutral,
details = Some(
"Je n’ai jamais été recontacté par un superviseur"
)
)

}
26 changes: 24 additions & 2 deletions app/models/report/sampledata/SampleDataService.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,12 @@ import models.report.sampledata.ResponseGenerator.acceptedResponse
import models.report.sampledata.ResponseGenerator.notConcernedResponse
import models.report.sampledata.ResponseGenerator.rejectedResponse
import models.report.sampledata.ReportGenerator.SampleReportBlueprint
import models.report.sampledata.ReviewGenerator.randomConsumerReview
import models.report.sampledata.ReviewGenerator.randomEngagementReview
import orchestrators.BarcodeOrchestrator
import orchestrators.EngagementOrchestrator
import orchestrators.ReportAdminActionOrchestrator
import orchestrators.ReportConsumerReviewOrchestrator
import orchestrators.ReportOrchestrator
import org.apache.pekko.actor.ActorSystem
import play.api.Logging
Expand Down Expand Up @@ -41,6 +45,8 @@ class SampleDataService(
reportRepository: ReportRepositoryInterface,
companyAccessRepository: CompanyAccessRepositoryInterface,
reportAdminActionOrchestrator: ReportAdminActionOrchestrator,
reportConsumerReviewOrchestrator: ReportConsumerReviewOrchestrator,
engagementOrchestrator: EngagementOrchestrator,
websiteRepository: WebsiteRepositoryInterface,
eventRepository: EventRepositoryInterface,
engagementRepository: EngagementRepositoryInterface
Expand Down Expand Up @@ -106,9 +112,15 @@ class SampleDataService(
_ = logger.info(s"--- Creating reports without response")
_ <- createReports(c, reportsAmountFactor)
_ = logger.info(s"--- Creating reports with response")
_ <- createReportsWithResponse(c, reportsAmountFactor * 1.5, acceptedResponse(), respondant)
_ <- createReportsWithResponse(c, reportsAmountFactor * 0.5, rejectedResponse(), respondant)
_ <- createReportsWithResponse(c, reportsAmountFactor * 0.3, notConcernedResponse(), respondant)
reportsWithAcceptedResponse <- createReportsWithResponse(
c,
reportsAmountFactor * 1.5,
acceptedResponse(),
respondant
)
_ <- addReviews(reportsWithAcceptedResponse)
_ = logger.info(s"--- All done for company ${c.name}")
} yield ()
}
Expand Down Expand Up @@ -136,7 +148,17 @@ class SampleDataService(
) = for {
reports <- createReports(c, reportsAmountFactor)
_ <- reports.traverse(r => reportOrchestrator.handleReportResponse(r, response, proUser))
} yield ()
} yield reports

private def addReviews(reports: List[Report]): Future[_] =
for {
_ <- reports.filter(_ => Random.nextDouble() > 0.6).runSequentially { r =>
reportConsumerReviewOrchestrator.handleReviewOnReportResponse(r.id, randomConsumerReview())
}
_ <- reports.filter(_ => Random.nextDouble() > 0.2).runSequentially { r =>
engagementOrchestrator.handleEngagementReview(r.id, randomEngagementReview())
}
} yield ()

private def setCreationAndExpirationDate(r: Report, quiteOld: Boolean = false): Future[Report] = {
val now = OffsetDateTime.now()
Expand Down
9 changes: 4 additions & 5 deletions app/orchestrators/EngagementOrchestrator.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import models.report.ReportStatus.hasResponse
import models.report.review.EngagementReview
import models.report.review.ConsumerReviewApi
import models.report.review.ResponseConsumerReviewId
import models.report.review.ResponseEvaluation
import play.api.Logger
import play.api.libs.json.Json
import repositories.engagement.EngagementRepositoryInterface
Expand Down Expand Up @@ -160,7 +159,7 @@ class EngagementOrchestrator(
case Some(review) =>
updateEngagementReview(review.copy(evaluation = reviewApi.evaluation, details = reviewApi.details))
case None =>
createEngagementReview(reportId, reviewApi.evaluation)
createEngagementReview(reportId, reviewApi)
}
} yield ()
}
Expand All @@ -181,15 +180,15 @@ class EngagementOrchestrator(
details = review.details
)
)
private def createEngagementReview(reportId: UUID, evaluation: ResponseEvaluation): Future[Event] =
private def createEngagementReview(reportId: UUID, review: ConsumerReviewApi): Future[Event] =
reportEngagementReviewRepository
.createOrUpdate(
EngagementReview(
ResponseConsumerReviewId.generateId(),
reportId,
evaluation,
evaluation = review.evaluation,
creationDate = OffsetDateTime.now(),
None
details = review.details
)
)
.flatMap(_ =>
Expand Down
9 changes: 4 additions & 5 deletions app/orchestrators/ReportConsumerReviewOrchestrator.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import models.report.ReportStatus.hasResponse
import models.report.review.ResponseConsumerReview
import models.report.review.ConsumerReviewApi
import models.report.review.ResponseConsumerReviewId
import models.report.review.ResponseEvaluation
import play.api.Logger
import utils.Constants.ActionEvent
import utils.Constants.EventType
Expand Down Expand Up @@ -75,7 +74,7 @@ class ReportConsumerReviewOrchestrator(
case Some(review) =>
updateReview(review.copy(evaluation = reviewApi.evaluation, details = reviewApi.details))
case None =>
createReview(reportId, reviewApi.evaluation)
createReview(reportId, reviewApi)
}
} yield ()
}
Expand All @@ -97,15 +96,15 @@ class ReportConsumerReviewOrchestrator(
)
)

private def createReview(reportId: UUID, evaluation: ResponseEvaluation): Future[Event] =
private def createReview(reportId: UUID, review: ConsumerReviewApi): Future[Event] =
responseConsumerReviewRepository
.createOrUpdate(
ResponseConsumerReview(
ResponseConsumerReviewId.generateId(),
reportId,
evaluation,
evaluation = review.evaluation,
creationDate = OffsetDateTime.now(),
None
details = review.details
)
)
.flatMap(_ =>
Expand Down

0 comments on commit 6d3d055

Please sign in to comment.