From e737974c6e89f33a7580dfa06535de7eccb31079 Mon Sep 17 00:00:00 2001 From: Regis Freyd Date: Wed, 17 Mar 2021 17:31:45 -0400 Subject: [PATCH] feat: ability to set a company logo (#635) --- .../{AvatarHelper.php => ImageHelper.php} | 22 +++- app/Helpers/InstanceHelper.php | 2 +- app/Helpers/LogHelper.php | 4 + .../Adminland/AdminExpenseController.php | 6 +- .../Adminland/AdminGeneralController.php | 38 +++++++ .../Adminland/AdminHardwareController.php | 4 +- .../Company/Company/CompanyController.php | 2 +- .../Company/HR/CompanyHRController.php | 2 +- .../Company/Project/ProjectController.php | 8 +- .../Project/ProjectDecisionsController.php | 6 +- .../Project/ProjectMembersController.php | 4 +- .../Project/ProjectTasksController.php | 6 +- .../Dashboard/DashboardQuestionController.php | 6 +- .../Company/Employee/EmployeeController.php | 8 +- .../Employee/EmployeeEditAvatarController.php | 4 +- .../Employee/EmployeePositionController.php | 6 +- .../Company/Team/TeamLeadController.php | 4 +- .../Company/Team/TeamRecentShipController.php | 4 +- .../Adminland/AdminEmployeeViewHelper.php | 4 +- .../Adminland/AdminExpenseViewHelper.php | 4 +- .../Adminland/AdminGeneralViewHelper.php | 9 +- .../Adminland/AdminHardwareViewHelper.php | 8 +- .../Company/CompanyQuestionViewHelper.php | 4 +- .../Company/CompanySkillViewHelper.php | 4 +- .../ViewHelpers/Company/CompanyViewHelper.php | 11 +- .../Project/ProjectDecisionsViewHelper.php | 4 +- .../Project/ProjectMembersViewHelper.php | 4 +- .../Project/ProjectMessagesViewHelper.php | 6 +- .../Project/ProjectTasksViewHelper.php | 10 +- .../Company/Project/ProjectViewHelper.php | 8 +- .../Dashboard/DashboardExpenseViewHelper.php | 18 ++-- .../Dashboard/DashboardHRViewHelper.php | 4 +- .../Dashboard/DashboardManagerViewHelper.php | 12 +-- .../Dashboard/DashboardMeViewHelper.php | 10 +- .../Dashboard/DashboardOneOnOneViewHelper.php | 6 +- .../Dashboard/DashboardTeamViewHelper.php | 12 +-- .../DashboardTimesheetViewHelper.php | 4 +- .../HR/DashboardHRTimesheetViewHelper.php | 4 +- .../DashboardManagerTimesheetViewHelper.php | 4 +- .../Employee/EmployeeECoffeeViewHelper.php | 4 +- .../Employee/EmployeeLogViewHelper.php | 4 +- .../Employee/EmployeeOneOnOneViewHelper.php | 8 +- .../Employee/EmployeeShowViewHelper.php | 15 ++- .../Employee/EmployeeSurveysViewHelper.php | 6 +- .../ViewHelpers/Team/TeamIndexViewHelper.php | 4 +- .../Team/TeamMembersViewHelper.php | 4 +- .../Team/TeamRecentShipViewHelper.php | 6 +- .../ViewHelpers/Team/TeamShowViewHelper.php | 8 +- app/Models/Company/Company.php | 12 +++ app/Models/Company/Employee.php | 4 +- app/Models/Company/TeamNews.php | 4 +- .../Adminland/Company/UpdateCompanyLogo.php | 81 ++++++++++++++ config/officelife.php | 3 +- .../2021_03_16_234714_add_company_logo.php | 22 ++++ public/img/logo-2x.png | Bin 46719 -> 17657 bytes public/img/logo.png | Bin 17562 -> 7851 bytes .../js/Pages/Adminland/General/Index.vue | 9 +- .../Pages/Adminland/General/Partials/Logo.vue | 102 ++++++++++++++++++ resources/js/Pages/Auth/Login.vue | 4 +- resources/js/Pages/Auth/Register.vue | 4 +- resources/js/Pages/Company/HR/Index.vue | 4 +- resources/js/Pages/Company/Index.vue | 5 +- resources/js/Pages/Company/Project/Index.vue | 4 +- resources/js/Pages/Home/Index.vue | 1 + resources/lang/en/account.php | 7 +- routes/web.php | 1 + ...atarHelperTest.php => ImageHelperTest.php} | 21 +++- tests/Unit/Models/Company/CompanyTest.php | 12 +++ tests/Unit/Models/Company/EmployeeTest.php | 4 +- tests/Unit/Models/Company/TeamNewsTest.php | 4 +- .../Company/UpdateCompanyLogoTest.php | 88 +++++++++++++++ .../Employee/AddEmployeeToCompanyTest.php | 4 +- .../Adminland/AdminEmployeeViewHelperTest.php | 4 +- .../Adminland/AdminExpenseViewHelperTest.php | 4 +- .../Adminland/AdminGeneralViewHelperTest.php | 17 ++- .../Adminland/AdminHardwareViewHelperTest.php | 6 +- .../Company/CompanySkillViewHelperTest.php | 6 +- .../Company/CompanyViewHelperTest.php | 22 ++-- .../ProjectDecisionsViewHelperTest.php | 6 +- .../Project/ProjectMembersViewHelperTest.php | 6 +- .../Project/ProjectMessagesViewHelperTest.php | 6 +- .../Project/ProjectTasksViewHelperTest.php | 14 +-- .../Company/Project/ProjectViewHelperTest.php | 6 +- .../DashboardExpenseViewHelperTest.php | 8 +- .../Dashboard/DashboardHRViewHelperTest.php | 4 +- .../DashboardManagerViewHelperTest.php | 10 +- .../Dashboard/DashboardMeViewHelperTest.php | 10 +- .../DashboardOneOnOneViewHelperTest.php | 6 +- .../Dashboard/DashboardTeamViewHelperTest.php | 14 +-- .../DashboardTimesheetViewHelperTest.php | 4 +- .../HR/DashboardHRTimesheetViewHelperTest.php | 4 +- ...ashboardManagerTimesheetViewHelperTest.php | 4 +- .../EmployeeECoffeeViewHelperTest.php | 4 +- .../Employee/EmployeeLogViewHelperTest.php | 4 +- .../EmployeeOneOnOneViewHelperTest.php | 12 +-- .../Employee/EmployeeShowViewHelperTest.php | 18 ++-- .../EmployeeSurveysViewHelperTest.php | 8 +- .../Team/TeamIndexViewHelperTest.php | 6 +- .../Team/TeamMembersViewHelperTest.php | 4 +- .../Team/TeamRecentShipViewHelperTest.php | 6 +- .../Team/TeamShowViewHelperTest.php | 8 +- 101 files changed, 699 insertions(+), 277 deletions(-) rename app/Helpers/{AvatarHelper.php => ImageHelper.php} (50%) create mode 100644 app/Services/Company/Adminland/Company/UpdateCompanyLogo.php create mode 100644 database/migrations/2021_03_16_234714_add_company_logo.php create mode 100644 resources/js/Pages/Adminland/General/Partials/Logo.vue rename tests/Unit/Helpers/{AvatarHelperTest.php => ImageHelperTest.php} (64%) create mode 100644 tests/Unit/Services/Company/Adminland/Company/UpdateCompanyLogoTest.php diff --git a/app/Helpers/AvatarHelper.php b/app/Helpers/ImageHelper.php similarity index 50% rename from app/Helpers/AvatarHelper.php rename to app/Helpers/ImageHelper.php index 2bda697d8..708b7150b 100644 --- a/app/Helpers/AvatarHelper.php +++ b/app/Helpers/ImageHelper.php @@ -2,18 +2,19 @@ namespace App\Helpers; +use App\Models\Company\File; use App\Models\Company\Employee; -class AvatarHelper +class ImageHelper { /** * Get the avatar of the user, at the requested size if it exists. * - * @var Employee - * @var int + * @param Employee $employee + * @param int $width * @return string|null */ - public static function getImage(Employee $employee, int $width = null): ?string + public static function getAvatar(Employee $employee, int $width = null): ?string { if (! $employee->avatar_file_id) { return 'https://ui-avatars.com/api/?name='.$employee->name; @@ -27,4 +28,17 @@ public static function getImage(Employee $employee, int $width = null): ?string return $url; } + + /** + * Get the URL of an image. + * + * @param File $file + * @param int $width + * @param int $height + * @return string|null + */ + public static function getImage(File $file, int $width = null, int $height = null): ?string + { + return $file->cdn_url.'-/preview/'.$width.'x'.$height.'/'; + } } diff --git a/app/Helpers/InstanceHelper.php b/app/Helpers/InstanceHelper.php index a9a5d7cf8..146b197ee 100644 --- a/app/Helpers/InstanceHelper.php +++ b/app/Helpers/InstanceHelper.php @@ -9,7 +9,7 @@ class InstanceHelper { /** - * Return the employee as set in the cache. + * Return the company as set in the cache. * * @return mixed */ diff --git a/app/Helpers/LogHelper.php b/app/Helpers/LogHelper.php index 93f2e19d7..a025fda75 100644 --- a/app/Helpers/LogHelper.php +++ b/app/Helpers/LogHelper.php @@ -1068,6 +1068,10 @@ public static function processAuditLog(AuditLog $log): string $sentence = trans('account.log_toggle_e_coffee_process'); break; + case 'company_logo_changed': + $sentence = trans('account.log_company_logo_changed'); + break; + default: $sentence = ''; break; diff --git a/app/Http/Controllers/Company/Adminland/AdminExpenseController.php b/app/Http/Controllers/Company/Adminland/AdminExpenseController.php index 7a3bab892..bc13f4ae9 100644 --- a/app/Http/Controllers/Company/Adminland/AdminExpenseController.php +++ b/app/Http/Controllers/Company/Adminland/AdminExpenseController.php @@ -4,8 +4,8 @@ use Inertia\Inertia; use Inertia\Response; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use App\Helpers\InstanceHelper; use App\Models\Company\Employee; use Illuminate\Http\JsonResponse; @@ -145,7 +145,7 @@ public function search(Request $request, int $companyId): JsonResponse $employees->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), ]); } @@ -178,7 +178,7 @@ public function addEmployee(Request $request, int $companyId): JsonResponse 'data' => [ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), 'url' => route('employees.show', [ 'company' => $loggedCompany, 'employee' => $employee, diff --git a/app/Http/Controllers/Company/Adminland/AdminGeneralController.php b/app/Http/Controllers/Company/Adminland/AdminGeneralController.php index 66be1393b..71f850724 100644 --- a/app/Http/Controllers/Company/Adminland/AdminGeneralController.php +++ b/app/Http/Controllers/Company/Adminland/AdminGeneralController.php @@ -4,13 +4,16 @@ use Inertia\Inertia; use Inertia\Response; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; use App\Helpers\InstanceHelper; use Illuminate\Http\JsonResponse; use App\Helpers\NotificationHelper; use App\Http\Controllers\Controller; +use App\Services\Company\Adminland\File\UploadFile; use App\Services\Company\Adminland\Company\RenameCompany; use App\Http\ViewHelpers\Adminland\AdminGeneralViewHelper; +use App\Services\Company\Adminland\Company\UpdateCompanyLogo; use App\Services\Company\Adminland\Company\UpdateCompanyCurrency; class AdminGeneralController extends Controller @@ -82,4 +85,39 @@ public function currency(Request $request, int $companyId): JsonResponse 'data' => true, ], 200); } + + /** + * Update the company’s logo. + * + * @param Request $request + * @param int $companyId + * @return JsonResponse + */ + public function logo(Request $request, int $companyId): JsonResponse + { + $loggedEmployee = InstanceHelper::getLoggedEmployee(); + $loggedCompany = InstanceHelper::getLoggedCompany(); + + $file = (new UploadFile)->execute([ + 'company_id' => $loggedCompany->id, + 'author_id' => $loggedEmployee->id, + 'uuid' => $request->input('uuid'), + 'name' => $request->input('name'), + 'original_url' => $request->input('original_url'), + 'cdn_url' => $request->input('cdn_url'), + 'mime_type' => $request->input('mime_type'), + 'size' => $request->input('size'), + 'type' => 'company_logo', + ]); + + (new UpdateCompanyLogo)->execute([ + 'company_id' => $loggedCompany->id, + 'author_id' => $loggedEmployee->id, + 'file_id' => $file->id, + ]); + + return response()->json([ + 'data' => ImageHelper::getImage($file, 300, 300), + ], 200); + } } diff --git a/app/Http/Controllers/Company/Adminland/AdminHardwareController.php b/app/Http/Controllers/Company/Adminland/AdminHardwareController.php index ac8df5e39..6e2aa3ce5 100644 --- a/app/Http/Controllers/Company/Adminland/AdminHardwareController.php +++ b/app/Http/Controllers/Company/Adminland/AdminHardwareController.php @@ -4,8 +4,8 @@ use Inertia\Inertia; use Inertia\Response; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use App\Helpers\InstanceHelper; use App\Models\Company\Hardware; use Illuminate\Http\JsonResponse; @@ -118,7 +118,7 @@ public function show(Request $request, int $companyId, int $hardwareId) 'employee' => $hardware->employee ? [ 'id' => $hardware->employee->id, 'name' => $hardware->employee->name, - 'avatar' => AvatarHelper::getImage($hardware->employee), + 'avatar' => ImageHelper::getAvatar($hardware->employee), ] : null, ]; diff --git a/app/Http/Controllers/Company/Company/CompanyController.php b/app/Http/Controllers/Company/Company/CompanyController.php index 34f861834..3cd6ae147 100644 --- a/app/Http/Controllers/Company/Company/CompanyController.php +++ b/app/Http/Controllers/Company/Company/CompanyController.php @@ -25,7 +25,7 @@ public function index(): Response $company = InstanceHelper::getLoggedCompany(); $employee = InstanceHelper::getLoggedEmployee(); - $statistics = CompanyViewHelper::statistics($company); + $statistics = CompanyViewHelper::information($company); $latestQuestions = CompanyViewHelper::latestQuestions($company); $birthdaysThisWeek = CompanyViewHelper::birthdaysThisWeek($company); $newHiresThisWeek = CompanyViewHelper::newHiresThisWeek($company); diff --git a/app/Http/Controllers/Company/Company/HR/CompanyHRController.php b/app/Http/Controllers/Company/Company/HR/CompanyHRController.php index 9ca39cffd..7d1fe2c16 100644 --- a/app/Http/Controllers/Company/Company/HR/CompanyHRController.php +++ b/app/Http/Controllers/Company/Company/HR/CompanyHRController.php @@ -24,7 +24,7 @@ public function index(): Response $employee = InstanceHelper::getLoggedEmployee(); $eCoffees = CompanyHRViewHelper::eCoffees($company); - $statistics = CompanyViewHelper::statistics($company); + $statistics = CompanyViewHelper::information($company); return Inertia::render('Company/HR/Index', [ 'tab' => 'hr', diff --git a/app/Http/Controllers/Company/Company/Project/ProjectController.php b/app/Http/Controllers/Company/Company/Project/ProjectController.php index 4f445adb1..0bc9ebbe0 100644 --- a/app/Http/Controllers/Company/Company/Project/ProjectController.php +++ b/app/Http/Controllers/Company/Company/Project/ProjectController.php @@ -4,8 +4,8 @@ use Inertia\Inertia; use Inertia\Response; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use App\Helpers\StringHelper; use App\Helpers\InstanceHelper; use App\Models\Company\Project; @@ -42,7 +42,7 @@ class ProjectController extends Controller public function index(Request $request, int $companyId): Response { $company = InstanceHelper::getLoggedCompany(); - $statistics = CompanyViewHelper::statistics($company); + $statistics = CompanyViewHelper::information($company); return Inertia::render('Company/Project/Index', [ 'statistics' => $statistics, @@ -331,7 +331,7 @@ public function assign(Request $request, int $companyId, int $projectId): JsonRe 'data' => [ 'id' => $lead->id, 'name' => $lead->name, - 'avatar' => AvatarHelper::getImage($lead, 35), + 'avatar' => ImageHelper::getAvatar($lead, 35), 'position' => (! $lead->position) ? null : [ 'id' => $lead->position->id, 'title' => $lead->position->title, @@ -411,7 +411,7 @@ public function search(Request $request, int $companyId): JsonResponse $employees->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), ]); } diff --git a/app/Http/Controllers/Company/Company/Project/ProjectDecisionsController.php b/app/Http/Controllers/Company/Company/Project/ProjectDecisionsController.php index 0931a4d50..0c2fd19c8 100644 --- a/app/Http/Controllers/Company/Company/Project/ProjectDecisionsController.php +++ b/app/Http/Controllers/Company/Company/Project/ProjectDecisionsController.php @@ -6,8 +6,8 @@ use Inertia\Inertia; use Inertia\Response; use App\Helpers\DateHelper; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use App\Helpers\InstanceHelper; use App\Models\Company\Project; use App\Models\Company\Employee; @@ -100,7 +100,7 @@ public function search(Request $request, int $companyId): JsonResponse $employees->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), ]); } @@ -148,7 +148,7 @@ public function store(Request $request, int $companyId, int $projectId): JsonRes $decidersCollection->push([ 'id' => $decider->id, 'name' => $decider->name, - 'avatar' => AvatarHelper::getImage($decider), + 'avatar' => ImageHelper::getAvatar($decider), 'url' => route('employees.show', [ 'company' => $loggedCompany, 'employee' => $decider, diff --git a/app/Http/Controllers/Company/Company/Project/ProjectMembersController.php b/app/Http/Controllers/Company/Company/Project/ProjectMembersController.php index b582fe3f5..fb42c2056 100644 --- a/app/Http/Controllers/Company/Company/Project/ProjectMembersController.php +++ b/app/Http/Controllers/Company/Company/Project/ProjectMembersController.php @@ -6,8 +6,8 @@ use Inertia\Inertia; use Inertia\Response; use App\Helpers\DateHelper; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use App\Helpers\InstanceHelper; use App\Models\Company\Project; use Illuminate\Http\JsonResponse; @@ -104,7 +104,7 @@ public function store(Request $request, int $companyId, int $projectId): JsonRes 'data' => [ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 64), + 'avatar' => ImageHelper::getAvatar($employee, 64), 'role' => $request->input('role'), 'added_at' => DateHelper::formatDate(Carbon::now()), 'position' => (! $employee->position) ? null : [ diff --git a/app/Http/Controllers/Company/Company/Project/ProjectTasksController.php b/app/Http/Controllers/Company/Company/Project/ProjectTasksController.php index 9e22d5c4d..e076177f5 100644 --- a/app/Http/Controllers/Company/Company/Project/ProjectTasksController.php +++ b/app/Http/Controllers/Company/Company/Project/ProjectTasksController.php @@ -6,8 +6,8 @@ use Inertia\Inertia; use Inertia\Response; use App\Helpers\TimeHelper; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use App\Helpers\InstanceHelper; use App\Models\Company\Project; use Illuminate\Http\JsonResponse; @@ -144,7 +144,7 @@ public function store(Request $request, int $companyId, int $projectId): JsonRes 'assignee' => $task->assignee ? [ 'id' => $task->assignee->id, 'name' => $task->assignee->name, - 'avatar' => AvatarHelper::getImage($task->assignee), + 'avatar' => ImageHelper::getAvatar($task->assignee), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $task->assignee, @@ -208,7 +208,7 @@ public function update(Request $request, int $companyId, int $projectId, int $ta 'assignee' => $task->assignee ? [ 'id' => $task->assignee->id, 'name' => $task->assignee->name, - 'avatar' => AvatarHelper::getImage($task->assignee), + 'avatar' => ImageHelper::getAvatar($task->assignee), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $task->assignee, diff --git a/app/Http/Controllers/Company/Dashboard/DashboardQuestionController.php b/app/Http/Controllers/Company/Dashboard/DashboardQuestionController.php index 2f41e98ba..e6513f897 100644 --- a/app/Http/Controllers/Company/Dashboard/DashboardQuestionController.php +++ b/app/Http/Controllers/Company/Dashboard/DashboardQuestionController.php @@ -2,8 +2,8 @@ namespace App\Http\Controllers\Company\Dashboard; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use Illuminate\Http\Response; use App\Helpers\InstanceHelper; use Illuminate\Http\JsonResponse; @@ -45,7 +45,7 @@ public function store(Request $request): JsonResponse 'employee' => [ 'id' => $answer->employee->id, 'name' => $answer->employee->name, - 'avatar' => AvatarHelper::getImage($answer->employee), + 'avatar' => ImageHelper::getAvatar($answer->employee), ], ]); } @@ -85,7 +85,7 @@ public function update(Request $request, int $companyId, int $answerId): JsonRes 'employee' => [ 'id' => $answer->employee->id, 'name' => $answer->employee->name, - 'avatar' => AvatarHelper::getImage($answer->employee), + 'avatar' => ImageHelper::getAvatar($answer->employee), ], ], ], 200); diff --git a/app/Http/Controllers/Company/Employee/EmployeeController.php b/app/Http/Controllers/Company/Employee/EmployeeController.php index 9642cb5e3..f8a05f56b 100644 --- a/app/Http/Controllers/Company/Employee/EmployeeController.php +++ b/app/Http/Controllers/Company/Employee/EmployeeController.php @@ -4,8 +4,8 @@ use Inertia\Inertia; use Inertia\Response; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use App\Helpers\InstanceHelper; use App\Models\Company\Employee; use Illuminate\Http\JsonResponse; @@ -41,7 +41,7 @@ public function index(Request $request, int $companyId): Response $employeesCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 64), + 'avatar' => ImageHelper::getAvatar($employee, 64), 'teams' => $employee->teams, 'position' => (! $employee->position) ? null : [ 'id' => $employee->position->id, @@ -148,7 +148,7 @@ public function assignManager(Request $request, int $companyId, int $employeeId) 'data' => [ 'id' => $manager->id, 'name' => $manager->name, - 'avatar' => AvatarHelper::getImage($manager), + 'avatar' => ImageHelper::getAvatar($manager), 'position' => (! $manager->position) ? null : [ 'id' => $manager->position->id, 'title' => $manager->position->title, @@ -188,7 +188,7 @@ public function assignDirectReport(Request $request, int $companyId, int $employ 'data' =>[ 'id' => $directReport->id, 'name' => $directReport->name, - 'avatar' => AvatarHelper::getImage($directReport), + 'avatar' => ImageHelper::getAvatar($directReport), 'position' => (! $directReport->position) ? null : [ 'id' => $directReport->position->id, 'title' => $directReport->position->title, diff --git a/app/Http/Controllers/Company/Employee/EmployeeEditAvatarController.php b/app/Http/Controllers/Company/Employee/EmployeeEditAvatarController.php index ff568a470..eb7823382 100644 --- a/app/Http/Controllers/Company/Employee/EmployeeEditAvatarController.php +++ b/app/Http/Controllers/Company/Employee/EmployeeEditAvatarController.php @@ -3,8 +3,8 @@ namespace App\Http\Controllers\Company\Employee; use Inertia\Response; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use App\Helpers\InstanceHelper; use App\Models\Company\Employee; use Illuminate\Http\JsonResponse; @@ -51,7 +51,7 @@ public function update(Request $request, int $companyId, int $employeeId): JsonR $employee->refresh(); return response()->json([ - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), ], 200); } } diff --git a/app/Http/Controllers/Company/Employee/EmployeePositionController.php b/app/Http/Controllers/Company/Employee/EmployeePositionController.php index 9d23d5ec6..f58849faf 100644 --- a/app/Http/Controllers/Company/Employee/EmployeePositionController.php +++ b/app/Http/Controllers/Company/Employee/EmployeePositionController.php @@ -2,8 +2,8 @@ namespace App\Http\Controllers\Company\Employee; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use App\Helpers\InstanceHelper; use App\Models\Company\Employee; use Illuminate\Http\JsonResponse; @@ -38,7 +38,7 @@ public function store(Request $request, int $companyId, int $employeeId): JsonRe 'data' => [ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), 'position' => ($employee->position) ? $employee->position : null, ], ], 200); @@ -68,7 +68,7 @@ public function destroy(Request $request, int $companyId, int $employeeId): Json 'data' => [ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), 'position' => null, ], ], 200); diff --git a/app/Http/Controllers/Company/Team/TeamLeadController.php b/app/Http/Controllers/Company/Team/TeamLeadController.php index 170ba268b..6638c0429 100644 --- a/app/Http/Controllers/Company/Team/TeamLeadController.php +++ b/app/Http/Controllers/Company/Team/TeamLeadController.php @@ -3,8 +3,8 @@ namespace App\Http\Controllers\Company\Team; use Inertia\Response; +use App\Helpers\ImageHelper; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use App\Helpers\InstanceHelper; use App\Models\Company\Employee; use Illuminate\Http\JsonResponse; @@ -72,7 +72,7 @@ public function store(Request $request, int $companyId, int $teamId): JsonRespon 'data' => [ 'id' => $lead->id, 'name' => $lead->name, - 'avatar' => AvatarHelper::getImage($lead), + 'avatar' => ImageHelper::getAvatar($lead), 'position' => (! $lead->position) ? null : [ 'title' => $lead->position->title, ], diff --git a/app/Http/Controllers/Company/Team/TeamRecentShipController.php b/app/Http/Controllers/Company/Team/TeamRecentShipController.php index 24b4462fe..e22eb608a 100644 --- a/app/Http/Controllers/Company/Team/TeamRecentShipController.php +++ b/app/Http/Controllers/Company/Team/TeamRecentShipController.php @@ -4,10 +4,10 @@ use Inertia\Inertia; use Inertia\Response; +use App\Helpers\ImageHelper; use App\Models\Company\Ship; use App\Models\Company\Team; use Illuminate\Http\Request; -use App\Helpers\AvatarHelper; use App\Helpers\InstanceHelper; use App\Models\Company\Employee; use Illuminate\Http\JsonResponse; @@ -78,7 +78,7 @@ public function search(Request $request, int $companyId): JsonResponse $employees->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 23), + 'avatar' => ImageHelper::getAvatar($employee, 23), ]); } diff --git a/app/Http/ViewHelpers/Adminland/AdminEmployeeViewHelper.php b/app/Http/ViewHelpers/Adminland/AdminEmployeeViewHelper.php index e22bf4951..61f2a552b 100644 --- a/app/Http/ViewHelpers/Adminland/AdminEmployeeViewHelper.php +++ b/app/Http/ViewHelpers/Adminland/AdminEmployeeViewHelper.php @@ -2,7 +2,7 @@ namespace App\Http\ViewHelpers\Adminland; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Company; use Illuminate\Support\Collection; use Illuminate\Database\Eloquent\Collection as EloquentCollection; @@ -84,7 +84,7 @@ private static function getCollectionOfEmployees(Collection $employees, Company 'id' => $employee->id, 'name' => $employee->name, 'permission_level' => $employee->permission_level, - 'avatar' => AvatarHelper::getImage($employee, 64), + 'avatar' => ImageHelper::getAvatar($employee, 64), 'invitation_link' => $employee->invitation_link, 'invited' => (! $employee->invitation_used_at && $employee->invitation_link) === true, 'lock_status' => $employee->locked, diff --git a/app/Http/ViewHelpers/Adminland/AdminExpenseViewHelper.php b/app/Http/ViewHelpers/Adminland/AdminExpenseViewHelper.php index ee5578cb7..9c3ff5a42 100644 --- a/app/Http/ViewHelpers/Adminland/AdminExpenseViewHelper.php +++ b/app/Http/ViewHelpers/Adminland/AdminExpenseViewHelper.php @@ -2,7 +2,7 @@ namespace App\Http\ViewHelpers\Adminland; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Company; use Illuminate\Support\Collection; @@ -47,7 +47,7 @@ public static function employees($company): ?Collection $employeesCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $employee, diff --git a/app/Http/ViewHelpers/Adminland/AdminGeneralViewHelper.php b/app/Http/ViewHelpers/Adminland/AdminGeneralViewHelper.php index 3961a551f..53de8b236 100644 --- a/app/Http/ViewHelpers/Adminland/AdminGeneralViewHelper.php +++ b/app/Http/ViewHelpers/Adminland/AdminGeneralViewHelper.php @@ -3,8 +3,8 @@ namespace App\Http\ViewHelpers\Adminland; use App\Helpers\DateHelper; +use App\Helpers\ImageHelper; use App\Models\Company\File; -use App\Helpers\AvatarHelper; use App\Models\Company\Company; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; @@ -34,7 +34,7 @@ public static function information($company): ?array $administratorsCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 22), + 'avatar' => ImageHelper::getAvatar($employee, 22), 'url_view' => route('employees.show', [ 'company' => $company, 'employee' => $employee, @@ -49,6 +49,9 @@ public static function information($company): ?array $totalSize = DB::table('files')->where('company_id', $company->id) ->sum('size'); + // logo + $logo = $company->logo ? ImageHelper::getImage($company->logo, 300, 300) : null; + return [ 'id' => $company->id, 'name' => $name, @@ -56,6 +59,8 @@ public static function information($company): ?array 'creation_date' => $creationDate, 'currency' => $company->currency, 'total_size' => round($totalSize / 1000, 4), + 'logo' => $logo, + 'uploadcare_public_key' => config('officelife.uploadcare_public_key'), ]; } diff --git a/app/Http/ViewHelpers/Adminland/AdminHardwareViewHelper.php b/app/Http/ViewHelpers/Adminland/AdminHardwareViewHelper.php index f1e61e715..01bcd9023 100644 --- a/app/Http/ViewHelpers/Adminland/AdminHardwareViewHelper.php +++ b/app/Http/ViewHelpers/Adminland/AdminHardwareViewHelper.php @@ -3,7 +3,7 @@ namespace App\Http\ViewHelpers\Adminland; use App\Helpers\DateHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Company; use App\Models\Company\AuditLog; use App\Models\Company\Hardware; @@ -37,7 +37,7 @@ public static function hardware($hardware): ?array 'employee' => ($employee) ? [ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), ] : null, ]); } @@ -104,7 +104,7 @@ public static function availableHardware($hardware): ?array 'employee' => ($employee) ? [ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), ] : null, ]); } @@ -151,7 +151,7 @@ public static function lentHardware($hardware): ?array 'employee' => ($employee) ? [ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), ] : null, ]); } diff --git a/app/Http/ViewHelpers/Company/CompanyQuestionViewHelper.php b/app/Http/ViewHelpers/Company/CompanyQuestionViewHelper.php index 15407aa95..ca4a812c6 100644 --- a/app/Http/ViewHelpers/Company/CompanyQuestionViewHelper.php +++ b/app/Http/ViewHelpers/Company/CompanyQuestionViewHelper.php @@ -3,7 +3,7 @@ namespace App\Http\ViewHelpers\Company; use App\Helpers\DateHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Answer; use App\Helpers\QuestionHelper; use App\Models\Company\Company; @@ -78,7 +78,7 @@ public static function question(Question $question, $answers, Employee $employee 'body' => $answer->body, 'employee' => [ 'name' => $answer->employee->name, - 'avatar' => AvatarHelper::getImage($answer->employee, 22), + 'avatar' => ImageHelper::getAvatar($answer->employee, 22), ], ]); } diff --git a/app/Http/ViewHelpers/Company/CompanySkillViewHelper.php b/app/Http/ViewHelpers/Company/CompanySkillViewHelper.php index e06355e32..30653e5ca 100644 --- a/app/Http/ViewHelpers/Company/CompanySkillViewHelper.php +++ b/app/Http/ViewHelpers/Company/CompanySkillViewHelper.php @@ -2,7 +2,7 @@ namespace App\Http\ViewHelpers\Company; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Skill; use App\Models\Company\Company; use Illuminate\Support\Collection; @@ -103,7 +103,7 @@ public static function employeesWithSkill(Skill $skill): ?Collection $employeesCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 65), + 'avatar' => ImageHelper::getAvatar($employee, 65), 'position' => (! $employee->position) ? null : [ 'title' => $employee->position->title, ], diff --git a/app/Http/ViewHelpers/Company/CompanyViewHelper.php b/app/Http/ViewHelpers/Company/CompanyViewHelper.php index e779359c3..5da1dfbea 100644 --- a/app/Http/ViewHelpers/Company/CompanyViewHelper.php +++ b/app/Http/ViewHelpers/Company/CompanyViewHelper.php @@ -6,7 +6,7 @@ use OutOfRangeException; use App\Helpers\DateHelper; use Illuminate\Support\Str; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Helpers\StringHelper; use App\Helpers\BirthdayHelper; use App\Models\Company\Company; @@ -23,7 +23,7 @@ class CompanyViewHelper * @param Company $company * @return array */ - public static function statistics(Company $company): array + public static function information(Company $company): array { $teams = $company->teams->count(); $employees = $company->employees()->notLocked()->count(); @@ -31,6 +31,7 @@ public static function statistics(Company $company): array return [ 'number_of_teams' => $teams, 'number_of_employees' => $employees, + 'logo' => $company->logo ? ImageHelper::getImage($company->logo, 200, 200) : null, ]; } @@ -108,7 +109,7 @@ public static function birthdaysThisWeek(Company $company): array $birthdaysCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 35), + 'avatar' => ImageHelper::getAvatar($employee, 35), 'birthdate' => DateHelper::formatMonthAndDay($birthdateWithCurrentYear), 'sort_key' => Carbon::createFromDate($now->year, $birthdateWithCurrentYear->month, $birthdateWithCurrentYear->day)->format('Y-m-d'), 'url' => route('employees.show', [ @@ -156,7 +157,7 @@ public static function newHiresThisWeek(Company $company): Collection 'employee' => $employee->id, ]), 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 35), + 'avatar' => ImageHelper::getAvatar($employee, 35), 'hired_at' => DateHelper::formatDayAndMonthInParenthesis($date), 'position' => (! $position) ? null : $position->title, ]); @@ -315,7 +316,7 @@ public static function guessEmployeeGameInformation(Employee $employee, Company return [ 'id' => $game->id, - 'avatar_to_find' => AvatarHelper::getImage($employeeToFind, 80), + 'avatar_to_find' => ImageHelper::getAvatar($employeeToFind, 80), 'choices' => $choices, ]; } diff --git a/app/Http/ViewHelpers/Company/Project/ProjectDecisionsViewHelper.php b/app/Http/ViewHelpers/Company/Project/ProjectDecisionsViewHelper.php index fa74bde6f..51e0c7a18 100644 --- a/app/Http/ViewHelpers/Company/Project/ProjectDecisionsViewHelper.php +++ b/app/Http/ViewHelpers/Company/Project/ProjectDecisionsViewHelper.php @@ -3,7 +3,7 @@ namespace App\Http\ViewHelpers\Company\Project; use App\Helpers\DateHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Project; use Illuminate\Support\Collection; @@ -31,7 +31,7 @@ public static function decisions(Project $project): Collection $decidersCollection->push([ 'id' => $decider->id, 'name' => $decider->name, - 'avatar' => AvatarHelper::getImage($decider, 22), + 'avatar' => ImageHelper::getAvatar($decider, 22), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $decider, diff --git a/app/Http/ViewHelpers/Company/Project/ProjectMembersViewHelper.php b/app/Http/ViewHelpers/Company/Project/ProjectMembersViewHelper.php index 262830b2a..bf4b7f329 100644 --- a/app/Http/ViewHelpers/Company/Project/ProjectMembersViewHelper.php +++ b/app/Http/ViewHelpers/Company/Project/ProjectMembersViewHelper.php @@ -3,7 +3,7 @@ namespace App\Http\ViewHelpers\Company\Project; use App\Helpers\DateHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Project; class ProjectMembersViewHelper @@ -29,7 +29,7 @@ public static function members(Project $project): array $membersCollection->push([ 'id' => $member->id, 'name' => $member->name, - 'avatar' => AvatarHelper::getImage($member, 64), + 'avatar' => ImageHelper::getAvatar($member, 64), 'role' => $member->pivot->role, 'added_at' => DateHelper::formatDate($member->pivot->created_at), 'position' => (! $member->position) ? null : [ diff --git a/app/Http/ViewHelpers/Company/Project/ProjectMessagesViewHelper.php b/app/Http/ViewHelpers/Company/Project/ProjectMessagesViewHelper.php index 63249d2b3..9c69dd9e5 100644 --- a/app/Http/ViewHelpers/Company/Project/ProjectMessagesViewHelper.php +++ b/app/Http/ViewHelpers/Company/Project/ProjectMessagesViewHelper.php @@ -5,7 +5,7 @@ use Carbon\Carbon; use App\Helpers\DateHelper; use Illuminate\Support\Str; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Helpers\StringHelper; use App\Models\Company\Project; use App\Models\Company\Employee; @@ -58,7 +58,7 @@ public static function index(Project $project, Employee $employee): Collection 'author' => $author ? [ 'id' => $author->id, 'name' => $author->name, - 'avatar' => AvatarHelper::getImage($author, 22), + 'avatar' => ImageHelper::getAvatar($author, 22), 'url_view' => route('employees.show', [ 'company' => $company, 'employee' => $author, @@ -104,7 +104,7 @@ public static function show(ProjectMessage $projectMessage): array 'author' => $author ? [ 'id' => $author->id, 'name' => $author->name, - 'avatar' => AvatarHelper::getImage($author, 64), + 'avatar' => ImageHelper::getAvatar($author, 64), 'role' => $role ? $role->role : null, 'added_at' => $role ? DateHelper::formatDate(Carbon::createFromFormat('Y-m-d H:i:s', $role->created_at)) : null, 'position' => (! $author->position) ? null : [ diff --git a/app/Http/ViewHelpers/Company/Project/ProjectTasksViewHelper.php b/app/Http/ViewHelpers/Company/Project/ProjectTasksViewHelper.php index 468269512..873d3d6f1 100644 --- a/app/Http/ViewHelpers/Company/Project/ProjectTasksViewHelper.php +++ b/app/Http/ViewHelpers/Company/Project/ProjectTasksViewHelper.php @@ -5,7 +5,7 @@ use Carbon\Carbon; use App\Helpers\DateHelper; use App\Helpers\TimeHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Company; use App\Models\Company\Project; use Illuminate\Support\Collection; @@ -63,7 +63,7 @@ public static function index(Project $project): array 'assignee' => $assignee ? [ 'id' => $assignee->id, 'name' => $assignee->name, - 'avatar' => AvatarHelper::getImage($assignee, 15), + 'avatar' => ImageHelper::getAvatar($assignee, 15), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $assignee, @@ -109,7 +109,7 @@ public static function index(Project $project): array 'assignee' => $assignee ? [ 'id' => $assignee->id, 'name' => $assignee->name, - 'avatar' => AvatarHelper::getImage($assignee, 15), + 'avatar' => ImageHelper::getAvatar($assignee, 15), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $assignee, @@ -203,7 +203,7 @@ public static function getTaskFullDetails(ProjectTask $task, Company $company): 'author' => $author ? [ 'id' => $author->id, 'name' => $author->name, - 'avatar' => AvatarHelper::getImage($author, 35), + 'avatar' => ImageHelper::getAvatar($author, 35), 'role' => $role ? $role->role : null, 'added_at' => $role ? DateHelper::formatDate(Carbon::createFromFormat('Y-m-d H:i:s', $role->created_at)) : null, 'position' => (! $author->position) ? null : $author->position->title, @@ -215,7 +215,7 @@ public static function getTaskFullDetails(ProjectTask $task, Company $company): 'assignee' => $assignee ? [ 'id' => $assignee->id, 'name' => $assignee->name, - 'avatar' => AvatarHelper::getImage($assignee), + 'avatar' => ImageHelper::getAvatar($assignee), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $assignee, diff --git a/app/Http/ViewHelpers/Company/Project/ProjectViewHelper.php b/app/Http/ViewHelpers/Company/Project/ProjectViewHelper.php index b0b94c920..1e6311f3e 100644 --- a/app/Http/ViewHelpers/Company/Project/ProjectViewHelper.php +++ b/app/Http/ViewHelpers/Company/Project/ProjectViewHelper.php @@ -3,7 +3,7 @@ namespace App\Http\ViewHelpers\Company\Project; use App\Helpers\DateHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Helpers\StringHelper; use App\Models\Company\Company; use App\Models\Company\Project; @@ -83,7 +83,7 @@ public static function summary(Project $project, Company $company): array 'author' => $author ? [ 'id' => $author->id, 'name' => $author->name, - 'avatar' => AvatarHelper::getImage($author, 32), + 'avatar' => ImageHelper::getAvatar($author, 32), 'position' => (! $author->position) ? null : [ 'id' => $author->position->id, 'title' => $author->position->title, @@ -105,7 +105,7 @@ public static function summary(Project $project, Company $company): array 'project_lead' => $lead ? [ 'id' => $lead->id, 'name' => $lead->name, - 'avatar' => AvatarHelper::getImage($lead, 35), + 'avatar' => ImageHelper::getAvatar($lead, 35), 'position' => (! $lead->position) ? null : [ 'id' => $lead->position->id, 'title' => $lead->position->title, @@ -186,7 +186,7 @@ public static function info(Project $project): array foreach ($randomMembers as $member) { $membersCollection->push([ 'id' => $member->id, - 'avatar' => AvatarHelper::getImage($member, 32), + 'avatar' => ImageHelper::getAvatar($member, 32), 'name' => $member->name, 'url' => route('employees.show', [ 'company' => $company, diff --git a/app/Http/ViewHelpers/Dashboard/DashboardExpenseViewHelper.php b/app/Http/ViewHelpers/Dashboard/DashboardExpenseViewHelper.php index bf466928b..cdc117bd3 100644 --- a/app/Http/ViewHelpers/Dashboard/DashboardExpenseViewHelper.php +++ b/app/Http/ViewHelpers/Dashboard/DashboardExpenseViewHelper.php @@ -3,8 +3,8 @@ namespace App\Http\ViewHelpers\Dashboard; use App\Helpers\DateHelper; +use App\Helpers\ImageHelper; use App\Helpers\MoneyHelper; -use App\Helpers\AvatarHelper; use App\Models\Company\Company; use App\Models\Company\Expense; use Illuminate\Support\Collection; @@ -44,12 +44,12 @@ public static function waitingForAccountingApproval(Company $company): ?Collecti 'manager' => $manager ? [ 'id' => $manager->id, 'name' => $manager->name, - 'avatar' => AvatarHelper::getImage($manager, 18), + 'avatar' => ImageHelper::getAvatar($manager, 18), ] : ($expense->manager_approver_name == '' ? null : $expense->manager_approver_name), 'employee' => $expense->employee ? [ 'id' => $expense->employee->id, 'name' => $expense->employee->name, - 'avatar' => AvatarHelper::getImage($expense->employee, 18), + 'avatar' => ImageHelper::getAvatar($expense->employee, 18), ] : [ 'employee_name' => $expense->employee_name, ], @@ -89,7 +89,7 @@ public static function waitingForManagerApproval(Company $company): ?Collection $managerCollection->push([ 'id' => $manager->manager->id, 'name' => $manager->manager->name, - 'avatar' => AvatarHelper::getImage($manager->manager, 18), + 'avatar' => ImageHelper::getAvatar($manager->manager, 18), ]); } } @@ -108,7 +108,7 @@ public static function waitingForManagerApproval(Company $company): ?Collection 'employee' => ($expense->employee) ? [ 'id' => $expense->employee->id, 'name' => $expense->employee->name, - 'avatar' => AvatarHelper::getImage($expense->employee, 18), + 'avatar' => ImageHelper::getAvatar($expense->employee, 18), ] : [ 'employee_name' => $expense->employee_name, ], @@ -156,7 +156,7 @@ public static function acceptedAndRejected(Company $company): ?Collection 'employee' => ($expense->employee) ? [ 'id' => $expense->employee->id, 'name' => $expense->employee->name, - 'avatar' => AvatarHelper::getImage($expense->employee), + 'avatar' => ImageHelper::getAvatar($expense->employee), ] : [ 'employee_name' => $expense->employee_name, ], @@ -201,7 +201,7 @@ public static function expense(Expense $expense): array 'manager' => $manager ? [ 'id' => $manager->id, 'name' => $manager->name, - 'avatar' => AvatarHelper::getImage($manager), + 'avatar' => ImageHelper::getAvatar($manager), 'position' => $manager->position ? $manager->position->title : null, 'status' => $manager->status ? $manager->status->name : null, ] : [ @@ -214,7 +214,7 @@ public static function expense(Expense $expense): array 'accountant' => $accountant ? [ 'id' => $accountant->id, 'name' => $accountant->name, - 'avatar' => AvatarHelper::getImage($accountant), + 'avatar' => ImageHelper::getAvatar($accountant), 'position' => $accountant->position ? $accountant->position->title : null, 'status' => $accountant->status ? $accountant->status->name : null, ] : [ @@ -227,7 +227,7 @@ public static function expense(Expense $expense): array 'employee' => $employee ? [ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), 'position' => $employee->position ? $employee->position->title : null, 'status' => $employee->status ? $employee->status->name : null, ] : [ diff --git a/app/Http/ViewHelpers/Dashboard/DashboardHRViewHelper.php b/app/Http/ViewHelpers/Dashboard/DashboardHRViewHelper.php index e7add116d..c2a02f9a3 100644 --- a/app/Http/ViewHelpers/Dashboard/DashboardHRViewHelper.php +++ b/app/Http/ViewHelpers/Dashboard/DashboardHRViewHelper.php @@ -3,7 +3,7 @@ namespace App\Http\ViewHelpers\Dashboard; use Carbon\Carbon; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Company; use App\Models\Company\Timesheet; use Illuminate\Support\Facades\DB; @@ -52,7 +52,7 @@ public static function employeesWithoutManagersWithPendingTimesheets(Company $co $employeesCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), ]); } diff --git a/app/Http/ViewHelpers/Dashboard/DashboardManagerViewHelper.php b/app/Http/ViewHelpers/Dashboard/DashboardManagerViewHelper.php index 3fa304961..2032cb4be 100644 --- a/app/Http/ViewHelpers/Dashboard/DashboardManagerViewHelper.php +++ b/app/Http/ViewHelpers/Dashboard/DashboardManagerViewHelper.php @@ -4,8 +4,8 @@ use Carbon\Carbon; use App\Helpers\DateHelper; +use App\Helpers\ImageHelper; use App\Helpers\MoneyHelper; -use App\Helpers\AvatarHelper; use App\Models\Company\Expense; use App\Models\Company\Employee; use App\Models\Company\Timesheet; @@ -57,7 +57,7 @@ public static function pendingExpenses(Employee $manager, Collection $directRepo 'employee' => ($employee) ? [ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 18), + 'avatar' => ImageHelper::getAvatar($employee, 18), ] : [ 'employee_name' => $expense->employee_name, ], @@ -96,7 +96,7 @@ public static function expense(Expense $expense): array 'employee' => $employee ? [ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), 'position' => $employee->position ? $employee->position->title : null, 'status' => $employee->status ? $employee->status->name : null, ] : [ @@ -143,7 +143,7 @@ public static function oneOnOnes(Employee $manager, Collection $directReports): $oneOnOnesCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 35), + 'avatar' => ImageHelper::getAvatar($employee, 35), 'position' => (! $employee->position) ? null : $employee->position->title, 'url' => route('employees.show', [ 'company' => $company, @@ -201,7 +201,7 @@ public static function contractRenewals(Employee $manager, Collection $directRep $collection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 35), + 'avatar' => ImageHelper::getAvatar($employee, 35), 'position' => (! $employee->position) ? null : $employee->position->title, 'url' => route('employees.show', [ 'company' => $company, @@ -244,7 +244,7 @@ public static function employeesWithTimesheetsToApprove(Employee $manager, Colle if ($pendingTimesheets->count() !== 0) { $employeesCollection->push([ 'id' => $employee->id, - 'avatar' => AvatarHelper::getImage($employee, 32), + 'avatar' => ImageHelper::getAvatar($employee, 32), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $employee, diff --git a/app/Http/ViewHelpers/Dashboard/DashboardMeViewHelper.php b/app/Http/ViewHelpers/Dashboard/DashboardMeViewHelper.php index c96056a1b..ccd009997 100644 --- a/app/Http/ViewHelpers/Dashboard/DashboardMeViewHelper.php +++ b/app/Http/ViewHelpers/Dashboard/DashboardMeViewHelper.php @@ -4,8 +4,8 @@ use Carbon\Carbon; use App\Helpers\DateHelper; +use App\Helpers\ImageHelper; use App\Helpers\MoneyHelper; -use App\Helpers\AvatarHelper; use App\Helpers\QuestionHelper; use App\Models\Company\Company; use App\Models\Company\ECoffee; @@ -48,7 +48,7 @@ public static function question(Employee $employee): ?array 'employee' => [ 'id' => $answer->employee->id, 'name' => $answer->employee->name, - 'avatar' => AvatarHelper::getImage($answer->employee, 22), + 'avatar' => ImageHelper::getAvatar($answer->employee, 22), ], ]); } @@ -236,7 +236,7 @@ public static function oneOnOnes(Employee $employee): Collection $managersCollection->push([ 'id' => $manager->id, 'name' => $manager->name, - 'avatar' => AvatarHelper::getImage($manager, 35), + 'avatar' => ImageHelper::getAvatar($manager, 35), 'position' => (! $manager->position) ? null : $manager->position->title, 'url' => route('employees.show', [ 'company' => $company, @@ -349,13 +349,13 @@ public static function eCoffee(Employee $employee, Company $company): ?array 'e_coffee_id' => $latestECoffee->id, 'happened' => $match->happened, 'employee' => [ - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), ], 'other_employee' => [ 'id' => $otherEmployee->id, 'name' => $otherEmployee->name, 'first_name' => $otherEmployee->first_name, - 'avatar' => AvatarHelper::getImage($otherEmployee, 55), + 'avatar' => ImageHelper::getAvatar($otherEmployee, 55), 'position' => $otherEmployee->position ? $otherEmployee->position->title : null, 'url' => route('employees.show', [ 'company' => $company, diff --git a/app/Http/ViewHelpers/Dashboard/DashboardOneOnOneViewHelper.php b/app/Http/ViewHelpers/Dashboard/DashboardOneOnOneViewHelper.php index a28b709ce..9422e5e65 100644 --- a/app/Http/ViewHelpers/Dashboard/DashboardOneOnOneViewHelper.php +++ b/app/Http/ViewHelpers/Dashboard/DashboardOneOnOneViewHelper.php @@ -3,7 +3,7 @@ namespace App\Http\ViewHelpers\Dashboard; use App\Helpers\DateHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\OneOnOneEntry; class DashboardOneOnOneViewHelper @@ -67,7 +67,7 @@ public static function details(OneOnOneEntry $entry): array 'employee' => [ 'id' => $entry->employee->id, 'name' => $entry->employee->name, - 'avatar' => AvatarHelper::getImage($entry->employee, 35), + 'avatar' => ImageHelper::getAvatar($entry->employee, 35), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $entry->employee, @@ -76,7 +76,7 @@ public static function details(OneOnOneEntry $entry): array 'manager' => [ 'id' => $entry->manager->id, 'name' => $entry->manager->name, - 'avatar' => AvatarHelper::getImage($entry->manager), + 'avatar' => ImageHelper::getAvatar($entry->manager), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $entry->manager, diff --git a/app/Http/ViewHelpers/Dashboard/DashboardTeamViewHelper.php b/app/Http/ViewHelpers/Dashboard/DashboardTeamViewHelper.php index 6a8b846bf..f429ee4f9 100644 --- a/app/Http/ViewHelpers/Dashboard/DashboardTeamViewHelper.php +++ b/app/Http/ViewHelpers/Dashboard/DashboardTeamViewHelper.php @@ -5,8 +5,8 @@ use Carbon\Carbon; use Carbon\CarbonPeriod; use App\Helpers\DateHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Team; -use App\Helpers\AvatarHelper; use App\Helpers\BirthdayHelper; use Illuminate\Support\Collection; use App\Helpers\WorkFromHomeHelper; @@ -52,7 +52,7 @@ public static function birthdays(Team $team): array 'employee' => $employee, ]), 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 35), + 'avatar' => ImageHelper::getAvatar($employee, 35), 'birthdate' => DateHelper::formatMonthAndDay($employee->birthdate), 'sort_key' => Carbon::createFromDate($now->year, $employee->birthdate->month, $employee->birthdate->day)->format('Y-m-d'), ]); @@ -97,7 +97,7 @@ public static function workFromHome(Team $team): Collection 'employee' => $employee, ]), 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 35), + 'avatar' => ImageHelper::getAvatar($employee, 35), 'position' => $employee->position, ]); } @@ -148,7 +148,7 @@ public static function ships(Team $team): Collection $employeeCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 17), + 'avatar' => ImageHelper::getAvatar($employee, 17), 'url' => route('employees.show', [ 'company' => $team->company, 'employee' => $employee, @@ -246,7 +246,7 @@ public static function upcomingNewHires(Team $team): Collection $employeesCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 35), + 'avatar' => ImageHelper::getAvatar($employee, 35), 'hired_at' => DateHelper::formatDayAndMonthInParenthesis($employee->hired_at), 'position' => (! $employee->position) ? null : [ 'id' => $employee->position->id, @@ -302,7 +302,7 @@ public static function upcomingHiredDateAnniversaries(Team $team): Collection $employeesCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 35), + 'avatar' => ImageHelper::getAvatar($employee, 35), 'anniversary_date' => DateHelper::formatDayAndMonthInParenthesis($employee->hired_at->setYear($now->year)), 'anniversary_age' => $now->year - $employee->hired_at->year, 'url' => route('employees.show', [ diff --git a/app/Http/ViewHelpers/Dashboard/DashboardTimesheetViewHelper.php b/app/Http/ViewHelpers/Dashboard/DashboardTimesheetViewHelper.php index 4c2bbc7a5..c3d2bc56e 100644 --- a/app/Http/ViewHelpers/Dashboard/DashboardTimesheetViewHelper.php +++ b/app/Http/ViewHelpers/Dashboard/DashboardTimesheetViewHelper.php @@ -5,7 +5,7 @@ use Carbon\Carbon; use App\Helpers\DateHelper; use App\Helpers\TimeHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Project; use App\Models\Company\Employee; use App\Models\Company\Timesheet; @@ -116,7 +116,7 @@ public static function approverInformation(Timesheet $timesheet): array 'id' => $approver->id, 'name' => $approver->name, 'approved_at' => DateHelper::formatDate($timesheet->approved_at), - 'avatar' => AvatarHelper::getImage($approver), + 'avatar' => ImageHelper::getAvatar($approver), 'url' => route('employees.show', [ 'company' => $timesheet->company, 'employee' => $approver, diff --git a/app/Http/ViewHelpers/Dashboard/HR/DashboardHRTimesheetViewHelper.php b/app/Http/ViewHelpers/Dashboard/HR/DashboardHRTimesheetViewHelper.php index 99bc90af3..31a9c197b 100644 --- a/app/Http/ViewHelpers/Dashboard/HR/DashboardHRTimesheetViewHelper.php +++ b/app/Http/ViewHelpers/Dashboard/HR/DashboardHRTimesheetViewHelper.php @@ -5,7 +5,7 @@ use Carbon\Carbon; use App\Helpers\DateHelper; use App\Helpers\TimeHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Company; use App\Models\Company\Timesheet; use Illuminate\Support\Collection; @@ -85,7 +85,7 @@ public static function timesheetApprovalsForEmployeesWithoutManagers(Company $co $employeesCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), 'position' => (! $employee->position) ? null : $employee->position->title, 'url' => route('employees.show', [ 'company' => $company, diff --git a/app/Http/ViewHelpers/Dashboard/Manager/DashboardManagerTimesheetViewHelper.php b/app/Http/ViewHelpers/Dashboard/Manager/DashboardManagerTimesheetViewHelper.php index dc80e3347..7492ad023 100644 --- a/app/Http/ViewHelpers/Dashboard/Manager/DashboardManagerTimesheetViewHelper.php +++ b/app/Http/ViewHelpers/Dashboard/Manager/DashboardManagerTimesheetViewHelper.php @@ -4,7 +4,7 @@ use App\Helpers\DateHelper; use App\Helpers\TimeHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Employee; use App\Models\Company\Timesheet; use Illuminate\Support\Collection; @@ -59,7 +59,7 @@ public static function timesheetApprovals(Employee $manager, Collection $directR $employeesCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee), + 'avatar' => ImageHelper::getAvatar($employee), 'position' => (! $employee->position) ? null : $employee->position->title, 'url' => route('employees.show', [ 'company' => $company, diff --git a/app/Http/ViewHelpers/Employee/EmployeeECoffeeViewHelper.php b/app/Http/ViewHelpers/Employee/EmployeeECoffeeViewHelper.php index 93ab73874..ee483f0f7 100644 --- a/app/Http/ViewHelpers/Employee/EmployeeECoffeeViewHelper.php +++ b/app/Http/ViewHelpers/Employee/EmployeeECoffeeViewHelper.php @@ -4,7 +4,7 @@ use Carbon\Carbon; use App\Helpers\DateHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Company; use App\Models\Company\Employee; use Illuminate\Support\Collection; @@ -50,7 +50,7 @@ public static function index(Employee $employee, Company $company): ?Collection 'id' => $withEmployee->id, 'name' => $withEmployee->name, 'first_name' => $withEmployee->first_name, - 'avatar' => AvatarHelper::getImage($withEmployee, 35), + 'avatar' => ImageHelper::getAvatar($withEmployee, 35), 'position' => $withEmployee->position ? $withEmployee->position->title : null, 'url' => route('employees.show', [ 'company' => $company, diff --git a/app/Http/ViewHelpers/Employee/EmployeeLogViewHelper.php b/app/Http/ViewHelpers/Employee/EmployeeLogViewHelper.php index 400eb8c03..aaea116a6 100644 --- a/app/Http/ViewHelpers/Employee/EmployeeLogViewHelper.php +++ b/app/Http/ViewHelpers/Employee/EmployeeLogViewHelper.php @@ -2,7 +2,7 @@ namespace App\Http\ViewHelpers\Employee; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Company; use App\Models\Company\Employee; use Illuminate\Support\Collection; @@ -24,7 +24,7 @@ public static function list($logs, Company $company): Collection 'author' => [ 'id' => is_null($author) ? null : $author->id, 'name' => is_null($author) ? $log->author_name : $author->name, - 'avatar' => is_null($author) ? null : AvatarHelper::getImage($author), + 'avatar' => is_null($author) ? null : ImageHelper::getAvatar($author), 'url' => is_null($author) ? null : route('employees.show', [ 'company' => $company, 'employee' => $author, diff --git a/app/Http/ViewHelpers/Employee/EmployeeOneOnOneViewHelper.php b/app/Http/ViewHelpers/Employee/EmployeeOneOnOneViewHelper.php index be6c75b98..bb8a1ac84 100644 --- a/app/Http/ViewHelpers/Employee/EmployeeOneOnOneViewHelper.php +++ b/app/Http/ViewHelpers/Employee/EmployeeOneOnOneViewHelper.php @@ -4,7 +4,7 @@ use Carbon\Carbon; use App\Helpers\DateHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Employee; use App\Models\Company\OneOnOneEntry; use Illuminate\Database\Eloquent\Collection; @@ -64,7 +64,7 @@ public static function list(Collection $oneOnOnes, Employee $employee): SupportC 'manager' => [ 'id' => $oneOnOne->manager->id, 'name' => $oneOnOne->manager->name, - 'avatar' => AvatarHelper::getImage($oneOnOne->manager), + 'avatar' => ImageHelper::getAvatar($oneOnOne->manager), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $oneOnOne->manager, @@ -140,7 +140,7 @@ public static function details(OneOnOneEntry $entry): array 'employee' => [ 'id' => $entry->employee->id, 'name' => $entry->employee->name, - 'avatar' => AvatarHelper::getImage($entry->employee), + 'avatar' => ImageHelper::getAvatar($entry->employee), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $entry->employee, @@ -149,7 +149,7 @@ public static function details(OneOnOneEntry $entry): array 'manager' => [ 'id' => $entry->manager->id, 'name' => $entry->manager->name, - 'avatar' => AvatarHelper::getImage($entry->manager), + 'avatar' => ImageHelper::getAvatar($entry->manager), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $entry->manager, diff --git a/app/Http/ViewHelpers/Employee/EmployeeShowViewHelper.php b/app/Http/ViewHelpers/Employee/EmployeeShowViewHelper.php index a3b2170c2..8f1ef8189 100644 --- a/app/Http/ViewHelpers/Employee/EmployeeShowViewHelper.php +++ b/app/Http/ViewHelpers/Employee/EmployeeShowViewHelper.php @@ -5,9 +5,9 @@ use Carbon\Carbon; use App\Helpers\DateHelper; use App\Helpers\TimeHelper; +use App\Helpers\ImageHelper; use App\Helpers\MoneyHelper; use App\Models\User\Pronoun; -use App\Helpers\AvatarHelper; use App\Helpers\StringHelper; use App\Helpers\WorklogHelper; use App\Models\Company\Company; @@ -45,7 +45,7 @@ public static function informationAboutEmployee(Employee $employee, array $permi 'name' => $employee->name, 'first_name' => $employee->first_name, 'last_name' => $employee->last_name, - 'avatar' => AvatarHelper::getImage($employee, 300), + 'avatar' => ImageHelper::getAvatar($employee, 300), 'email' => $employee->email, 'phone' => $employee->phone_number, 'twitter_handle' => $employee->twitter_handle, @@ -287,7 +287,6 @@ public static function permissions(Employee $loggedEmployee, Employee $employee) $canEditContractInfoTab = $loggedEmployee->permission_level <= 200; if ($employee->status) { $canEditContractInfoTab = $employee->status->type == EmployeeStatus::EXTERNAL; - //dd($employee->status->type); } return [ @@ -338,7 +337,7 @@ public static function managers(Employee $employee): Collection $managersOfEmployee->push([ 'id' => $manager->id, 'name' => $manager->name, - 'avatar' => AvatarHelper::getImage($manager, 35), + 'avatar' => ImageHelper::getAvatar($manager, 35), 'position' => (! $manager->position) ? null : [ 'id' => $manager->position->id, 'title' => $manager->position->title, @@ -373,7 +372,7 @@ public static function directReports(Employee $employee): Collection $directReportsOfEmployee->push([ 'id' => $directReport->id, 'name' => $directReport->name, - 'avatar' => AvatarHelper::getImage($directReport, 35), + 'avatar' => ImageHelper::getAvatar($directReport, 35), 'position' => (! $directReport->position) ? null : [ 'id' => $directReport->position->id, 'title' => $directReport->position->title, @@ -562,7 +561,7 @@ public static function recentShips(Employee $employee): Collection $employeeCollection->push([ 'id' => $employeeImpacted->id, 'name' => $employeeImpacted->name, - 'avatar' => AvatarHelper::getImage($employeeImpacted, 17), + 'avatar' => ImageHelper::getAvatar($employeeImpacted, 17), 'url' => route('employees.show', [ 'company' => $employee->company, 'employee' => $employeeImpacted, @@ -693,7 +692,7 @@ public static function oneOnOnes(Employee $employee, array $permissions): ?array 'manager' => [ 'id' => $oneOnOne->manager->id, 'name' => $oneOnOne->manager->name, - 'avatar' => AvatarHelper::getImage($oneOnOne->manager, 18), + 'avatar' => ImageHelper::getAvatar($oneOnOne->manager, 18), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $oneOnOne->manager, @@ -917,7 +916,7 @@ public static function eCoffees(Employee $employee, Company $company): ?array 'id' => $withEmployee->id, 'name' => $withEmployee->name, 'first_name' => $withEmployee->first_name, - 'avatar' => AvatarHelper::getImage($withEmployee, 35), + 'avatar' => ImageHelper::getAvatar($withEmployee, 35), 'position' => $withEmployee->position ? $withEmployee->position->title : null, 'url' => route('employees.show', [ 'company' => $company, diff --git a/app/Http/ViewHelpers/Employee/EmployeeSurveysViewHelper.php b/app/Http/ViewHelpers/Employee/EmployeeSurveysViewHelper.php index 33e6651aa..3bed72a8f 100644 --- a/app/Http/ViewHelpers/Employee/EmployeeSurveysViewHelper.php +++ b/app/Http/ViewHelpers/Employee/EmployeeSurveysViewHelper.php @@ -4,7 +4,7 @@ use Carbon\Carbon; use App\Helpers\DateHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Employee; use Illuminate\Support\Facades\DB; use App\Models\Company\RateYourManagerAnswer; @@ -134,7 +134,7 @@ public static function informationAboutSurvey(int $surveyId): ?array $directReportsCollection->push([ 'id' => $answer->employee->id, 'name' => $answer->employee->name, - 'avatar' => AvatarHelper::getImage($answer->employee), + 'avatar' => ImageHelper::getAvatar($answer->employee), 'url' => route('employees.show', [ 'company' => $answer->employee->company_id, 'employee' => $answer->employee->id, @@ -155,7 +155,7 @@ public static function informationAboutSurvey(int $surveyId): ?array 'employee' => $answer->reveal_identity_to_manager ? [ 'id' => $answer->employee->id, 'name' => $answer->employee->name, - 'avatar' => AvatarHelper::getImage($answer->employee), + 'avatar' => ImageHelper::getAvatar($answer->employee), 'url' => route('employees.show', [ 'company' => $answer->employee->company_id, 'employee' => $answer->employee->id, diff --git a/app/Http/ViewHelpers/Team/TeamIndexViewHelper.php b/app/Http/ViewHelpers/Team/TeamIndexViewHelper.php index b86c07b8d..75da9534c 100644 --- a/app/Http/ViewHelpers/Team/TeamIndexViewHelper.php +++ b/app/Http/ViewHelpers/Team/TeamIndexViewHelper.php @@ -2,7 +2,7 @@ namespace App\Http\ViewHelpers\Team; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Company; use Illuminate\Support\Collection; @@ -27,7 +27,7 @@ public static function index(Company $company): Collection $employeesCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 20), + 'avatar' => ImageHelper::getAvatar($employee, 20), 'url' => route('employees.show', [ 'company' => $company, 'employee' => $employee, diff --git a/app/Http/ViewHelpers/Team/TeamMembersViewHelper.php b/app/Http/ViewHelpers/Team/TeamMembersViewHelper.php index 3856ce7f4..c8e529097 100644 --- a/app/Http/ViewHelpers/Team/TeamMembersViewHelper.php +++ b/app/Http/ViewHelpers/Team/TeamMembersViewHelper.php @@ -2,7 +2,7 @@ namespace App\Http\ViewHelpers\Team; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Employee; use Illuminate\Support\Collection; @@ -41,7 +41,7 @@ public static function employee(Employee $employee): array return [ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 35), + 'avatar' => ImageHelper::getAvatar($employee, 35), 'position' => $employee->position, ]; } diff --git a/app/Http/ViewHelpers/Team/TeamRecentShipViewHelper.php b/app/Http/ViewHelpers/Team/TeamRecentShipViewHelper.php index a181ba1c5..2bb3e2846 100644 --- a/app/Http/ViewHelpers/Team/TeamRecentShipViewHelper.php +++ b/app/Http/ViewHelpers/Team/TeamRecentShipViewHelper.php @@ -3,9 +3,9 @@ namespace App\Http\ViewHelpers\Team; use App\Helpers\DateHelper; +use App\Helpers\ImageHelper; use App\Models\Company\Ship; use App\Models\Company\Team; -use App\Helpers\AvatarHelper; use App\Helpers\StringHelper; use Illuminate\Support\Collection; @@ -30,7 +30,7 @@ public static function recentShips(Team $team): Collection $employeeCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 21), + 'avatar' => ImageHelper::getAvatar($employee, 21), 'url' => route('employees.show', [ 'company' => $team->company, 'employee' => $employee, @@ -71,7 +71,7 @@ public static function ship(Ship $ship): array $employeeCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 44), + 'avatar' => ImageHelper::getAvatar($employee, 44), 'position' => (! $employee->position) ? null : [ 'title' => $employee->position->title, ], diff --git a/app/Http/ViewHelpers/Team/TeamShowViewHelper.php b/app/Http/ViewHelpers/Team/TeamShowViewHelper.php index 2002f7c6c..f378cfb31 100644 --- a/app/Http/ViewHelpers/Team/TeamShowViewHelper.php +++ b/app/Http/ViewHelpers/Team/TeamShowViewHelper.php @@ -2,8 +2,8 @@ namespace App\Http\ViewHelpers\Team; +use App\Helpers\ImageHelper; use App\Models\Company\Team; -use App\Helpers\AvatarHelper; use App\Helpers\StringHelper; use Illuminate\Support\Collection; @@ -26,7 +26,7 @@ public static function team(Team $team): array 'team_leader' => is_null($team->leader) ? null : [ 'id' => $team->leader->id, 'name' => $team->leader->name, - 'avatar' => AvatarHelper::getImage($team->leader, 35), + 'avatar' => ImageHelper::getAvatar($team->leader, 35), 'position' => (! $team->leader->position) ? null : [ 'title' => $team->leader->position->title, ], @@ -55,7 +55,7 @@ public static function employees(Team $team): Collection $employeesCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 35), + 'avatar' => ImageHelper::getAvatar($employee, 35), 'position' => (! $employee->position) ? null : [ 'id' => $employee->position->id, 'title' => $employee->position->title, @@ -92,7 +92,7 @@ public static function recentShips(Team $team): Collection $employeeCollection->push([ 'id' => $employee->id, 'name' => $employee->name, - 'avatar' => AvatarHelper::getImage($employee, 17), + 'avatar' => ImageHelper::getAvatar($employee, 17), 'url' => route('employees.show', [ 'company' => $team->company, 'employee' => $employee, diff --git a/app/Models/Company/Company.php b/app/Models/Company/Company.php index a40589e8e..ff5c76abd 100644 --- a/app/Models/Company/Company.php +++ b/app/Models/Company/Company.php @@ -6,6 +6,7 @@ use Illuminate\Support\Collection; use Illuminate\Database\Eloquent\Model; use Spatie\Activitylog\Traits\LogsActivity; +use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -25,6 +26,7 @@ class Company extends Model 'name', 'currency', 'has_dummy_data', + 'logo_file_id', 'e_coffee_enabled', ]; @@ -238,6 +240,16 @@ public function importJobs() return $this->hasMany(ImportJob::class); } + /** + * Get the logo associated with the company. + * + * @return HasOne + */ + public function logo() + { + return $this->hasOne(File::class, 'id', 'logo_file_id'); + } + /** * Return the PTO policy for the current year. * diff --git a/app/Models/Company/Employee.php b/app/Models/Company/Employee.php index ec944050c..1eced6877 100644 --- a/app/Models/Company/Employee.php +++ b/app/Models/Company/Employee.php @@ -6,8 +6,8 @@ use App\Models\User\User; use App\Traits\Searchable; use App\Helpers\DateHelper; +use App\Helpers\ImageHelper; use App\Models\User\Pronoun; -use App\Helpers\AvatarHelper; use App\Helpers\StringHelper; use App\Helpers\HolidayHelper; use Illuminate\Support\Collection; @@ -582,7 +582,7 @@ public function toObject(): array 'name' => $this->name, 'first_name' => $this->first_name, 'last_name' => $this->last_name, - 'avatar' => AvatarHelper::getImage($this), + 'avatar' => ImageHelper::getAvatar($this), 'email' => $this->email, 'locked' => $this->locked, 'birthdate' => (! $this->birthdate) ? null : [ diff --git a/app/Models/Company/TeamNews.php b/app/Models/Company/TeamNews.php index 983a1c7e1..94de4a2bd 100644 --- a/app/Models/Company/TeamNews.php +++ b/app/Models/Company/TeamNews.php @@ -3,7 +3,7 @@ namespace App\Models\Company; use App\Helpers\DateHelper; -use App\Helpers\AvatarHelper; +use App\Helpers\ImageHelper; use App\Helpers\StringHelper; use Illuminate\Database\Eloquent\Model; use Spatie\Activitylog\Traits\LogsActivity; @@ -76,7 +76,7 @@ public function toObject(): array 'author' => [ 'id' => is_null($this->author) ? null : $this->author->id, 'name' => is_null($this->author) ? $this->author_name : $this->author->name, - 'avatar' => is_null($this->author) ? null : AvatarHelper::getImage($this->author), + 'avatar' => is_null($this->author) ? null : ImageHelper::getAvatar($this->author), ], 'localized_created_at' => DateHelper::formatShortDateWithTime($this->created_at), 'created_at' => $this->created_at, diff --git a/app/Services/Company/Adminland/Company/UpdateCompanyLogo.php b/app/Services/Company/Adminland/Company/UpdateCompanyLogo.php new file mode 100644 index 000000000..303f496a8 --- /dev/null +++ b/app/Services/Company/Adminland/Company/UpdateCompanyLogo.php @@ -0,0 +1,81 @@ + 'required|integer|exists:companies,id', + 'author_id' => 'required|integer|exists:employees,id', + 'file_id' => 'required|integer|exists:files,id', + ]; + } + + /** + * Update the company logo. + * + * @param array $data + * @return File + */ + public function execute(array $data): File + { + $this->data = $data; + + $this->validate(); + $this->upload(); + $this->log(); + + return $this->file; + } + + private function validate(): void + { + $this->validateRules($this->data); + + $this->author($this->data['author_id']) + ->inCompany($this->data['company_id']) + ->asAtLeastAdministrator() + ->canExecuteService(); + + $this->company = Company::find($this->data['company_id']); + + $this->file = File::where('company_id', $this->data['company_id']) + ->findOrFail($this->data['file_id']); + } + + private function upload(): void + { + Company::where('id', $this->company->id)->update([ + 'logo_file_id' => $this->file->id, + ]); + } + + private function log(): void + { + LogAccountAudit::dispatch([ + 'company_id' => $this->company->id, + 'action' => 'company_logo_changed', + 'author_id' => $this->author->id, + 'author_name' => $this->author->name, + 'audited_at' => Carbon::now(), + 'objects' => json_encode([]), + ])->onQueue('low'); + } +} diff --git a/config/officelife.php b/config/officelife.php index decbe2515..0786a4985 100644 --- a/config/officelife.php +++ b/config/officelife.php @@ -174,7 +174,8 @@ 'team_recent_ship' => 'introduction.html', 'team_recent_ship_create' => 'introduction.html', 'account_general_company_name' => 'introduction.html', - 'account_general_currency' => 'introduction.html', + 'account_general_currency' => 'manage/company-management.html#currency', + 'account_general_logo' => 'manage/company-management.html#logo', 'account_cancellation' => 'manage/company-management.html#account-cancellation', 'employee_hiring_date' => 'manage/employee-management.html#hiring-date', 'employee_work_anniversaries' => 'manage/employee-management.html#work-anniversaries', diff --git a/database/migrations/2021_03_16_234714_add_company_logo.php b/database/migrations/2021_03_16_234714_add_company_logo.php new file mode 100644 index 000000000..afef6a4e4 --- /dev/null +++ b/database/migrations/2021_03_16_234714_add_company_logo.php @@ -0,0 +1,22 @@ +unsignedBigInteger('logo_file_id')->after('e_coffee_enabled')->nullable(); + $table->foreign('logo_file_id')->references('id')->on('files')->onDelete('set null'); + }); + } +} diff --git a/public/img/logo-2x.png b/public/img/logo-2x.png index 5dfc2cf5542576b868eb401e4a07eca85cd4232b..1c13c022cacdb9a6fa2599e3acc0b50843176324 100644 GIT binary patch literal 17657 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

c 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 JPDHLkV1oUhO+Nqt literal 17562 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 + + + @@ -52,13 +57,15 @@ import Layout from '@/Shared/Layout'; import Name from '@/Pages/Adminland/General/Partials/Name'; import Currency from '@/Pages/Adminland/General/Partials/Currency'; import Stat from '@/Pages/Adminland/General/Partials/Stat'; +import Logo from '@/Pages/Adminland/General/Partials/Logo'; export default { components: { Layout, Name, Currency, - Stat + Stat, + Logo, }, props: { diff --git a/resources/js/Pages/Adminland/General/Partials/Logo.vue b/resources/js/Pages/Adminland/General/Partials/Logo.vue new file mode 100644 index 000000000..af81f5f2e --- /dev/null +++ b/resources/js/Pages/Adminland/General/Partials/Logo.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/resources/js/Pages/Auth/Login.vue b/resources/js/Pages/Auth/Login.vue index de98da063..05a8113a1 100644 --- a/resources/js/Pages/Auth/Login.vue +++ b/resources/js/Pages/Auth/Login.vue @@ -1,7 +1,7 @@ diff --git a/resources/js/Pages/Auth/Register.vue b/resources/js/Pages/Auth/Register.vue index ccceec641..2c42f1fff 100644 --- a/resources/js/Pages/Auth/Register.vue +++ b/resources/js/Pages/Auth/Register.vue @@ -1,7 +1,7 @@ diff --git a/resources/js/Pages/Company/HR/Index.vue b/resources/js/Pages/Company/HR/Index.vue index f3a50cecf..7f561ae28 100644 --- a/resources/js/Pages/Company/HR/Index.vue +++ b/resources/js/Pages/Company/HR/Index.vue @@ -40,8 +40,8 @@

-