public static function boot() { parent::boot(); Package::created(function ($package) { $snapshot = new PackageSnapshot(); $snapshot->application_package_id = $package->id; $snapshot->application_package_name = $package->name; $snapshot->application_package_version = $package->version; $severity = $package->vulnerability_severity; if (!$package->vulnerability_severity) { $severity = 0; } $snapshot->application_package_vulnerability_severity = $severity; $snapshot->save(); return true; }); Package::updated(function ($package) { $snapshot = new PackageSnapshot(); $snapshot->application_package_id = $package->id; $snapshot->application_package_name = $package->name; $snapshot->application_package_version = $package->version; $severity = $package->vulnerability_severity; if (!$package->vulnerability_severity) { $severity = 0; } $snapshot->application_package_vulnerability_severity = $severity; $snapshot->save(); return true; }); }
public function getReportingDataForRange($start, $end) { $all_data = PackageSnapshot::whereBetween('created_at', array(new \DateTime($start), new \DateTime($end)))->groupBy('id')->groupBy('application_package_id')->groupBy('created_at')->get()->sortBy('created_at'); $riskByDateAndSeverity = array(); foreach ($all_data as $data) { $data->created_at = $data->created_at; $created_at_string = $data->created_at . ""; if (!array_key_exists($created_at_string, $riskByDateAndSeverity)) { $riskByDateAndSeverity[$created_at_string] = array('all_risk' => array(), 'high_risk' => array(), 'low_risk' => array(), 'medium_risk' => array()); } if ($data->application_package_vulnerability_severity > 4.5) { if ($data->application_package_vulnerability_severity < 7) { array_push($riskByDateAndSeverity[$created_at_string]['medium_risk'], $data); } else { array_push($riskByDateAndSeverity[$created_at_string]['high_risk'], $data); } } else { array_push($riskByDateAndSeverity[$created_at_string]['low_risk'], $data); } array_push($riskByDateAndSeverity[$created_at_string]['all_risk'], $data); } return Response::json($riskByDateAndSeverity); }