Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion app/controllers/LineController.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package controllers

import models.{Line, SearchResult, ServicePlan}
import models.{Line, LineStatus, SearchResult, ServicePlan}
import org.joda.time.DateTime

import javax.inject._
import play.api._
Expand Down Expand Up @@ -41,4 +42,29 @@ class LineController @Inject()(
.map(line => Ok(Json.toJson(line)))
}

def findLinesByActivationDate(startDate: Option[DateTime]) = Action.async {
lineRepo.findByActivationDate(startDate.map(date => date.toString()))
.flatMap { line =>
var out = List[Line]()
for (l <- line) {
if (l.carrierDetails.lastActivated.isDefined && l.carrierDetails.lastActivated.get.isAfter(startDate.get)) {
out = out ++ Seq(l)
}
}
Future.successful(out)
}
.map(line => Ok(Json.toJson(line)))
}

def downloadAllLinesThatAreActiveAndHaventSyncedWithNetsuiteInAYear() = Action {
val source = lineRepo.streamAll(Json.obj())
.filter( line => line.lineStatus.isDefined && line.lineStatus.get.equals(LineStatus.Active) )
.filter( line => line.lastSyncWithNetsuite.isDefined && line.lastSyncWithNetsuite.get.isAfter(DateTime.now().minusYears(1)))
.map( line => {
Json.toJson(line)
})

Ok.streamed(source, None)
}

}
16 changes: 8 additions & 8 deletions app/models/CarrierDetails.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ package models
import org.joda.time.DateTime

case class CarrierDetails (
carrierPlan:Option[String] = None,
carrierPlanStatus:Option[String] = None,
carrierAccount:Option[String] = None,
deviceIds:Seq[DeviceId] = Nil,
ipAddress: Option[String] = None,
created: Option[DateTime] = None,
lastActivated: Option[DateTime] = None
) {
carrierPlan:Option[String] = None,
carrierPlanStatus:Option[String] = None,
carrierAccount:Option[String] = None,
deviceIds:Seq[DeviceId] = Nil,
ipAddress: Option[String] = None,
created: Option[DateTime] = None,
lastActivated: Option[DateTime] = None
) {
def deviceIdOfType(deviceIdType: DeviceIdType.Value): Option[DeviceId] = deviceIds.find(_.kind == deviceIdType)
}

Expand Down
17 changes: 16 additions & 1 deletion app/repos/LineRepo.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ package repos
import akka.actor.ActorSystem
import models.Line
import org.slf4j.LoggerFactory
import play.api.libs.json.{JsObject, Json}
import play.api.libs.json.Json.obj
import play.modules.reactivemongo.{NamedDatabase, ReactiveMongoApi}
import reactivemongo.api.Cursor
import reactivemongo.api.bson.{BSONDocumentReader, BSONDocumentWriter, BSONObjectID}
import reactivemongo.play.json.compat.json2bson.toDocumentWriter
import reactivemongo.play.json.compat.json2bson.{toDocumentReader, toDocumentWriter}
import reactivemongo.api.bson.collection.BSONCollection
import reactivemongo.play.json.compat._
import reactivemongo.akkastream.{ State, cursorProducer }

import javax.inject.Inject
import scala.concurrent.{ExecutionContext, Future}
Expand All @@ -30,4 +32,17 @@ class LineRepo @Inject()(implicit
.cursor[Line]().collect[Seq](defaultMaxDocs, Cursor.FailOnError[Seq[Line]]())
}

def findByActivationDate(startDate: Option[String]): Future[List[Line]] = collection() { col =>
col.find(
Json.obj(
"carrierDetails.lastActivated" -> Json.obj("$gt" -> startDate.get)
)
).cursor[Line]().collect[List](defaultMaxDocs, Cursor.FailOnError[List[Line]]())
}

def streamAll(filter:JsObject, sortCriteria:JsObject = Json.obj("carrierDetails.lastActivated" -> -1)) = streaming() { col =>
col.find(filter)
.sort(sortCriteria).cursor[Line]().documentSource()
}

}
1 change: 1 addition & 0 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ libraryDependencies += guice
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "5.1.0" % Test
libraryDependencies += "com.typesafe.play" %% "play-json-joda" % "2.9.2"
libraryDependencies += "org.reactivemongo" %% "play2-reactivemongo" % "1.0.6-play28"
libraryDependencies += "org.reactivemongo" %% "reactivemongo-akkastream" % "1.0.6"
libraryDependencies += "org.typelevel" %% "squants" % "1.8.3"

// Adds additional packages into Twirl
Expand Down