Advertisement
Guest User

Untitled

a guest
Feb 3rd, 2015
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.39 KB | None | 0 0
  1.   def httpUpdate(pname: String) = (for {
  2.     u    <- liftK(signed(_:JReq))
  3.     meId <- pathParam[BSONObjectID](pname)
  4.     ume  <- jsonFromReq[UpdateMetricEvent]
  5.     me1  <- constK(liftFO(findOne[MetricEvent](cname)(mkFindByIdQry(u, meId)), E404("Inexistent MetricEvent")).run)
  6.     me2  =  me1.copy(value = ume.value getOrElse me1.value, date = ume.date getOrElse me1.date)
  7.     m    <- constK(liftFO(findOneById[Metric](metrics.cname)(me2.metricId), E400("Metric not found")).run)
  8.     doT  =  !((me1.value == me2.value) && (me1.date == me2.date))
  9.     pme  <- constK(findFirst[MetricEvent](cname)(mkPrevQry(u, me2.metricId, me2.date)))
  10.     qry  <- constK(mkUpdateQry(u, meId)(ume))
  11.     upd  <- constK(update(cname)(qry))
  12.     meta <- constK(aggregate[List[MetricEventMeta]](cname)(mkMetaP(u, me2.metricId)))
  13.     _    <- constK(update(mname)(mkMetaUpdate(me2)(meta.headOption)))
  14.     _    <- constK(eventFeeds.doMetricFeed("metricEventUpdate", 4.some)
  15.               (owner = u.some, itemId = me2.metricId.some, itemName = m.name.some,
  16.                value = me2.value.some, category = me2.category.some, unit = me2.unit.some))
  17.     _    <- constK(if (doT) doNextTargetReached(u, pme, me2, m) else ().right.point[Future])
  18.     utr  <- constK(if (doT) doUserTargetReached(u, pme, me2, m) else none.right.point[Future])
  19.     _    <- constK(users.doRetireTarget(u, me2.metricId, utr))
  20.   } yield upd) >>> toJsonResult
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement