/** * Run the database seeds. * * @return void */ public function run() { $faker = Faker\Factory::create(); // Create a faker, add en_SG providers $faker->addProvider(new Faker\Provider\en_SG\Address($faker)); $faker->addProvider(new Faker\Provider\en_SG\Enhanced($faker)); $faker->addProvider(new Faker\Provider\en_SG\Person($faker)); $faker->addProvider(new Faker\Provider\en_SG\PhoneNumber($faker)); $faker->seed(9876); // Calling the same script twice with the same seed produces the same results $durations = [30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180]; // Insert 30 dummy records foreach (range(1, 30) as $index) { $startDate = $faker->dateTimeBetween('-3 months', '3 months'); $startHour = ['08', '09', '10', '11', '13', '14', '15', '16']; $startMin = ['00', '15', '30', '45']; while (Carbon::instance($startDate)->dayOfWeek === Carbon::SUNDAY) { $startDate = $faker->dateTimeBetween('-3 months', '3 months'); } if ($startDate === Carbon::SATURDAY) { $startHour = ['08', '09', '10', '11']; } $startTime = $faker->randomElement($startHour) . ":" . $faker->randomElement($startMin) . ":00"; $elderly = Elderly::with('centre')->find($faker->numberBetween(1, 15)); $staffList = $elderly->centre->staff->lists('staff_id')->toArray(); Activity::create(['datetime_start' => $startDate->format('Y-m-d') . " " . $startTime, 'expected_duration_minutes' => $faker->randomElement($durations), 'category' => 'transport', 'more_information' => $faker->optional(0.4, '')->sentence(10, true), 'location_from_id' => $elderly->centre_id, 'location_to_id' => $faker->numberBetween(4, 6), 'elderly_id' => $elderly->elderly_id, 'centre_id' => $elderly->centre_id, 'staff_id' => $faker->randomElement($staffList)]); } }
/** * Run the database seeds. * * @return void */ public function run() { $faker = Faker\Factory::create(); // Create a faker, add en_SG providers $faker->addProvider(new Faker\Provider\en_SG\Address($faker)); $faker->addProvider(new Faker\Provider\en_SG\Enhanced($faker)); $faker->addProvider(new Faker\Provider\en_SG\Person($faker)); $faker->addProvider(new Faker\Provider\en_SG\PhoneNumber($faker)); $faker->seed(9876); // Calling the same script twice with the same seed produces the same results $conditions = array('Osteoporosis', 'Dementia', 'Pneumonia', 'Gastrointestinal Infections', 'Urinary Tract Infections', 'Hypertension', 'High Blood Pressure'); // Insert 15 dummy records foreach (range(1, 15) as $index) { $gender = $faker->randomElement(['male', 'female']); $birthYear = $faker->dateTimeBetween('-85 years', '-60 years')->format('Y'); $fullName = explode("|", $faker->unique()->nameWithSalutation($gender)); // Extract full name without salutation ("Full Name|Salutation" to array) $fullName = $fullName[0]; $NOKfullName = explode("|", $faker->unique()->nameWithSalutation($gender)); // Extract full name without salutation ("Full Name|Salutation" to array) $NOKfullName = $NOKfullName[0]; $centre = $faker->numberBetween(1, 3); Elderly::create(['nric' => $faker->unique()->nric, 'name' => $fullName, 'gender' => ucwords($gender[0]), 'birth_year' => $birthYear, 'next_of_kin_name' => $NOKfullName, 'next_of_kin_contact' => preg_replace('/-/', '', $faker->mobile), 'medical_condition' => $faker->optional(0.4, '')->randomElement($conditions), 'image_photo' => 'image.jpeg', 'centre_id' => $centre]); } }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if (!$this->auth->user()->is_admin) { // All elderly that belongs to the centres that the authenticated user is in charge of $elderlyInCentres = collect(Elderly::ofCentreForStaff($this->auth->user())->get()->lists('elderly_id')); // Redirect user if elderly profile accessed is not in list if (!$elderlyInCentres->contains($request->route()->parameter('elderly'))) { return redirect('/elderly'); } } return $next($request); }
protected static function boot() { parent::boot(); Elderly::deleting(function ($elderly) { foreach (['activities', 'languages'] as $relation) { foreach ($elderly->{$relation} as $item) { $item->delete(); } } }); Elderly::restored(function ($elderly) { foreach (['activities', 'languages'] as $relation) { foreach ($elderly->{$relation} as $item) { $item->restore(); } } }); }
/** * Retrieves information of elderly based on transport ID. * * @param \Illuminate\Http\Request $request * @return JSON elderly or status */ public function retrieveElderyInformation(Request $request) { if ($request->get('transportId') == null) { $status = ["Missing parameter"]; return response()->json(compact('status')); } else { $actID = $request->get('transportId'); $activity = Activity::findOrFail($actID); $elderlyID = $activity->elderly_id; //return response()->json(compact('elderlyID')); $elderly = Elderly::with('languages')->findOrFail($elderlyID); if ($elderly == null) { $status = ["error"]; return response()->json(compact('status')); } else { return response()->json(compact('elderly')); } } }
/** * Delete an elderly/senior. * Responds to requests to DELETE /elderly/{id} * * @param int $id the ID of the elderly/senior * @return Response */ public function destroy($id) { $elderly = Elderly::findOrFail($id); $elderly->delete(); return back()->with('success', 'Senior is removed successfully!'); }
/** * Update an existing activity. * Responds to requests to PUT /activities/{id} * * @param int $id the ID of the activity * @param \App\Http\Requests\EditActivityRequest $request * @return Response */ public function update($id, EditActivityRequest $request) { $errors = array(); $startLocationId = $request->get('start_location'); $endLocationId = $request->get('end_location'); $elderlyId = $request->get('senior'); $startLocation = new Centre(); $endLocation = new Centre(); $elderly = new Elderly(); if ($request->get('start_location') == "others") { $postal = $request->get('start_postal'); $geoInfo = json_decode($this->postalCodeToAddress($postal), true); if ($geoInfo['status'] == 'ok') { $startLocation->name = ucwords(strtolower($request->get('start_location_name'))); $startLocation->address = $geoInfo['address']; $startLocation->postal_code = $postal; $startLocation->lng = $geoInfo['x']; $startLocation->lat = $geoInfo['y']; } else { $errors = array_add($errors, 'start_location', 'Postal code for branch does not exist.'); } } if ($request->get('end_location') == "others") { if ($request->get('start_location_name') == $request->get('end_location_name')) { $endLocation = $startLocation; } else { $postal = $request->get('end_postal'); $geoInfo = json_decode($this->postalCodeToAddress($postal), true); if ($geoInfo['status'] == 'ok') { $endLocation->name = ucwords(strtolower($request->get('end_location_name'))); $endLocation->address = $geoInfo['address']; $endLocation->postal_code = $postal; $endLocation->lng = $geoInfo['x']; $endLocation->lat = $geoInfo['y']; } else { $errors = array_add($errors, 'end_location', 'Postal code for appointment venue does not exist.'); } } } if ($request->get('senior') == "others") { $elderly->nric = $request->get('senior_nric'); $elderly->name = $request->get('senior_name'); $elderly->gender = $request->get('senior_gender'); $elderly->birth_year = $request->get('senior_birth_year'); $elderly->next_of_kin_name = $request->get('senior_nok_name'); $elderly->next_of_kin_contact = $request->get('senior_nok_contact'); $elderly->medical_condition = $request->get('senior_medical'); $elderly->centre_id = $request->get('centre'); if (count($request->get('languages')) < 1) { $errors = array_add($errors, 'languages', 'Language is required.'); } else { foreach ($request->get('languages') as $language) { $v = Validator::make(['language' => $language], ['language' => 'alpha']); if ($v->fails()) { $errors = array_add($errors, 'languages', 'Language must be valid words.'); } } } } if (count($errors) > 0) { return back()->withErrors($errors)->withInput(); } else { if ($request->get('start_location') == "others") { $startLocation->save(); $startLocationId = $startLocation->centre_id; } if ($request->get('end_location') == "others") { $endLocation->save(); $endLocationId = $endLocation->centre_id; } if ($request->get('senior') == "others") { $elderly->save(); foreach ($request->get('languages') as $language) { ElderlyLanguage::create(['elderly_id' => $elderly->elderly_id, 'language' => $language]); } $elderlyId = $elderly->elderly_id; } $activity = Activity::findOrFail($id); $activity->update(['datetime_start' => $request->get('date') . " " . $request->get('time'), 'expected_duration_minutes' => $request->get('duration'), 'category' => 'transport', 'more_information' => $request->get('more_information'), 'location_from_id' => $startLocationId, 'location_to_id' => $endLocationId, 'elderly_id' => $elderlyId, 'centre_id' => $request->get('centre'), 'staff_id' => Auth::user()->staff_id]); return redirect()->route('activities.show', compact('activity'))->with('success', 'Activity is updated successfully!'); } }