Advertisement
Guest User

Untitled

a guest
May 19th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.68 KB | None | 0 0
  1.  
  2.   def applyNegativePeriodPreferences(shift: Seq[Seq[Schedule]], periodPreferences: Seq[NursePeriodPreference]) : Option[Seq[Seq[Schedule]]] = {
  3.     val negative = periodPreferences.filter(p => p.factor < 0)
  4.  
  5.     val result = for(p <- negative) yield {
  6.       val period = p.period
  7.  
  8.       if(period.equals("afternoon")) {
  9.         val result = shift.last.exists(s => s.nurse.name.equals(p.nurse.name))
  10.         //val result = shift.map(s => s.filter(n => n.nurse.name.equals(p.nurse.name)))
  11.  
  12.         result
  13.       } else if(period.equals("morning")) {
  14.         val result = shift.head.exists(s => s.nurse.name.equals(p.nurse.name))
  15.  
  16.         result
  17.       } else None
  18.     }
  19.  
  20.     if(result.contains(true)) None else Option(shift)
  21.   }
  22.  
  23.   def applyPositivePeriodPreferences(shift: Seq[Seq[Schedule]], periodPreferences: Seq[NursePeriodPreference]) : Option[Seq[Seq[Schedule]]] = {
  24.     val positive = periodPreferences.filter(p => p.factor > 0)
  25.  
  26.     val result = for(p <- positive) yield {
  27.       val period = p.period
  28.  
  29.       if(period.equals("afternoon")) {
  30.         // Check if nurse exists in afternoon
  31.         val result = shift.last.exists(s => s.nurse.name.equals(p.nurse.name))
  32.  
  33.         //Check if nurse exists in morning
  34.         val resMorning = shift.head.exists(s => s.nurse.name.equals(p.nurse.name))
  35.  
  36.         if(resMorning) false else true
  37.  
  38.       } else if(period.equals("morning")) {
  39.         val result = shift.head.exists(s => s.nurse.name.equals(p.nurse.name))
  40.  
  41.         val resAfternoon = shift.last.exists(s => s.nurse.name.equals(p.nurse.name))
  42.  
  43.         if(resAfternoon) false else true
  44.  
  45.       } else None
  46.     }
  47.  
  48.     if(result.contains(false)) None else Option(shift)
  49.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement