public function storeGoat(Request $request, $parent_id)
 {
     $goat = new Goat();
     $goat->parent_id = $parent_id;
     $goat->type = $goat->parent->type == 'G' ? 'O' : ($goat->parent->type == 'O' ? 'A' : 'T');
     $goat->goal_type = $goat->parent->goal_type;
     $goat->bid = $goat->parent->bid;
     $goat->department_id = Auth::user()->leadOf()->first()->id;
     $goat->budget = null;
     $goat->description = $request->description;
     $goat->due_date = $request->due_date;
     $goat->priority = $request->priority;
     $goat->save();
     $userCollabs = array();
     $deptCollabs = array();
     if ($request->collabs) {
         foreach ($request->collabs as $col) {
             if (strpos($col, 'user') !== false) {
                 array_push($userCollabs, substr($col, 5));
             } else {
                 array_push($deptCollabs, substr($col, 5));
             }
         }
     }
     $leads = array_fill_keys($request->leads ? $request->leads : array(), ['user_role' => 'L']);
     $collabs = array_fill_keys($userCollabs, ['user_role' => 'C']);
     $goat->userLeads()->sync($leads + $collabs);
     $goat->departmentCollaborators()->sync($deptCollabs);
     $this->createNewGoatChange($goat);
     return redirect('/view');
 }
 public function create(Request $request)
 {
     $newBusinessPlan = new BusinessPlan();
     $newBusinessPlan->start = date($request['sYear'] . '-01-01 00:00:00');
     $newBusinessPlan->end = date($request['eYear'] . '-12-31 00:00:00');
     $newBusinessPlan->save();
     foreach (array_keys($request['data']) as $idx) {
         $key = array_keys($request['data'][$idx])[0];
         $newGoal = new Goat();
         $newGoal->type = 'G';
         $newGoal->parent_id = null;
         $newGoal->description = $key;
         $newGoal->priority = 0;
         $newGoal->complete = false;
         $newGoal->goal_type = 'B';
         $newGoal->due_date = null;
         $newGoal->budget = 0;
         $newGoal->bid = $newBusinessPlan->id;
         $newGoal->save();
         foreach ($request['data'][$idx][$key] as $obj) {
             $newObj = new Goat();
             $newObj->type = 'O';
             $newObj->parent_id = $newGoal->id;
             $newObj->description = $obj;
             $newObj->priority = 0;
             $newObj->complete = false;
             $newObj->goal_type = 'B';
             $newObj->due_date = null;
             $newObj->budget = 0;
             $newObj->bid = $newBusinessPlan->id;
             $newObj->save();
         }
     }
     foreach (Department::lists('name') as $dept_name) {
         $newGoal = new Goat();
         $newGoal->type = 'G';
         $newGoal->parent_id = null;
         $newGoal->description = $dept_name . " Goals";
         $newGoal->priority = 0;
         $newGoal->complete = false;
         $newGoal->goal_type = 'D';
         $newGoal->due_date = null;
         $newGoal->budget = 0;
         $newGoal->bid = $newBusinessPlan->id;
         $newGoal->save();
     }
     return response()->json([], 200);
 }
 /**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\Response
  */
 public function store(Request $request)
 {
     Department::create($request->input());
     foreach (BusinessPlan::lists('id') as $bid) {
         $newGoal = new Goat();
         $newGoal->type = 'G';
         $newGoal->parent_id = null;
         $newGoal->description = $request['name'] . " Goals";
         $newGoal->priority = 0;
         $newGoal->complete = false;
         $newGoal->goal_type = 'D';
         $newGoal->due_date = null;
         $newGoal->budget = 0;
         $newGoal->bid = $bid;
         $newGoal->save();
     }
     return redirect('admin/depts');
 }
 public function store(Request $request)
 {
     $elem = new Goat();
     $type = $request->type;
     $elem->bid = $request->businessId;
     if ($type == 'G') {
         $this->validate($request, ['businessId' => 'required', 'goalDescription' => 'required|min:10|max:300']);
         $elem->goal_type = 'B';
         $elem->type = $type;
         $elem->description = $request->goalDescription;
         $elem->priority = null;
         $elem->due_date = null;
         $elem->budget = null;
         $elem->parent_id = null;
         $elem->complete = null;
         $elem->department_id = null;
         $elem->save();
     } elseif ($type == 'O') {
         $this->validate($request, ['businessId' => 'required', 'goalId' => 'required', 'objectiveDescription' => 'required|min:10|max:300']);
         $elem->type = $type;
         $elem->goal_type = 'B';
         $elem->description = $request->objectiveDescription;
         $elem->priority = null;
         $elem->due_date = null;
         $elem->budget = null;
         $elem->parent_id = $request->goalId;
         $elem->complete = null;
         $elem->department_id = null;
         $elem->save();
     } elseif ($type == 'A') {
         $this->validate($request, ['businessId' => 'required', 'goalId' => 'required', 'objId' => 'required', 'actionDescription' => 'required|min:10|max:300', 'endDate' => 'required|date', 'leadName' => 'required']);
         $elem->type = $type;
         $elem->goal_type = 'B';
         $elem->description = $request->actionDescription;
         $elem->priority = $request->priority;
         $elem->due_date = $request->endDate;
         $elem->budget = null;
         $elem->parent_id = $request->objId;
         $elem->complete = null;
         $elem->department_id = Auth::user()->leadOf()->first()->id;
         $elem->save();
         if ($request->leadName === null && $request->collaboratorName === null) {
         } elseif ($request->leadName === null) {
             $collabs = array_fill_keys($request->collaboratorName, ['user_role' => 'C']);
             $elem->userLeads()->sync($collabs);
         } elseif ($request->collaboratorName === null) {
             $leads = array_fill_keys($request->leadName, ['user_role' => 'L']);
             $elem->userLeads()->sync($leads);
         } else {
             $leads = array_fill_keys($request->leadName, ['user_role' => 'L']);
             $collabs = array_fill_keys($request->collaboratorName, ['user_role' => 'C']);
             $elem->userLeads()->sync($leads + $collabs);
         }
     } else {
         $this->validate($request, ['businessId' => 'required', 'goalId' => 'required', 'objId' => 'required', 'actionId' => 'required', 'taskDescription' => 'required|min:10|max:300', 'endDate' => 'required|date', 'leadName' => 'required']);
         $elem->type = $type;
         $elem->goal_type = 'B';
         $elem->description = $request->taskDescription;
         $elem->priority = $request->priority;
         $elem->due_date = $request->endDate;
         $elem->budget = null;
         $elem->parent_id = $request->actionId;
         $elem->complete = null;
         $elem->department_id = Auth::user()->leadOf()->first()->id;
         $elem->save();
         if ($request->leadName === null && $request->collaboratorName === null) {
             return back();
         } elseif ($request->leadName === null) {
             $collabs = array_fill_keys($request->collaboratorName, ['user_role' => 'C']);
             $elem->userLeads()->sync($collabs);
         } elseif ($request->collaboratorName === null) {
             $leads = array_fill_keys($request->leadName, ['user_role' => 'L']);
             $elem->userLeads()->sync($leads);
         } else {
             $leads = array_fill_keys($request->leadName, ['user_role' => 'L']);
             $collabs = array_fill_keys($request->collaboratorName, ['user_role' => 'C']);
             $elem->userLeads()->sync($leads + $collabs);
         }
     }
     return back();
 }