Пример #1
0
 /**
  * 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');
     }
 }