Skip to content

Commit

Permalink
#149_adding_temporalFilter_kundenportal
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmpp committed Jan 12, 2024
1 parent 4505f76 commit d8344f5
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 19 deletions.
16 changes: 8 additions & 8 deletions src/main/scala/ch/openolitor/buchhaltung/BuchhaltungRoutes.scala
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ trait BuchhaltungRoutes

import EntityStore._

def buchhaltungRoute(implicit subect: Subject): Route =
def buchhaltungRoute(implicit subject: Subject): Route =
httpParameters("f".?, "g".?, "q".?) { (f, g, q) =>
implicit val filter = f flatMap { filterString =>
UriQueryParamFilterParser.parse(filterString)
Expand All @@ -90,7 +90,7 @@ trait BuchhaltungRoutes
rechnungenRoute ~ rechnungspositionenRoute ~ zahlungsImportsRoute ~ mailingRoute ~ zahlungsExportsRoute
}

private def pain008Route(version: String)(implicit subect: Subject): Route = post {
private def pain008Route(version: String)(implicit subject: Subject): Route = post {
extractRequest { _ =>
entity(as[RechnungenContainer]) { cont =>
onSuccess(buchhaltungReadRepository.getByIds(rechnungMapping, cont.ids)) { rechnungen =>
Expand All @@ -111,7 +111,7 @@ trait BuchhaltungRoutes
}
}

def rechnungenRoute(implicit subect: Subject, filter: Option[FilterExpr], gjFilter: Option[GeschaeftsjahrFilter], queryString: Option[QueryFilter]) =
def rechnungenRoute(implicit subject: Subject, filter: Option[FilterExpr], gjFilter: Option[GeschaeftsjahrFilter], queryString: Option[QueryFilter]) =
path("rechnungen" ~ exportFormatPath.?) { exportFormat =>
get(list(buchhaltungReadRepository.getRechnungen, exportFormat)) ~
post(create[RechnungCreateFromRechnungsPositionen, RechnungId](RechnungId.apply _))
Expand Down Expand Up @@ -219,7 +219,7 @@ trait BuchhaltungRoutes
(post)(mahnungBericht(id))
}

def rechnungspositionenRoute(implicit subect: Subject, filter: Option[FilterExpr], queryString: Option[QueryFilter]) =
def rechnungspositionenRoute(implicit subject: Subject, filter: Option[FilterExpr], queryString: Option[QueryFilter]) =
path("rechnungspositionen" ~ exportFormatPath.?) { exportFormat =>
get(list(buchhaltungReadRepository.getRechnungsPositionen, exportFormat))
} ~
Expand All @@ -235,7 +235,7 @@ trait BuchhaltungRoutes
}
}

def zahlungsImportsRoute(implicit subect: Subject, filter: Option[FilterExpr], queryString: Option[QueryFilter]) =
def zahlungsImportsRoute(implicit subject: Subject, filter: Option[FilterExpr], queryString: Option[QueryFilter]) =
path("zahlungsimports") {
get(list(buchhaltungReadRepository.getZahlungsImports)) ~
(put | post) {
Expand Down Expand Up @@ -276,7 +276,7 @@ trait BuchhaltungRoutes
}
}
}
def zahlungsExportsRoute(implicit subect: Subject) =
def zahlungsExportsRoute(implicit subject: Subject) =
path("zahlungsexports") {
get(list(buchhaltungReadRepository.getZahlungsExports))
} ~
Expand Down Expand Up @@ -457,7 +457,7 @@ trait BuchhaltungRoutes
}
}

