/** * Store a queue * * 1. Validate Price Parameter * * @return Response */ public function price() { if (!Input::has('price')) { return new JSend('error', (array) Input::all(), 'Tidak ada data price.'); } $user = \LucaDegasperi\OAuth2Server\Facades\Authorizer::getResourceOwnerId(); $user = json_decode($user, true)['data']; if ($user) { $userid = $user['id']; } else { \App::abort(404); } $errors = new MessageBag(); DB::beginTransaction(); //1. Validate Price Parameter $price = Input::get('price'); $price_rules = ['discount_amount' => 'required_without:discount_percentage|numeric', 'discount_percentage' => 'required_without:discount_amount|numeric', 'started_at' => 'required|date_format:"Y-m-d H:i:s"', 'ended_at' => 'required|date_format:"Y-m-d H:i:s"|after:started_at', 'category_ids' => 'required_if:item,category|array', 'tag_ids' => 'required_if:item,tag|array', 'is_labeled' => 'boolean']; $validator = Validator::make($price, $price_rules); if (!$validator->passes()) { $errors->add('Price', $validator->errors()); } else { $products = new \App\Models\Product(); $products = $products->sellable(true); if (isset($price['category_ids'])) { $products = $products->categoriesid($price['category_ids']); } elseif (isset($price['tag_ids'])) { $products = $products->tagsid($price['tag_ids']); } $products = $products->get(['id']); $parameter = $price; $queue = new \App\Models\Queue(); $queue->fill(['user_id' => $userid, 'process_name' => 'broadcast:discount', 'parameter' => json_encode($parameter), 'total_process' => count($products), 'task_per_process' => 1, 'process_number' => 0, 'total_task' => count($products), 'message' => 'Initial Commit']); if (!$queue->save()) { $errors->add('Product', $queue->getError()); } } //End of validate price if ($errors->count()) { DB::rollback(); return new JSend('error', (array) Input::all(), $errors); } DB::commit(); $final_queue = \App\Models\Queue::id($queue['id'])->first()->toArray(); return new JSend('success', (array) $final_queue); }
/** * Delete a schedule (throw to queue) * * @return Response */ public function delete($org_id = null, $cal_id = null, $id = null) { // $schedule = \App\Models\Schedule::id($id)->calendarid($cal_id)->with(['calendar', 'calendar.calendars'])->first(); if (!$schedule) { return new JSend('error', (array) Input::all(), 'Jadwal tidak ditemukan.'); } $errors = new MessageBag(); DB::beginTransaction(); //1. store schedule of calendar to queue $schedule = $schedule->toArray(); //1a. Validate Basic schedule Parameter $parameter = $schedule; unset($parameter['calendar']); $total = \App\Models\Work::calendarid($cal_id)->count(); $queue = new \App\Models\Queue(); $queue->fill(['process_name' => 'hr:schedules', 'process_option' => 'delete', 'parameter' => json_encode($parameter), 'total_process' => $total, 'task_per_process' => 1, 'process_number' => 0, 'total_task' => $total, 'message' => 'Initial Commit']); if (!$queue->save()) { $errors->add('Schedule', $queue->getError()); } //End of validate schedule //2. store schedule of calendars to queue if (!$errors->count() && isset($schedule['calendar']['calendars']) && is_array($schedule['calendar']['calendars'])) { foreach ($schedule['calendar']['calendars'] as $key => $value) { $cals_data = \App\Models\Calendar::id($value['id'])->calendarid($cal_id)->first(); if (!$cals_data) { $errors->add('Calendar', 'Tidak ada kalender ' . $value['name']); } if (!$errors->count()) { $total = \App\Models\Work::calendarid($value['id'])->count(); $parameter['calendar_id'] = $value['id']; $queue = new \App\Models\Queue(); $queue->fill(['process_name' => 'hr:schedules', 'process_option' => 'delete', 'parameter' => json_encode($parameter), 'total_process' => $total, 'task_per_process' => 1, 'process_number' => 0, 'total_task' => $total, 'message' => 'Initial Commit']); if (!$queue->save()) { $errors->add('Schedule', $queue->getError()); } } } } //End of validate calendar schedule if ($errors->count()) { DB::rollback(); return new JSend('error', (array) Input::all(), $errors); } DB::commit(); return new JSend('success', (array) $schedule); }