Skip to content
Snippets Groups Projects
Commit 27aa4c28 authored by Damien's avatar Damien
Browse files

[FEAT] [PROFILE V2] Basic form is working

parent 38eb245e
No related branches found
No related tags found
No related merge requests found
......@@ -16,177 +16,116 @@ h2{
.col-md-4,.col-md-3{
margin-bottom: 10px;
}
.ng-invalid:not(form) {
border-left: 5px solid #a94442;
}
</style>
<div class="container-fluid">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">
<i class="fa fa-arrow-circle-left" title="Retour"></i>
</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li><a href="javascript://" ><i class="fa fa-user-times" title=""></i> Gérer mes absences </a></li>
<li><a href="javascript://" ><i class="fa fa-user-times" title=""></i> Gérer mes signatures </a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
<div class="row row-eq-height">
<div class="col-md-3" style="border-left:solid 1px white;border-right:solid 1px white;background-color: #CEE9F1;border-top: solid 2px #FDD16C;border-bottom: solid 2px #FDD16C;padding:10px;">
<h2>Mes Groupes</h2>
<ul class="list-group" >
<li class="list-group-item" *ngFor="let group of user.groups">
<i class="fa fa-users"></i> {{group.group_desc}}
<span *ngIf="group.primary_group == 'Y'" class="label label-primary">Groupe primaire</span>
<span *ngIf="group.primary_group != 'Y'" class="label label-default">Groupe secondaire</span>
</li>
</ul>
</div>
<div class="col-md-4 col-md-offset-1" style="border-left:solid 1px white;border-right:solid 1px white;background-color: #CEE9F1;border-top: solid 2px #FDD16C;border-bottom: solid 2px #FDD16C;padding:10px;">
<h2>Mes Informations</h2>
<form class="form-horizontal">
<div class="form-group">
<div class="col-sm-5" style="font-weight:bold;">
<input type="text" class="form-control" id="lastname" title="Nom" placeholder="Nom" value="{{user.lastname}}">
</div>
<div class="col-sm-5" style="font-weight:bold;">
<input type="text" class="form-control" id="firstname" title="Prénom" placeholder="Prénom" value="{{user.firstname}}">
</div>
<div class="col-sm-2" style="font-style:italic;">
<input type="text" class="form-control" id="firstname" title="Initiales" placeholder="Initiales" value="{{user.initials}}">
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<input type="text" class="form-control" id="userId" title="Identifiant" placeholder="Identifiant" value="{{user.user_id}}" disabled>
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<div class="input-group">
<span class="input-group-addon" id="basic-addon1"><i class="fa fa-phone" aria-hidden="true"></i></span>
<input type="text" class="form-control" id="phone" title="Téléphone" placeholder="Téléphone" value="{{user.phone}}">
<div *ngIf="loading">
<i class="fa fa-spinner fa-spin fa-5x" style="margin-left: 50%;margin-top: 16%;font-size: 8em"></i>
</div>
<div *ngIf="!loading" class="container-fluid">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">
<i class="fa fa-arrow-circle-left" title="Retour"></i>
</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li><a href="javascript://" ><i class="fa fa-user-times" title=""></i> Gérer mes absences </a></li>
<li><a href="javascript://" ><i class="fa fa-user-times" title=""></i> Gérer mes signatures </a></li>
</ul>
</div>
</div>
</nav>
<div class="row row-eq-height">
<div class="col-md-3" style="border-left:solid 1px white;border-right:solid 1px white;background-color: #CEE9F1;border-top: solid 2px #FDD16C;border-bottom: solid 2px #FDD16C;padding:10px;">
<h2>Mes Groupes</h2>
<ul class="list-group" >
<li class="list-group-item" *ngFor="let group of user.groups">
<i class="fa fa-users"></i> {{group.group_desc}}
<span *ngIf="group.primary_group == 'Y'" class="label label-primary">Groupe primaire</span>
<span *ngIf="group.primary_group != 'Y'" class="label label-default">Groupe secondaire</span>
</li>
</ul>
</div>
<div class="col-md-4 col-md-offset-1" style="border-left:solid 1px white;border-right:solid 1px white;background-color: #CEE9F1;border-top: solid 2px #FDD16C;border-bottom: solid 2px #FDD16C;padding:10px;">
<h2>Mes Informations</h2>
<form class="form-horizontal" (ngSubmit)="onSubmit()" #profileForm="ngForm">
<div class="form-group">
<div class="col-sm-5" style="font-weight:bold;">
<input type="text" class="form-control" id="lastname" name="lastname" title="Nom" placeholder="Nom" [(ngModel)]="user.lastname" required>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<div class="input-group">
<span class="input-group-addon" id="basic-addon1"><i class="fa fa-envelope-o" aria-hidden="true"></i></span>
<input type="mail" class="form-control" id="mail" title="Courriel" placeholder="Courriel" value="{{user.mail}}">
<div class="col-sm-5" style="font-weight:bold;">
<input type="text" class="form-control" id="firstname" name="firstname" title="Prénom" placeholder="Prénom" [(ngModel)]="user.firstname" required>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<div class="input-group">
<span class="input-group-addon" id="basic-addon1"><i class="fa fa-paw" aria-hidden="true"></i></span>
<input type="text" class="form-control" id="fingerprint" title="Empreinte Numérique" placeholder="Empreinte Numérique" value="{{user.fingerprint}}">
<div class="col-sm-2" style="font-style:italic;">
<input type="text" class="form-control" id="initials" name="initials" title="Initiales" placeholder="Initiales" [(ngModel)]="user.initials">
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-6">
<div class="input-group">
<span class="input-group-addon" id="basic-addon1"><i class="fa fa-key" aria-hidden="true"></i></span>
<input type="password" class="form-control" id="password" placeholder="Nouveau mot de passe">
<div class="form-group">
<div class="col-sm-12">
<input type="text" class="form-control" id="userId" title="Identifiant" placeholder="Identifiant" value="{{user.user_id}}" disabled>
</div>
</div>
<div class="col-sm-6">
<div class="input-group">
<span class="input-group-addon" id="basic-addon1"><i class="fa fa-key" aria-hidden="true"></i></span>
<input type="password" class="form-control" id="repassword" placeholder="Retaper le mot de passe">
<div class="form-group">
<div class="col-sm-12">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-phone" aria-hidden="true"></i></span>
<input type="text" class="form-control" id="phone" name="phone" title="Téléphone" placeholder="Téléphone" [(ngModel)]="user.phone">
</div>
</div>
</div>
</div>
<div class="form-group">
<div style="text-align:center;">
<button type="submit" class="btn btn-default">Enregistrer les modifications</button>
</div>
</div>
</form>
</div>
<div class="col-md-3 col-md-offset-1" style="border-left:solid 1px white;border-right:solid 1px white;background-color: #CEE9F1;border-top: solid 2px #FDD16C;border-bottom: solid 2px #FDD16C;padding:10px;">
<h2>Mes Services</h2>
<ul class="list-group" >
<li class="list-group-item" *ngFor="let entity of user.entities">
<i class="fa fa-sitemap"></i> {{entity.entity_label}}
<span *ngIf="entity.primary_entity == 'Y'" class="label label-primary">Service primaire</span>
<span *ngIf="entity.primary_entity != 'Y'" class="label label-default">Service secondaire</span>
</li>
</ul>
</div>
<!-- <div class="col-md-4-offset-1" style="background-color: #CEE9F1;border-top: solid 2px #FDD16C;border-bottom: solid 2px #FDD16C;padding:10px;">
<form class="form-horizontal">
<div class="form-group">
<label for="userId" class="col-sm-2 control-label">Identifiant</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="userId" placeholder="Identifiant">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">Nom</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="lastname" placeholder="Nom" value="">
</div>
</div>
<div class="form-group">
<label for="firstname" class="col-sm-2 control-label">Prénom</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="firstname" placeholder="Prénom">
</div>
</div>
<div class="form-group">
<label for="shortName" class="col-sm-2 control-label">Initiale</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="shortName" placeholder="Initiale">
</div>
</div>
<div class="form-group">
<label for="phone" class="col-sm-2 control-label">Téléphone</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="phone" placeholder="Téléphone">
</div>
</div>
<div class="form-group">
<label for="mail" class="col-sm-2 control-label">Courriel</label>
<div class="col-sm-10">
<input type="mail" class="form-control" id="mail" placeholder="Courriel">
</div>
</div>
<div class="form-group">
<label for="fingerprint" class="col-sm-2 control-label">Empreinte Numérique</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="fingerprint" placeholder="Empreinte Numérique">
<div class="form-group">
<div class="col-sm-12">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-envelope-o" aria-hidden="true"></i></span>
<input type="mail" class="form-control" id="mail" name="mail" title="Courriel" placeholder="Courriel" [(ngModel)]="user.mail">
</div>
</div>
</div>
</div>
<div class="form-group">
<label for="password" class="col-sm-2 control-label">Mot de passe</label>
<div class="col-sm-5">
<input type="password" class="form-control" id="password" placeholder="Nouveau mot de passe">
<div class="form-group">
<div class="col-sm-12">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-paw" aria-hidden="true"></i></span>
<input type="text" class="form-control" id="fingerprint" name="fingerprint" title="Empreinte Numérique" placeholder="Empreinte Numérique" [(ngModel)]="user.thumbprint">
</div>
</div>
</div>
<div class="col-sm-5">
<input type="password" class="form-control" id="repassword" placeholder="Retaper le mot de passe">
<div class="form-group">
<div class="col-sm-6">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-key" aria-hidden="true"></i></span>
<input type="password" class="form-control" id="password" placeholder="Nouveau mot de passe">
</div>
</div>
<div class="col-sm-6">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-key" aria-hidden="true"></i></span>
<input type="password" class="form-control" id="repassword" placeholder="Retaper le mot de passe">
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Valider</button>
<div class="form-group">
<div style="text-align:center;">
<button type="submit" class="btn btn-default" [disabled]="!profileForm.form.valid">Enregistrer les modifications</button>
</div>
</div>
</div>
</form>
</div>
<div class="col-md-3 col-md-offset-1" style="background-color: #CEE9F1;border-top: solid 2px #FDD16C;border-bottom: solid 2px #FDD16C;padding:10px;">
<h2>L'utilisateur appartient aux groupes suivants</h2>
<div>L'utilisateur n'appartient à aucun groupe.</div>
</div>
<div class="col-md-3 col-md-offset-1" style="background-color: #CEE9F1;border-top: solid 2px #FDD16C;border-bottom: solid 2px #FDD16C;padding:10px;">
<h2>L'utilisateur appartient aux entités suivantes</h2>
<div>L'utilisateur n'appartient à aucune entité.</div>
</form>
</div>
<div class="col-md-3 col-md-offset-1" style="border-left:solid 1px white;border-right:solid 1px white;background-color: #CEE9F1;border-top: solid 2px #FDD16C;border-bottom: solid 2px #FDD16C;padding:10px;">
<h2>Mes Services</h2>
<ul class="list-group" >
<li class="list-group-item" *ngFor="let entity of user.entities">
<i class="fa fa-sitemap"></i> {{entity.entity_label}}
<span *ngIf="entity.primary_entity == 'Y'" class="label label-primary">Service primaire</span>
<span *ngIf="entity.primary_entity != 'Y'" class="label label-default">Service secondaire</span>
</li>
</ul>
</div>
</div>
<div>-->
</div>
\ No newline at end of file
</div>
......@@ -10,6 +10,7 @@ var core_1 = require("@angular/core");
var platform_browser_1 = require("@angular/platform-browser");
var router_1 = require("@angular/router");
var http_1 = require("@angular/http");
var forms_1 = require("@angular/forms");
var app_component_1 = require("./app.component");
var profile_component_1 = require("./profile.component");
var signature_book_component_1 = require("./signature-book.component");
......@@ -22,6 +23,7 @@ AppModule = __decorate([
core_1.NgModule({
imports: [
platform_browser_1.BrowserModule,
forms_1.FormsModule,
router_1.RouterModule.forRoot([
{ path: 'profile', component: profile_component_1.ProfileComponent },
{ path: ':basketId/signatureBook/:resId', component: signature_book_component_1.SignatureBookComponent },
......
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule } from '@angular/router';
import { HttpModule } from '@angular/http';
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule } from '@angular/router';
import { HttpModule } from '@angular/http';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { ProfileComponent } from './profile.component';
import { AppComponent } from './app.component';
import { ProfileComponent } from './profile.component';
import { SignatureBookComponent, SafeUrlPipe } from './signature-book.component';
@NgModule({
imports: [
BrowserModule,
FormsModule,
RouterModule.forRoot([
{ path: 'profile', component: ProfileComponent },
{ path: ':basketId/signatureBook/:resId', component: SignatureBookComponent },
......
......@@ -39,6 +39,12 @@ var ProfileComponent = (function () {
});
});
};
ProfileComponent.prototype.onSubmit = function () {
this.http.put(this.coreUrl + 'rest/user/' + this.user.user_id, this.user)
.map(function (res) { return res.json(); })
.subscribe(function (data) {
});
};
return ProfileComponent;
}());
ProfileComponent = __decorate([
......
......@@ -43,4 +43,11 @@ export class ProfileComponent implements OnInit {
});
}
onSubmit() {
this.http.put(this.coreUrl + 'rest/user/' + this.user.user_id, this.user)
.map(res => res.json())
.subscribe((data) => {
});
}
}
This diff is collapsed.
......@@ -28,7 +28,7 @@ class UserController
return $response->withStatus(401)->withJson(['errors' => 'User Not Connected']);
}
$user = UserModel::getById(['userId' => $_SESSION['user']['UserId'], 'select' => ['user_id', 'firstname', 'lastname', 'phone', 'mail', 'initials']]);
$user = UserModel::getById(['userId' => $_SESSION['user']['UserId'], 'select' => ['user_id', 'firstname', 'lastname', 'phone', 'mail', 'initials', 'thumbprint']]);
$user['signatures'] = UserModel::getSignaturesById(['userId' => $_SESSION['user']['UserId']]);
$user['emailSignatures'] = UserModel::getEmailSignaturesById(['userId' => $_SESSION['user']['UserId']]);
$user['groups'] = UserModel::getGroupsById(['userId' => $_SESSION['user']['UserId']]);
......@@ -37,4 +37,30 @@ class UserController
return $response->withJson($user);
}
public function update(RequestInterface $request, ResponseInterface $response, $aArgs)
{
$data = $request->getParams();
if (!$this->checkNeededParameters(['data' => $data, 'needed' => ['user_id', 'firstname', 'lastname']])) {
return $response->withStatus(400)->withJson(['errors' => 'Bad Request']);
}
$r = UserModel::update(['user' => $data]);
if ($r) {
return $response->withJson([]);
} else {
return $response->withStatus(500)->withJson(['errors' => 'User Update Error']);
}
}
private function checkNeededParameters($aArgs = []) {
foreach ($aArgs['needed'] as $value) {
if (empty($aArgs['data'][$value])) {
return false;
}
}
return true;
}
}
......@@ -50,6 +50,29 @@ class UserModelAbstract extends \Apps_Table_Service
return $aReturn;
}
public static function update(array $aArgs = [])
{
static::checkRequired($aArgs, ['user']);
static::checkRequired($aArgs['user'], ['user_id', 'firstname', 'lastname']);
static::checkString($aArgs['user'], ['user_id', 'firstname', 'lastname', 'mail', 'initials', 'thumbprint', 'phone']);
$aReturn = parent::update([
'table' => 'users',
'set' => [
'firstname' => $aArgs['user']['firstname'],
'lastname' => $aArgs['user']['lastname'],
'mail' => $aArgs['user']['mail'],
'phone' => $aArgs['user']['phone'],
'initials' => $aArgs['user']['initials'],
'thumbprint' => $aArgs['user']['thumbprint']
],
'where' => ['user_id = ?'],
'data' => [$aArgs['user']['user_id']]
]);
return $aReturn;
}
public static function getSignaturesById(array $aArgs = [])
{
static::checkRequired($aArgs, ['userId']);
......
......@@ -133,5 +133,6 @@ $app->post('/resExt', \Core\Controllers\ResExtController::class . ':create');
//Users
$app->get('/user/profile', \Core\Controllers\UserController::class . ':getCurrentUserInfos');
$app->put('/user/{id}', \Core\Controllers\UserController::class . ':update');
$app->run();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment