|
@@ -177,4 +177,49 @@ class Client extends Model
|
|
->orderBy('created_at', 'desc');
|
|
->orderBy('created_at', 'desc');
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public function prosWithAccess() {
|
|
|
|
+
|
|
|
|
+ $pros = [];
|
|
|
|
+
|
|
|
|
+ // directly associated pros
|
|
|
|
+ $pro = $this->mcp;
|
|
|
|
+ if ($pro && $pro->id) $pros[] = ["pro" => $pro->displayName(), "association" => 'MCP'];
|
|
|
|
+ $pro = $this->pcp;
|
|
|
|
+ if ($pro && $pro->id) $pros[] = ["pro" => $pro->displayName(), "association" => 'PCP'];
|
|
|
|
+ $pro = $this->cm;
|
|
|
|
+ if ($pro && $pro->id) $pros[] = ["pro" => $pro->displayName(), "association" => 'CM'];
|
|
|
|
+ $pro = $this->rmm;
|
|
|
|
+ if ($pro && $pro->id) $pros[] = ["pro" => $pro->displayName(), "association" => 'RMM'];
|
|
|
|
+
|
|
|
|
+ // via client pro access
|
|
|
|
+ $cpAccesses = ClientProAccess::where('client_id', $this->id)->where('is_active', true)->get();
|
|
|
|
+ foreach ($cpAccesses as $cpAccess) {
|
|
|
|
+ if(!$cpAccess->pro) continue;
|
|
|
|
+ $pros[] = ["pro" => $cpAccess->pro->displayName(), "association" => 'Via Client-Pro Access'];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // via appointments
|
|
|
|
+ $appointments = Appointment::where('client_id', $this->id)->get();
|
|
|
|
+ foreach ($appointments as $appointment) {
|
|
|
|
+ if(!$appointment->pro) continue;
|
|
|
|
+ $pros[] = ["pro" => $appointment->pro->displayName(), "association" => 'Via Appointment: ' . $appointment->raw_date];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // via client program
|
|
|
|
+ $clientPrograms = ClientProgram::where('client_id', $this->id)->where('is_active', true)->get();
|
|
|
|
+ foreach ($clientPrograms as $clientProgram) {
|
|
|
|
+ if($clientProgram->mcp)
|
|
|
|
+ $pros[] = ["pro" => $clientProgram->mcp->displayName(), "association" => 'Program MCP: ' . $clientProgram->title];
|
|
|
|
+ if($clientProgram->manager)
|
|
|
|
+ $pros[] = ["pro" => $clientProgram->manager->displayName(), "association" => 'Program Manager: ' . $clientProgram->title];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // sort by pro name
|
|
|
|
+ $name = array_column($pros, 'pro');
|
|
|
|
+ array_multisort($name, SORT_ASC, $pros);
|
|
|
|
+
|
|
|
|
+ return $pros;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|