/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $type, $id) { if ($type == 'event' || $type == 'page') { try { $event = Event::where('slug', $id)->where('type', $type)->firstOrFail(); } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) { return view('errors.pageNotFound'); } if ($type == 'event') { $this->validate($request, ['title' => 'required|max:50', 'content' => 'required|max:10000', 'start_date' => 'required|date|before:end_date', 'end_date' => 'required|date|after:start_date', 'start_time' => 'date_format:H:i|before:end_time', 'end_time' => 'date_format:H:i|after:start_time', 'number' => 'max:12', 'street' => 'max:40', 'suburb' => 'max:40', 'area' => 'max:40', 'country' => 'max:30', 'image[]' => 'image']); if ($request->status == 0 || $request->status == 1) { $event->status = $request->status; } elseif ($request->status == 2) { foreach ($event->images as $image) { $original = 'img/site/original/'; $sliderPath = 'img/site/slider/'; $galleryThumbPath = 'img/site/gallery/thumbnail/'; $galleryPrevPath = 'img/site/gallery/preview/'; $thumbnail = 'img/site/thumbnail/'; $imagedb = Image::where('id', $image->id)->first(); \File::delete([$sliderPath . $imagedb->image, $galleryPrevPath . $imagedb->image, $galleryThumbPath . $imagedb->image, $thumbnail . $imagedb->image, $original . $imagedb->image]); EventImage::where('event_id', $event->id)->where('image_id', $image->id)->delete(); $imagedb->delete(); } $event->delete(); return redirect('/admin/' . $type . '/'); } $event->title = $request->title; $event->content = $request->content; $event->start_date = str_replace('-', '/', $request->start_date); $event->end_date = str_replace('-', '/', $request->end_date); $event->start_time = $request->start_time; $event->end_time = $request->end_time; $event->save(); $event->locations->number = $request->number; $event->locations->street = $request->street; $event->locations->suburb = $request->suburb; $event->locations->area = $request->area; $event->locations->country = $request->country; $event->locations->location_map = $request->number . '+' . $request->street . ',+' . $request->suburb . ',+' . $request->area . ',+' . $request->country; $event->locations->location_map = str_replace(' ', '+', $event->locations->location_map); $event->locations->save(); $original = 'img/site/original/'; $sliderPath = 'img/site/slider/'; $galleryThumbPath = 'img/site/gallery/thumbnail/'; $galleryPrevPath = 'img/site/gallery/preview/'; $thumbnail = 'img/site/thumbnail/'; if ($request->hasFile('image')) { $counter = 0; foreach ($request->file('image') as $image) { $fileName = uniqid() . '.' . $request->file('image')[$counter]->getClientOriginalName(); $imageSource = \Image::make($request->file('image')[$counter]); $imageSource->save($original . $fileName); \Image::make($request->file('image')[$counter])->resize(1000, null, function ($constraint) { $constraint->aspectRatio(); })->save($galleryPrevPath . $fileName, 80); \Image::make($request->file('image')[$counter])->resize(1000, null, function ($constraint) { $constraint->aspectRatio(); })->crop(1000, 400, 0, 0)->save($sliderPath . $fileName, 80); \Image::make($request->file('image')[$counter])->fit(100, 100)->save($galleryThumbPath . $fileName, 80); \Image::make($request->file('image')[$counter])->fit(250, 150)->save($thumbnail . $fileName, 80); $imagedb = new Image(); $eventImage = new EventImage(); $imagedb->image = $fileName; $imagedb->save(); $eventImage->image_id = $imagedb->id; $eventImage->event_id = $event->id; $eventImage->save(); $counter++; } } if (count($request->currentImage) > 0) { foreach ($request->currentImage as $checked) { $imagedb = Image::where('id', $checked)->first(); \File::delete([$sliderPath . $imagedb->image, $galleryPrevPath . $imagedb->image, $galleryThumbPath . $imagedb->image, $thumbnail . $imagedb->image, $original . $imagedb->image]); EventImage::where('event_id', $event->id)->where('image_id', $checked)->delete(); $imagedb->delete(); } } } elseif ($type == 'page') { $event->content = $request->content; $event->save(); } } elseif ($type == 'staff') { try { $event = Staff::where('slug', $id)->firstOrFail(); } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) { return view('errors.pageNotFound'); } $event->title = $request->title; $event->name = $request->name; $event->slug = strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $event->name))); $original = 'img/site/original/'; $staff = 'img/site/staff/'; if ($request->hasFile('photo')) { if ($event->image != 'default.png') { \File::delete([$original . $event->image, $staff . $event->image]); } $fileName = uniqid() . '.' . $request->file('photo')->getClientOriginalName(); $imageSource = \Image::make($request->file('photo')); $imageSource->save($original . $fileName); \Image::make($request->file('photo'))->fit(190, 190)->save($staff . $fileName, 80); $event->image = $fileName; } $event->save(); return redirect('/admin/' . $type . '/'); } elseif ($type == 'video') { try { $event = Video::where('slug', $id)->firstOrFail(); } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) { return view('errors.pageNotFound'); } $event->title = $request->title; $event->description = $request->description; $event->player = $request->player; if ($request->player == 'youtube') { $event->video = substr($request->video, -11); } elseif ($request->player == 'vimeo') { $event->video = substr($request->video, -9); } $event->slug = strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $event->title))); $event->save(); return redirect('/admin/' . $type . '/'); } else { return view('errors.404'); } if (isset($request->preview)) { return redirect('/' . $type . '/' . $event->slug); } else { return redirect('/admin/' . $type . '/' . $event->slug . '/edit'); } }