/**
  * @param Person   $person
  * @param Drinking $drinking
  * @return bool
  */
 protected static function unitsInLowRiskForGender(Person $person, Drinking $drinking)
 {
     $units = DrinkingScore::getWeeklyUnits($drinking);
     switch ($person->getGender()) {
         case Person::GENDER_FEMALE:
             return $units < DrinkingScore::RAG_RED_FEMALE_CUTOFF && $units > DrinkingScore::RAG_GREEN_CUTOFF;
         case Person::GENDER_MALE:
             return $units < DrinkingScore::RAG_RED_MALE_CUTOFF && $units > DrinkingScore::RAG_GREEN_CUTOFF;
     }
 }
 /**
  * @inheritDoc
  */
 public static function isSatisfiedBy(Questionnaire $questionnaire)
 {
     $maxUnits = DrinkingScore::getDailyMaxUnits($questionnaire->getDrinking());
     $gender = $questionnaire->getPerson()->getGender();
     switch ($gender) {
         case Person::GENDER_FEMALE:
             return $maxUnits > DrinkingScore::DAILY_CUTOFF_UNITS_FEMALE;
         case Person::GENDER_MALE:
             return $maxUnits > DrinkingScore::DAILY_CUTOFF_UNITS_MALE;
     }
 }
 public function testGetFavouriteDrinkTypeWhenDuplicated()
 {
     $person = new Person();
     $person->setGender(Person::GENDER_MALE);
     $questionnaire = new Questionnaire($person);
     $drinking = $questionnaire->getDrinking();
     $drinking->setDoYouDrink(Drinking::DOES_DRINK)->setWhichDaysDoYouDrink('sat, sun')->setWeekendDrinks((new Drinks())->setBeerCiderPintAmount(3)->setWineAmount(3))->setCompletedDate(new \DateTime());
     $this->assertEquals(Drinking::DRINK_TYPE_PINT, DrinkingScore::calculatePreferredDrinkType($drinking));
 }
 /**
  * @JMS\VirtualProperty
  * @JMS\SerializedName("rag_score")
  * @JMS\Groups({"results"})
  * @return array
  */
 public function getRagScore()
 {
     $scoring = new DrinkingScore();
     return $scoring->calculateScore($this->questionnaire);
 }
 /**
  * @inheritDoc
  */
 public static function isSatisfiedBy(Questionnaire $questionnaire)
 {
     $drinking = $questionnaire->getDrinking();
     return DrinkingScore::RAG_GREEN_CUTOFF >= DrinkingScore::getWeeklyUnits($drinking) && DrinkingHasBingeSpecification::isSatisfiedBy($questionnaire);
 }
 /**
  * @inheritDoc
  */
 public static function isSatisfiedBy(Questionnaire $questionnaire)
 {
     $maxUnits = DrinkingScore::getDailyMaxUnits($questionnaire->getDrinking());
     return $maxUnits > DrinkingScore::DAILY_MAX_UNITS;
 }