/** * 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'); }
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; }