public function addAchievement(Request $request) { /* * This part takes the data from the file and sets them * to the appropriate field in each model for the File * Record table. */ $file = $request->file('file'); $entry = new FileRecord(); $entry->mime = $file->getClientMimeType(); $entry->filename = $request->name; $entry->total_versions = 1; $entry->public_version = 1; $entry->owner_id = Auth::User()->id; $users = []; $departments = []; $mass = "0"; $sharing_array = ['users' => $users, 'departments' => $departments, 'mass' => $mass]; $sharing = json_encode($sharing_array); $entry->sharing = $sharing; $entry->doc_type_id = 2; $entry->save(); // End of FileRecord storing section. /* * This part instantiates a new Achievement modal. This handles * the part of the request that contains all the details of the * uploaded credential. */ $achievement = new Achievements(); $achievement->name = $request->name; $achievement->received = $request->received; $achievement->type = $request->type; $achievement->validity = $request->validity; $achievement->details = $request->details; $achievement->achievement_id = $entry->id; $achievement->save(); // End of Achievement storing section. /* * This is where the file gets stored into the server's disk. * The file's location is defined as: <userID><fileID><fileName> */ Storage::disk('local')->put(Auth::User()->id . $entry->id . $request->name . "/1", File::get($file)); // At this point, the file has been successfully saved. /* * This part handles sending emails to the system admins and HR * to notify them of a new credential. This way, HR knows that * there is a credential they need to verify. */ $admins = User::get()->where('user_type_id', 1); $hrs = User::get()->where('user_dept_id', 2); $uploader = Auth::user()->fname . " " . Auth::user()->lname . " (" . Auth::user()->username . ")"; $data = ['uploader' => $uploader, 'fileName' => $entry->filename, 'id' => $entry->id]; foreach ($admins as $admin) { Mail::queue('mail.newUpload', $data, function ($message) use(&$admin) { $message->to($admin->email, 'Admin')->subject('New Upload'); }); } foreach ($hrs as $hr) { Mail::queue('mail.newUpload', $data, function ($message) use(&$hr) { $message->to($hr->email, 'Admin')->subject('New Achievement Upload'); }); } // End of email sender section. return redirect('/dashboard/awards'); }