Update name display in various components (support surname)

This commit is contained in:
Matteo Gheza 2024-01-11 21:09:53 +01:00
parent b66d08b568
commit d99fc9264f
11 changed files with 46 additions and 22 deletions

View File

@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use App\Models\Log;
use App\Models\User;
use App\Utils\DBTricks;
use Illuminate\Http\Request;
use Carbon\Carbon;
@ -22,7 +23,7 @@ class LogsController extends Controller
$selectedCols = [
"logs.id", "logs.action", "logs.editor_id", "logs.changed_id", "logs.created_at", "logs.source_type",
"changed_user.name as changed", "editor_user.name as editor", "editor_user.hidden as editor_hidden"
DBTricks::nameSelect("changed", "changed_user"), DBTricks::nameSelect("editor", "editor_user"), "editor_user.hidden as editor_hidden"
];
if($request->has('from')) {

View File

@ -9,6 +9,7 @@ use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Http;
use App\Utils\Logger;
use App\Utils\DBTricks;
class ServiceController extends Controller
{
@ -22,9 +23,9 @@ class ServiceController extends Controller
$query = Service::join('users', 'users.id', '=', 'chief_id')
->join('services_types', 'services_types.id', '=', 'type_id')
->select('services.*', 'users.name as chief', 'services_types.name as type')
->with('drivers:name')
->with('crew:name')
->select('services.*', DBTricks::nameSelect("chief", "users"), 'services_types.name as type')
->with('drivers:name,surname')
->with('crew:name,surname')
->with('place')
->orderBy('start', 'desc');
if($request->has('from')) {
@ -55,9 +56,9 @@ class ServiceController extends Controller
return response()->json(
Service::join('users', 'users.id', '=', 'chief_id')
->join('services_types', 'services_types.id', '=', 'type_id')
->select('services.*', 'users.name as chief', 'services_types.name as type')
->with('drivers:name')
->with('crew:name')
->select('services.*', DBTricks::nameSelect("chief", "users"), 'services_types.name as type')
->with('drivers:name,surname')
->with('crew:name,surname')
->with('place')
->find($id)
);

View File

@ -7,6 +7,7 @@ use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use App\Utils\Logger;
use App\Utils\DBTricks;
class TrainingController extends Controller
{
@ -19,8 +20,8 @@ class TrainingController extends Controller
User::where('id', $request->user()->id)->update(['last_access' => now()]);
$query = Training::join('users', 'users.id', '=', 'chief_id')
->select('trainings.*', 'users.name as chief')
->with('crew:name')
->select('trainings.*', DBTricks::nameSelect("chief", "users"))
->with('crew:name,surname')
->orderBy('start', 'desc');
if($request->has('from')) {
try {
@ -49,8 +50,8 @@ class TrainingController extends Controller
return response()->json(
Training::join('users', 'users.id', '=', 'chief_id')
->select('trainings.*', 'users.name as chief')
->with('crew:name')
->select('trainings.*', DBTricks::nameSelect("chief", "users"))
->with('crew:name,surname')
->find($id)
);
}

View File

@ -17,7 +17,7 @@ class UserController extends Controller
*/
public function index(Request $request)
{
$requestedCols = ['id', 'chief', 'last_access', 'name', 'available', 'driver', 'services', 'availability_minutes'];
$requestedCols = ['id', 'chief', 'last_access', 'name', 'surname', 'available', 'driver', 'services', 'availability_minutes'];
if($request->user()->isAbleTo("users-read")) $requestedCols[] = "phone_number";
User::where('id', $request->user()->id)->update(['last_access' => now()]);
@ -31,6 +31,7 @@ class UserController extends Controller
->orderBy('trainings', 'desc')
->orderBy('availability_minutes', 'desc')
->orderBy('name', 'asc')
->orderBy('surname', 'asc')
->get();
$now = now();

View File

@ -0,0 +1,16 @@
<?php
namespace App\Utils;
use Illuminate\Support\Facades\DB;
class DBTricks {
public static function nameSelect($dest = "name", $source_table=null) {
if(!is_null($source_table)) {
$source_table .= ".";
} else {
$source_table = "";
}
return DB::raw("CONCAT_WS(' ', NULLIF({$source_table}surname, ''), {$source_table}name) AS $dest");
}
}

View File

@ -33,7 +33,7 @@
<td>
<img alt="red helmet" src="./assets/icons/red_helmet.png" width="20px" *ngIf="crewUser.user.chief">
<img alt="red helmet" src="./assets/icons/black_helmet.png" width="20px" *ngIf="!crewUser.user.chief">
{{ crewUser.user.name }}
{{ crewUser.user.surname }} {{ crewUser.user.name }}
<img alt="driver" src="./assets/icons/wheel.png" width="20px" *ngIf="crewUser.user.driver">
</td>
<ng-container *ngIf="crewUser.accepted == null && alertClosed">

View File

@ -33,8 +33,8 @@
<div (click)="onMoreDetails(row.id)" class="d-inline">
<img alt="red helmet" src="./assets/icons/red_helmet.png" width="20px" *ngIf="row.chief">
<img alt="black helmet" src="./assets/icons/black_helmet.png" width="20px" *ngIf="!row.chief">
<ng-container *ngIf="row.online;else userOffline"><u>{{ row.name }}</u></ng-container>
<ng-template #userOffline>{{ row.name }}</ng-template>
<ng-container *ngIf="row.online;else userOffline"><u>{{ row.surname }} {{ row.name }}</u></ng-container>
<ng-template #userOffline>{{ row.surname }} {{ row.name }}</ng-template>
</div>
</td>
<td (click)="onChangeAvailability(row.id, row.available ? 0 : 1)">

View File

@ -293,7 +293,10 @@ export class TableComponent implements OnInit, OnDestroy {
}
extractNamesFromObject(obj: any) {
return obj.flatMap((e: any) => e.name);
return obj.flatMap((e: any) => {
if(e.surname === null) return e.name;
return e.surname+" "+e.name;
});
}
userAgentToIcons(userAgentString: string) {

View File

@ -32,7 +32,7 @@
<input formControlName="chief" [class.is-invalid]="!isFieldValid('chief')"
class="form-check-input" id="chief-{{ user.id }}" type="radio" value='{{ user.id }}'>
<label class="form-check-label" for="chief-{{ user.id }}">
{{ user.name }}
{{ user.surname }} {{ user.name }}
</label>
</div>
</ng-container>
@ -45,7 +45,7 @@
<input class="form-check-input" id="driver-{{ user.id }}" [class.is-invalid]="!isFieldValid('drivers')"
(change)="onDriversCheckboxChange($event)" [checked]="isDriverSelected(user.id)" type="checkbox" value='{{ user.id }}'>
<label class="form-check-label" for="driver-{{ user.id }}">
{{ user.name }}
{{ user.surname }} {{ user.name }}
</label>
</div>
</ng-container>
@ -58,7 +58,7 @@
<input class="form-check-input" id="crew-{{ user.id }}" [class.is-invalid]="!isFieldValid('crew')"
(change)="onCrewCheckboxChange($event)" [checked]="isCrewSelected(user.id)" type="checkbox" value='{{ user.id }}'>
<label class="form-check-label" for="crew-{{ user.id }}">
{{ user.name }}
{{ user.surname }} {{ user.name }}
</label>
</div>
</ng-container>

View File

@ -32,7 +32,7 @@
<input formControlName="chief" [class.is-invalid]="!isFieldValid('chief')"
class="form-check-input" id="chief-{{ user.id }}" type="radio" value='{{ user.id }}'>
<label class="form-check-label" for="chief-{{ user.id }}">
{{ user.name }}
{{ user.surname }} {{ user.name }}
</label>
</div>
</ng-container>
@ -45,7 +45,7 @@
<input class="form-check-input" id="crew-{{ user.id }}" [class.is-invalid]="!isFieldValid('crew')"
(change)="onCrewCheckboxChange($event)" [checked]="isCrewSelected(user.id)" type="checkbox" value='{{ user.id }}'>
<label class="form-check-label" for="crew-{{ user.id }}">
{{ user.name }}
{{ user.surname }} {{ user.name }}
</label>
</div>
</ng-container>

View File

@ -56,7 +56,8 @@ export class StatsServicesComponent implements OnInit {
getUserNameById(id: number) {
let user = this.users.find((user) => user.id === id);
if (user) {
return user.name;
if(user.surname === null) return user.name;
return user.surname + " " + user.name;
}
return "";
}