def generatePain008(ids: List[Rechnung], version: String = "02")(implicit subect: Subject): Either[String, String] = {
def generatePain008(ids: List[Rechnung], version: String = "02")(implicit subject: Subject): Either[String, String] = {
val NbOfTxs = ids.size.toString

val rechnungenWithFutures: Future[List[(Rechnung, KontoDaten)]] = Future.sequence(ids.map { rechnung =>
Expand Down Expand Up @@ -495,7 +495,7 @@ trait BuchhaltungRoutes
}
}

def checkEmptyIban(rechnungen: List[(Rechnung, KontoDaten)])(implicit subect: Subject): List[KundeId] = {
def checkEmptyIban(rechnungen: List[(Rechnung, KontoDaten)])(implicit subject: Subject): List[KundeId] = {
rechnungen flatMap { rechnung =>
(rechnung._2.iban, rechnung._2.nameAccountHolder) match {
case (None, _) => Some(rechnung._1.kundeId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ import ch.openolitor.kundenportal.repositories.{ DefaultKundenportalReadReposito
import ch.openolitor.stammdaten.models._
import ch.openolitor.stammdaten.StammdatenDBMappings
import ch.openolitor.stammdaten.eventsourcing.StammdatenEventStoreSerializer
import ch.openolitor.util.parsing.{ FilterExpr, UriQueryParamFilterParser }
import ch.openolitor.util.parsing.{ QueryFilter, UriQueryFilterParser, FilterExpr, GeschaeftsjahrFilter, UriQueryParamFilterParser, UriQueryParamGeschaeftsjahrParser }

import scala.concurrent.ExecutionContext

Expand Down Expand Up @@ -71,10 +71,13 @@ trait KundenportalRoutes
import EntityStore._

def kundenportalRoute(implicit subject: Subject) =
parameter("f".?) { f =>
akka.http.scaladsl.server.Directives.parameters("f".?, "g".?) { (f, g) =>
implicit val filter = f flatMap { filterString =>
UriQueryParamFilterParser.parse(filterString)
}
implicit val datumsFilter = g flatMap { geschaeftsjahrString =>
UriQueryParamGeschaeftsjahrParser.parse(geschaeftsjahrString)
}
pathPrefix("kundenportal") {
abosRoute ~ arbeitRoute ~ rechnungenRoute ~ projektRoute ~ kontoDatenRoute ~ personenRoute
}
Expand Down Expand Up @@ -141,7 +144,7 @@ trait KundenportalRoutes
}
}

def arbeitRoute(implicit subject: Subject, filter: Option[FilterExpr]) = {
def arbeitRoute(implicit subject: Subject, filter: Option[FilterExpr], gjFilter: Option[GeschaeftsjahrFilter]) = {
path("arbeitsangebote") {
get {
list(kundenportalReadRepository.getArbeitsangebote)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
\* */
package ch.openolitor.kundenportal.repositories

import scalikejdbc.async.{ makeSQLToOptionAsync => _, makeSQLToListAsync => _, _ }
import scalikejdbc.async.{ makeSQLToListAsync => _, makeSQLToOptionAsync => _, _ }

import scala.concurrent.ExecutionContext
import ch.openolitor.core.db._
Expand All @@ -32,7 +32,7 @@ import scala.concurrent._
import ch.openolitor.stammdaten.models._
import com.typesafe.scalalogging.LazyLogging
import ch.openolitor.core.Macros._
import ch.openolitor.util.parsing.FilterExpr
import ch.openolitor.util.parsing.{ FilterExpr, GeschaeftsjahrFilter }
import ch.openolitor.core.security.Subject
import ch.openolitor.buchhaltung.models.RechnungId
import ch.openolitor.buchhaltung.models.Rechnung
Expand All @@ -55,7 +55,7 @@ trait KundenportalReadRepositoryAsync {
def getRechnungDetail(id: RechnungId)(implicit asyncCpContext: MultipleAsyncConnectionPoolContext, owner: Subject): Future[Option[RechnungDetail]]

def getArbeitseinsaetze(implicit asyncCpContext: MultipleAsyncConnectionPoolContext, owner: Subject): Future[List[ArbeitseinsatzDetail]]
def getArbeitsangebote(implicit asyncCpContext: MultipleAsyncConnectionPoolContext, owner: Subject): Future[List[Arbeitsangebot]]
def getArbeitsangebote(implicit asyncCpContext: MultipleAsyncConnectionPoolContext, owner: Subject, gjFilter: Option[GeschaeftsjahrFilter]): Future[List[Arbeitsangebot]]
}

class KundenportalReadRepositoryAsyncImpl extends KundenportalReadRepositoryAsync with LazyLogging with KundenportalRepositoryQueries {
Expand Down Expand Up @@ -134,8 +134,8 @@ class KundenportalReadRepositoryAsyncImpl extends KundenportalReadRepositoryAsyn
getArbeitseinsaetzeQuery.future()
}

def getArbeitsangebote(implicit asyncCpContext: MultipleAsyncConnectionPoolContext, owner: Subject): Future[List[Arbeitsangebot]] = {
def getArbeitsangebote(implicit asyncCpContext: MultipleAsyncConnectionPoolContext, owner: Subject, gjFilter: Option[GeschaeftsjahrFilter]): Future[List[Arbeitsangebot]] = {
import scalikejdbc.async.makeSQLToListAsync
getArbeitsangeboteQuery.future()
getArbeitsangeboteQuery(gjFilter).future()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import ch.openolitor.core.Macros._
import ch.openolitor.util.DateTimeUtil._
import ch.openolitor.stammdaten.StammdatenDBMappings
import ch.openolitor.util.querybuilder.UriQueryParamToSQLSyntaxBuilder
import ch.openolitor.util.parsing.FilterExpr
import ch.openolitor.util.parsing.{ FilterExpr, GeschaeftsjahrFilter }
import ch.openolitor.core.security.Subject
import ch.openolitor.buchhaltung.BuchhaltungDBMappings
import ch.openolitor.arbeitseinsatz.models._
Expand Down Expand Up @@ -352,11 +352,12 @@ trait KundenportalRepositoryQueries extends LazyLogging with StammdatenDBMapping
}).single
}

protected def getArbeitsangeboteQuery(implicit owner: Subject) = {
protected def getArbeitsangeboteQuery(gjFilter: Option[GeschaeftsjahrFilter])(implicit owner: Subject) = {
withSQL {
select
.from(arbeitsangebotMapping as arbeitsangebot)
.where.eq(arbeitsangebot.status, ch.openolitor.arbeitseinsatz.models.Bereit)
.where.append(UriQueryParamToSQLSyntaxBuilder.build[Arbeitsangebot](gjFilter, arbeitsangebot, "zeitVon"))
.and.eq(arbeitsangebot.status, ch.openolitor.arbeitseinsatz.models.Bereit)
.orderBy(arbeitsangebot.zeitVon)
}.map(arbeitsangebotMapping(arbeitsangebot)).list
}
Expand Down

0 comments on commit d8344f5

Please sign in to comment.