/**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\Response
  */
 public function store(Request $request)
 {
     // validate request
     $validateProducer = Validator::make($request->get('Producer'), Producer::$rules);
     $validationMessages = [];
     foreach ($request->get('ProducerTranslation') as $key => $value) {
         $validateProducerTranslation = Validator::make($value, ProducerTranslation::$rules);
         if ($validateProducerTranslation->fails()) {
             $validationMessages = array_merge_recursive($validationMessages, $validateProducerTranslation->messages()->toArray());
         }
     }
     if ($validateProducer->fails() or count($validationMessages) > 0) {
         $validationMessages = array_merge_recursive($validateProducer->messages()->toArray(), $validationMessages);
         return redirect()->back()->withErrors($validationMessages)->withInput();
     }
     // get all languages
     $languages = Language::all();
     // find language default
     $languageDefault = $languages->where('is_key_language', 1)->first();
     if (is_null($languageDefault)) {
         $languageDefault = $languages->first();
     }
     // sure execute success, if not success rollback
     DB::transaction(function () use($request, $languageDefault) {
         $user = $request->user();
         // insert Producer
         $producer = new Producer();
         $producer->key = Common::createKeyURL($request->input('ProducerTranslation.' . $languageDefault->code . '.name'));
         $producer->parent_id = $request->input('Producer.parent_id');
         $producer->priority = $request->input('Producer.priority');
         $producer->is_publish = $request->input('Producer.is_publish');
         $producer->created_by = $user->name;
         $producer->updated_by = $user->name;
         $producer->save();
         // save attachments
         if ($request->input('Producer.attachments') != "") {
             $requestAttachments = explode(',', $request->input('Producer.attachments'));
             $attachments = [];
             foreach ($requestAttachments as $key => $value) {
                 array_push($attachments, new Attachment(['entry_id' => $producer->id, 'table_name' => 'producers', 'path' => $value, 'priority' => 0, 'is_publish' => 1]));
             }
             if (count($attachments) > 0) {
                 $producer->attachments()->saveMany($attachments);
             }
         }
         // save data languages
         foreach ($request->get('ProducerTranslation') as $locale => $value) {
             $producer->translateOrNew($locale)->name = $request->input('ProducerTranslation.' . $locale . '.name');
             $producer->translateOrNew($locale)->summary = $request->input('ProducerTranslation.' . $locale . '.summary');
             $producer->translateOrNew($locale)->meta_description = $request->input('ProducerTranslation.' . $locale . '.meta_description');
             $producer->translateOrNew($locale)->meta_keywords = $request->input('ProducerTranslation.' . $locale . '.meta_keywords');
         }
         $producer->save();
     });
     return redirect()->route('admin.producers.index');
 }
Пример #2
0
 public function update($data)
 {
     $sample = null;
     if (isset($data['id'])) {
         if ($sample = Sample::find($data['id'])) {
             $sample->update($data);
             if (isset($data['producer_id'])) {
                 if ($data['producer_id'] == 'new') {
                     unset($data['producer_id']);
                     $producer = new Producer();
                     $producer->name = $data['producer__name'];
                     $producer->customer_id = $sample->customer_id;
                     $producer->contact_person = $data['producer__contact_person'];
                     $producer->email = $data['producer__email'];
                     $producer->phone = $data['producer__phone'];
                     $producer->save();
                     $sample->producer_id = $producer->id;
                     $sample->save();
                 }
             }
             if (isset($data['varietals'])) {
                 if (is_array($data['varietals'])) {
                     $sample->sample_varietals()->delete();
                     foreach ($data['varietals'] as $varietal_data) {
                         if ($varietal_data['name'] && $varietal_data['percentage']) {
                             $sample_varietal = $sample->sample_varietals()->save(new SampleVarietal($varietal_data));
                         }
                     }
                 }
             }
             if (isset($data['prizes'])) {
                 if (is_array($data['prizes'])) {
                     foreach ($data['prizes'] as $prize_data) {
                         if ($prize_data['id']) {
                             $sample_prize = SamplePrize::find($prize_data['id']);
                             $sample_prize->name = $prize_data['name'];
                             $sample_prize->year = $prize_data['year'];
                             $sample_prize->save();
                         } elseif ($prize_data['name']) {
                             $sample_prize = $sample->sample_prizes()->save(new SamplePrize($prize_data));
                         }
                     }
                 }
             }
             $sample = $this->getById($data['id']);
         }
     }
     return $sample;
 }