public function postStore() { $id = \Input::get('id'); /* * Validate */ $rules = array('image' => 'mimes:jpg,jpeg,png,gif|max:500', 'name' => 'required|unique:modules,name' . (isset($id) ? ',' . $id : ''), 'short_description' => 'required', 'sku' => 'required|alpha_dash|unique:modules,sku' . (isset($id) ? ',' . $id : ''), 'category_id' => 'required', 'tags' => 'regex:/^[a-z,0-9 -]+$/i'); $validation = \Validator::make(\Input::all(), $rules); if ($validation->passes()) { $name = \Input::get('name'); $sku = \Input::get('sku'); $short_description = \Input::get('short_description'); $long_description = \Input::get('long_description'); $image = \Input::file('image'); $featured = \Input::get('featured') == '' ? FALSE : TRUE; $active = \Input::get('active') == '' ? FALSE : TRUE; $category_id = \Input::get('category_id'); $tags = \Input::get('tags'); $cn_name = \Input::get('cn_name'); $cn_short_description = \Input::get('cn_short_description'); $cn_long_description = \Input::get('cn_long_description'); $options = array('name' => $cn_name, 'short_description' => $cn_short_description, 'long_description' => $cn_long_description); $module = isset($id) ? Module::find($id) : new Module(); $module->name = $name; $module->sku = $sku; $module->short_description = $short_description; $module->long_description = $long_description; $module->featured = $featured; $module->active = $active; $module->options = json_encode($options); $module->category_id = $category_id; // Create or save changes $module->save(); // Save pricelist foreach (Membership::all() as $membership) { $pricelist = Pricelist::where('module_id', $module->id)->where('membership_id', $membership->id)->first(); if ($pricelist == null) { $pricelist = new Pricelist(); $pricelist->module_id = $module->id; $pricelist->membership_id = $membership->id; } $price = \Input::get('price_' . $membership->id); if (!empty($price)) { $pricelist->price = $price; $pricelist->save(); } else { // Empty price means to delete, but check that it is not used $pricelist_used = UserPricelist::where('pricelist_id', $pricelist->id)->get(); if (count($pricelist_used) == 0) { $pricelist->delete(); } } } // Save medias $media_checkbox = \Input::get('media_checkbox'); if (isset($id)) { // Remove all existing medias $existing_medias = ModuleMediaMembership::where('module_id', $module->id)->get(); foreach ($existing_medias as $remove_media) { $remove_media->delete(); } } if (is_array($media_checkbox)) { foreach ($media_checkbox as $check) { $media_pair = explode('_', $check); $media_id = $media_pair[0]; $membership_id = $media_pair[1]; $modMediaMembership = new ModuleMediaMembership(); $modMediaMembership->module_id = $module->id; $modMediaMembership->membership_id = $membership_id; $modMediaMembership->media_id = $media_id; $modMediaMembership->save(); } } if (!empty($tags)) { // Delete old tags $module->deleteAllTags(); // Save tags foreach (explode(',', $tags) as $tagName) { $newTag = new Tag(); $tagName_trim = trim($tagName); // Trim space from beginning and end $newTag->name = strtolower($tagName_trim); $module->tags()->save($newTag); } } if (\Input::hasFile('image')) { // Delete all existing images for edit if (isset($id)) { $module->deleteAllImages(); } //set the name of the file $originalFilename = $image->getClientOriginalName(); $filename = $sku . \Str::random(20) . '.' . \File::extension($originalFilename); //Upload the file $isSuccess = $image->move('assets/img/modules', $filename); if ($isSuccess) { // create photo $newimage = new Image(); $newimage->path = $filename; // save photo to the loaded model $module->images()->save($newimage); } } } else { if (isset($id)) { return \Redirect::to('admin/modules/edit/' . $id)->withErrors($validation)->withInput(); } else { return \Redirect::to('admin/modules/create')->withErrors($validation)->withInput(); } } return \Redirect::to('admin/modules'); }