/** * Store a new activity. * Responds to requests to POST /activities * * @param \App\Http\Requests\CreateActivityRequest $request * @return Response */ public function store(CreateActivityRequest $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::create(['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('activities')->with('success', 'Activity is added successfully!'); } }