Update name display in various components (support surname)
This commit is contained in:
parent
b66d08b568
commit
d99fc9264f
|
@ -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')) {
|
||||
|
|
|
@ -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)
|
||||
);
|
||||
|
|
|
@ -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)
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
|
@ -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">
|
||||
|
|
|
@ -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)">
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 "";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue