コード例 #1
0
 /**
  * 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);
 }