Skip to content

Commit

Permalink
[TRELLO-2177] Add other option to social networks (#1536)
Browse files Browse the repository at this point in the history
* [TRELLO-2177] Add other option to social networks

* [TRELLO-2177] Add other option to social networks
  • Loading branch information
charlescd authored Feb 5, 2024
1 parent 0e54682 commit 03138e0
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 15 deletions.
7 changes: 6 additions & 1 deletion app/actors/ReportsExtractActor.scala
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,12 @@ object ReportsExtractActor {
ReportColumn(
"Plateforme (réseau social)",
leftAlignmentColumn,
(report, _, _, _, _) => report.influencer.map(_.socialNetwork.entryName).getOrElse(""),
(report, _, _, _, _) =>
report.influencer
.flatMap(_.socialNetwork)
.map(_.entryName)
.orElse(report.influencer.flatMap(_.otherSocialNetwork))
.getOrElse(""),
available = List(UserRole.DGCCRF, UserRole.DGAL, UserRole.Admin) contains requestedBy.userRole
),
ReportColumn(
Expand Down
2 changes: 1 addition & 1 deletion app/models/report/Influencer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package models.report
import play.api.libs.json.Json
import play.api.libs.json.OFormat

case class Influencer(socialNetwork: SocialNetworkSlug, name: String)
case class Influencer(socialNetwork: Option[SocialNetworkSlug], otherSocialNetwork: Option[String], name: String)

object Influencer {
implicit val format: OFormat[Influencer] = Json.format[Influencer]
Expand Down
19 changes: 12 additions & 7 deletions app/orchestrators/ReportOrchestrator.scala
Original file line number Diff line number Diff line change
Expand Up @@ -381,9 +381,9 @@ class ReportOrchestrator(
Future(None)
}

private def searchCompanyOfSocialNetwork(influencer: Influencer): Future[Option[Company]] =
private def searchCompanyOfSocialNetwork(socialNetworkSlug: SocialNetworkSlug): Future[Option[Company]] =
(for {
socialNetwork <- OptionT(socialNetworkRepository.get(influencer.socialNetwork))
socialNetwork <- OptionT(socialNetworkRepository.get(socialNetworkSlug))
companyToCreate <- OptionT(companySyncService.companyBySiret(socialNetwork.siret))
c = Company(
siret = companyToCreate.siret,
Expand All @@ -399,11 +399,16 @@ class ReportOrchestrator(
} yield company).value

private def extractCompanyOfSocialNetwork(influencer: Influencer): Future[Option[Company]] =
for {
maybeCompany <- socialNetworkRepository.findCompanyBySocialNetworkSlug(influencer.socialNetwork)
resultingCompany <-
if (maybeCompany.isDefined) Future.successful(maybeCompany) else searchCompanyOfSocialNetwork(influencer)
} yield resultingCompany
influencer.socialNetwork match {
case Some(socialNetwork) =>
for {
maybeCompany <- socialNetworkRepository.findCompanyBySocialNetworkSlug(socialNetwork)
resultingCompany <-
if (maybeCompany.isDefined) Future.successful(maybeCompany) else searchCompanyOfSocialNetwork(socialNetwork)
} yield resultingCompany
case None =>
Future.successful(None)
}

def updateReportCountry(reportId: UUID, countryCode: String, userId: UUID): Future[Option[Report]] =
for {
Expand Down
12 changes: 7 additions & 5 deletions app/repositories/report/ReportTable.scala
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class ReportTable(tag: Tag) extends DatabaseTable[Report](tag, "reports") {
def subcategories = column[List[String]]("subcategories")
def details = column[List[String]]("details")
def socialNetwork = column[Option[SocialNetworkSlug]]("social_network")
def otherSocialNetwork = column[Option[String]]("other_social_network")
def influencerName = column[Option[String]]("influencer_name")
def companyId = column[Option[UUID]]("company_id")
def companyName = column[Option[String]]("company_name")
Expand Down Expand Up @@ -77,6 +78,7 @@ class ReportTable(tag: Tag) extends DatabaseTable[Report](tag, "reports") {
subcategories ::
details ::
socialNetwork ::
otherSocialNetwork ::
influencerName ::
companyId ::
companyName ::
Expand Down Expand Up @@ -152,10 +154,7 @@ class ReportTable(tag: Tag) extends DatabaseTable[Report](tag, "reports") {
lang = lang,
reopenDate = reopenDate,
barcodeProductId = barcodeProductId,
influencer = for {
socialNetwork <- socialNetwork
influencerName <- influencerName
} yield Influencer(socialNetwork, influencerName)
influencer = influencerName.map(influencerName => Influencer(socialNetwork, otherSocialNetwork, influencerName))
)
}

Expand All @@ -165,7 +164,8 @@ class ReportTable(tag: Tag) extends DatabaseTable[Report](tag, "reports") {
r.category ::
r.subcategories ::
r.details.map(detailInputValue => s"${detailInputValue.label} ${detailInputValue.value}") ::
r.influencer.map(_.socialNetwork) ::
r.influencer.flatMap(_.socialNetwork) ::
r.influencer.flatMap(_.otherSocialNetwork) ::
r.influencer.map(_.name) ::
r.companyId ::
r.companyName ::
Expand Down Expand Up @@ -211,6 +211,7 @@ class ReportTable(tag: Tag) extends DatabaseTable[Report](tag, "reports") {
List[String] ::
Option[SocialNetworkSlug] ::
Option[String] ::
Option[String] ::
Option[UUID] ::
Option[String] ::
Option[String] ::
Expand Down Expand Up @@ -253,6 +254,7 @@ class ReportTable(tag: Tag) extends DatabaseTable[Report](tag, "reports") {
subcategories ::
details ::
socialNetwork ::
otherSocialNetwork ::
influencerName ::
companyId ::
companyName ::
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE reports ADD other_social_network text;
2 changes: 1 addition & 1 deletion test/utils/Fixtures.scala
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ object Fixtures {
val genInfluencer = for {
socialNetwork <- Gen.oneOf(SocialNetworkSlug.values)
name <- arbString.arbitrary
} yield Influencer(socialNetwork, name)
} yield Influencer(Some(socialNetwork), None, name)

val genWebsiteURL = for {
randInt <- Gen.choose(0, 1000000)
Expand Down

0 comments on commit 03138e0

Please sign in to comment.