/** * store a calendar of an org * * 1. Save calendar * 2. Save Contacs * @return Response */ public function store($org_id = null) { if (!Input::has('calendar')) { return new JSend('error', (array) Input::all(), 'Tidak ada data calendar.'); } $errors = new MessageBag(); DB::beginTransaction(); //1. Validate calendar Parameter $calendar = Input::get('calendar'); if (is_null($calendar['id'])) { $is_new = true; } else { $is_new = false; } $calendar_rules = ['organisation_id' => 'exists:hrom_organisations,id|' . ($is_new ? '' : 'in:' . $org_id), 'name' => 'max:255', 'start' => 'date_format:"H:i:s"', 'end' => 'date_format:"H:i:s"']; //1a. Get original data $calendar_data = \App\ThunderID\WorkforceManagementV1\Models\Calendar::findornew($calendar['id']); //1b. Validate Basic calendar Parameter $validator = Validator::make($calendar, $calendar_rules); if (!$validator->passes()) { $errors->add('calendar', $validator->errors()); } else { $validating_day = new VOC(); if (!$validating_day->validate(['workdays' => explode(',', $calendar['workdays']), 'breaks' => explode(',', $calendar['break_idle'])])) { $errors->add('calendar', $validating_day->getError()); } else { //if validator passed, save calendar $calendar_data['organisation_id'] = $org_id; $calendar_data = $calendar_data->fill($calendar); if (!$calendar_data->save()) { $errors->add('calendar', $calendar_data->getError()); } } } //End of validate calendar if ($errors->count()) { DB::rollback(); return new JSend('error', (array) Input::all(), $errors); } DB::commit(); $final_calendar = \App\ThunderID\WorkforceManagementV1\Models\Calendar::id($calendar_data['id'])->organisationid($org_id)->with(['organisation'])->first()->toArray(); return new JSend('success', (array) $final_calendar); }