public function postAdd(Request $request, $contract)
 {
     //dd($request->all());
     //Get the Contract
     $contract = SyndieContract::findOrFail($contract);
     //Validate that the type is present and that user has the permission to use it
     $type = $request->input("type");
     if ($request->user()->can('syndie_contract_moderate')) {
         $validate_array = ['type' => 'required|in:ic,ic-failrep,ic-comprep,ic-cancel,ooc,mod-ooc,mod-author'];
     } else {
         if ($request->user()->user_id == $contract->contractee_id) {
             $validate_array = ['type' => 'required|in:ic,ic-cancel,ooc,mod-author'];
         } else {
             $validate_array = ['type' => 'required|in:ic,ic-failrep,ic-comprep'];
         }
     }
     $this->validate($request, $validate_array);
     //Create new Comment but dont save it yet
     $comment = new SyndieContractComment();
     $comment->contract_id = $contract->contract_id;
     $comment->type = $type;
     $comment->commentor_id = $request->user()->user_id;
     //Get the type and validate the required options for the type
     $type = $request->input("type");
     switch ($type) {
         case "ic":
         case "ic-failrep":
             $this->validate($request, ['title' => 'required|max:50', 'comment' => 'required', 'commentor_name' => 'required|max:50']);
             $comment->title = $request->input('title');
             $comment->comment = $request->input('comment');
             $comment->commentor_name = $request->input('commentor_name');
             $comment->save();
             break;
         case "ic-cancel":
             $this->validate($request, ['title' => 'required|max:50', 'comment' => 'required', 'commentor_name' => 'required|max:50']);
             $comment->title = $request->input('title');
             $comment->comment = $request->input('comment');
             $comment->commentor_name = $request->input('commentor_name');
             $comment->save();
             $contract->status = "closed";
             $contract->save();
             break;
         case "ooc":
         case "mod-ooc":
         case "mod-author":
             $this->validate($request, ['title' => 'required|max:50', 'comment' => 'required']);
             $comment->title = $request->input('title');
             $comment->comment = $request->input('comment');
             $comment->commentor_name = $request->user()->username;
             $comment->save();
             break;
         case "ic-comprep":
             if ($contract->objectives()->count() > 0) {
                 $this->validate($request, ['title' => 'required|max:50', 'comment' => 'required', 'commentor_name' => 'required|max:50', 'objectives' => 'required', 'agents' => 'required']);
                 $comment->title = $request->input('title');
                 $comment->comment = $request->input('comment');
                 $comment->commentor_name = $request->input('commentor_name');
                 $comment->report_status = "waiting-approval";
                 $comment->save();
                 //Now sync the objectives and agents
                 $comment->objectives()->sync($request->input('objectives'));
                 $comment->completers()->sync($request->input('agents'));
             } else {
                 $this->validate($request, ['title' => 'required|max:50', 'comment' => 'required', 'commentor_name' => 'required|max:50', 'agents' => 'required']);
                 $comment->title = $request->input('title');
                 $comment->comment = $request->input('comment');
                 $comment->commentor_name = $request->input('commentor_name');
                 $comment->report_status = "waiting-approval";
                 $comment->save();
                 //Now sync the objectives and agents
                 $comment->completers()->sync($request->input('agents'));
             }
             break;
     }
     $this->dispatch(new SendContractNotificationEmail($contract, $type));
     Log::notice('perm.syndie.contractcomment.add - Contract Comment has been added', ['user_id' => $request->user()->user_id, 'comment_id' => $comment->comment_id]);
     return redirect()->route('syndie.contracts.show', ['contract' => $comment->contract_id]);
 }