From 55b2327d1a7789d1d79bf31cfa6a4817201f9c7b Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Mon, 12 Feb 2018 11:56:35 +0100 Subject: [PATCH] FEAT #70 Entities Administration front --- .../entities-administration.component.html | 6 + .../entity-administration.component.html | 12 ++ .../administration-routing.module.js | 5 + .../administration-routing.module.ts | 55 ++++----- .../administration/administration.module.js | 6 +- .../administration/administration.module.ts | 16 ++- .../entities-administration.component.js | 70 ++++++++++++ .../entities-administration.component.ts | 68 ++++++++++++ .../entity-administration.component.js | 104 ++++++++++++++++++ .../entity-administration.component.ts | 102 +++++++++++++++++ .../js/angular/lang/lang-en.ts | 32 +++--- .../js/angular/lang/lang-fr.ts | 40 +++---- apps/maarch_entreprise/js/angularFunctions.js | 2 + rest/index.php | 1 + .../entity/controllers/EntityController.php | 10 ++ 15 files changed, 461 insertions(+), 68 deletions(-) create mode 100644 apps/maarch_entreprise/Views/entities-administration.component.html create mode 100644 apps/maarch_entreprise/Views/entity-administration.component.html create mode 100644 apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.js create mode 100644 apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts create mode 100644 apps/maarch_entreprise/js/angular/app/administration/entity-administration.component.js create mode 100644 apps/maarch_entreprise/js/angular/app/administration/entity-administration.component.ts diff --git a/apps/maarch_entreprise/Views/entities-administration.component.html b/apps/maarch_entreprise/Views/entities-administration.component.html new file mode 100644 index 00000000000..d51c4a99dbd --- /dev/null +++ b/apps/maarch_entreprise/Views/entities-administration.component.html @@ -0,0 +1,6 @@ +<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"> + <h1 style="margin-top: 0"><i class="fa fa-inbox fa-2x"></i> {{lang.administration}}</h1> +</div> diff --git a/apps/maarch_entreprise/Views/entity-administration.component.html b/apps/maarch_entreprise/Views/entity-administration.component.html new file mode 100644 index 00000000000..c5d204d5c49 --- /dev/null +++ b/apps/maarch_entreprise/Views/entity-administration.component.html @@ -0,0 +1,12 @@ +<div class="page-header"> +</div> +<div *ngIf="loading"> + <mat-spinner style="margin:auto;"></mat-spinner> +</div> +<div *ngIf="!loading" class="container-fluid"> + <div class="row row-eq-height"> + <div class="col-md-offset-4 col-md-4" 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>Informations</h2> + </div> + </div> +</div> diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js index b7e253cfab7..557787754d1 100644 --- a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js +++ b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js @@ -16,6 +16,8 @@ var group_administration_component_1 = require("./group-administration.component var baskets_administration_component_1 = require("./baskets-administration.component"); var baskets_order_administration_component_1 = require("./baskets-order-administration.component"); var basket_administration_component_1 = require("./basket-administration.component"); +var entities_administration_component_1 = require("./entities-administration.component"); +var entity_administration_component_1 = require("./entity-administration.component"); var statuses_administration_component_1 = require("./statuses-administration.component"); var status_administration_component_1 = require("./status-administration.component"); var actions_administration_component_1 = require("./actions-administration.component"); @@ -49,6 +51,9 @@ var AdministrationRoutingModule = /** @class */ (function () { { path: 'administration/baskets-sorted', component: baskets_order_administration_component_1.BasketsOrderAdministrationComponent }, { path: 'administration/baskets/new', component: basket_administration_component_1.BasketAdministrationComponent }, { path: 'administration/baskets/:id', component: basket_administration_component_1.BasketAdministrationComponent }, + { path: 'administration/entities', component: entities_administration_component_1.EntitiesAdministrationComponent }, + { path: 'administration/entities/new', component: entity_administration_component_1.EntityAdministrationComponent }, + { path: 'administration/entities/:id', component: entity_administration_component_1.EntityAdministrationComponent }, { path: 'administration/statuses', component: statuses_administration_component_1.StatusesAdministrationComponent }, { path: 'administration/statuses/new', component: status_administration_component_1.StatusAdministrationComponent }, { path: 'administration/statuses/:identifier', component: status_administration_component_1.StatusAdministrationComponent }, diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts index eab7ab31fbf..a38ca42a2e1 100755 --- a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts +++ b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts @@ -1,29 +1,31 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; -import { AdministrationComponent } from './administration.component'; -import { UsersAdministrationComponent } from './users-administration.component'; -import { UserAdministrationComponent } from './user-administration.component'; -import { GroupsAdministrationComponent } from './groups-administration.component'; -import { GroupAdministrationComponent } from './group-administration.component'; -import { BasketsAdministrationComponent } from './baskets-administration.component'; -import { BasketsOrderAdministrationComponent } from './baskets-order-administration.component'; -import { BasketAdministrationComponent } from './basket-administration.component'; -import { StatusesAdministrationComponent } from './statuses-administration.component'; -import { StatusAdministrationComponent } from './status-administration.component'; -import { ActionsAdministrationComponent } from './actions-administration.component'; -import { ActionAdministrationComponent } from './action-administration.component'; -import { ParameterAdministrationComponent } from './parameter-administration.component'; -import { ParametersAdministrationComponent } from './parameters-administration.component'; -import { PrioritiesAdministrationComponent } from './priorities-administration.component'; -import { PriorityAdministrationComponent } from './priority-administration.component'; -import { ReportsAdministrationComponent } from './reports-administration.component'; -import { NotificationsAdministrationComponent } from './notifications-administration.component'; -import { NotificationAdministrationComponent } from './notification-administration.component'; -import { NotificationsScheduleAdministrationComponent } from './notifications-schedule-administration.component'; -import { HistoryAdministrationComponent } from './history-administration.component'; -import { HistoryBatchAdministrationComponent } from './historyBatch-administration.component'; -import { UpdateStatusAdministrationComponent } from './update-status-administration.component'; +import { AdministrationComponent } from './administration.component'; +import { UsersAdministrationComponent } from './users-administration.component'; +import { UserAdministrationComponent } from './user-administration.component'; +import { GroupsAdministrationComponent } from './groups-administration.component'; +import { GroupAdministrationComponent } from './group-administration.component'; +import { BasketsAdministrationComponent } from './baskets-administration.component'; +import { BasketsOrderAdministrationComponent } from './baskets-order-administration.component'; +import { BasketAdministrationComponent } from './basket-administration.component'; +import { EntitiesAdministrationComponent } from './entities-administration.component'; +import { EntityAdministrationComponent } from './entity-administration.component'; +import { StatusesAdministrationComponent } from './statuses-administration.component'; +import { StatusAdministrationComponent } from './status-administration.component'; +import { ActionsAdministrationComponent } from './actions-administration.component'; +import { ActionAdministrationComponent } from './action-administration.component'; +import { ParameterAdministrationComponent } from './parameter-administration.component'; +import { ParametersAdministrationComponent } from './parameters-administration.component'; +import { PrioritiesAdministrationComponent } from './priorities-administration.component'; +import { PriorityAdministrationComponent } from './priority-administration.component'; +import { ReportsAdministrationComponent } from './reports-administration.component'; +import { NotificationsAdministrationComponent } from './notifications-administration.component'; +import { NotificationAdministrationComponent } from './notification-administration.component'; +import { NotificationsScheduleAdministrationComponent } from './notifications-schedule-administration.component'; +import { HistoryAdministrationComponent } from './history-administration.component'; +import { HistoryBatchAdministrationComponent } from './historyBatch-administration.component'; +import { UpdateStatusAdministrationComponent } from './update-status-administration.component'; @NgModule({ @@ -40,6 +42,9 @@ import { UpdateStatusAdministrationComponent } from './update-status-administra { path: 'administration/baskets-sorted', component: BasketsOrderAdministrationComponent }, { path: 'administration/baskets/new', component: BasketAdministrationComponent }, { path: 'administration/baskets/:id', component: BasketAdministrationComponent }, + { path: 'administration/entities', component: EntitiesAdministrationComponent }, + { path: 'administration/entities/new', component: EntityAdministrationComponent }, + { path: 'administration/entities/:id', component: EntityAdministrationComponent }, { path: 'administration/statuses', component: StatusesAdministrationComponent }, { path: 'administration/statuses/new', component: StatusAdministrationComponent }, { path: 'administration/statuses/:identifier', component: StatusAdministrationComponent }, diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration.module.js b/apps/maarch_entreprise/js/angular/app/administration/administration.module.js index e2630c7a3e5..8e803ce36bb 100644 --- a/apps/maarch_entreprise/js/angular/app/administration/administration.module.js +++ b/apps/maarch_entreprise/js/angular/app/administration/administration.module.js @@ -14,12 +14,14 @@ var app_material_module_1 = require("../app-material.module"); var administration_routing_module_1 = require("./administration-routing.module"); var administration_component_1 = require("./administration.component"); var users_administration_component_1 = require("./users-administration.component"); -var user_administration_component_1 = require("./user-administration.component"); var groups_administration_component_1 = require("./groups-administration.component"); +var user_administration_component_1 = require("./user-administration.component"); var group_administration_component_1 = require("./group-administration.component"); var baskets_administration_component_1 = require("./baskets-administration.component"); var baskets_order_administration_component_1 = require("./baskets-order-administration.component"); var basket_administration_component_1 = require("./basket-administration.component"); +var entities_administration_component_1 = require("./entities-administration.component"); +var entity_administration_component_1 = require("./entity-administration.component"); var statuses_administration_component_1 = require("./statuses-administration.component"); var status_administration_component_1 = require("./status-administration.component"); var actions_administration_component_1 = require("./actions-administration.component"); @@ -57,6 +59,8 @@ var AdministrationModule = /** @class */ (function () { baskets_administration_component_1.BasketsAdministrationComponent, baskets_order_administration_component_1.BasketsOrderAdministrationComponent, basket_administration_component_1.BasketAdministrationComponent, + entities_administration_component_1.EntitiesAdministrationComponent, + entity_administration_component_1.EntityAdministrationComponent, statuses_administration_component_1.StatusesAdministrationComponent, status_administration_component_1.StatusAdministrationComponent, actions_administration_component_1.ActionsAdministrationComponent, diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts b/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts index 7fa0b0fe096..b0c86c5ef61 100755 --- a/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts +++ b/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts @@ -1,19 +1,21 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { HttpClientModule } from '@angular/common/http'; +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; import { AppMaterialModule } from '../app-material.module'; import { AdministrationRoutingModule } from './administration-routing.module'; import { AdministrationComponent } from './administration.component'; -import { UsersAdministrationComponent, UsersAdministrationRedirectModalComponent } from './users-administration.component'; +import { UsersAdministrationComponent, UsersAdministrationRedirectModalComponent } from './users-administration.component'; +import { GroupsAdministrationComponent, GroupsAdministrationRedirectModalComponent } from './groups-administration.component'; import { UserAdministrationComponent } from './user-administration.component'; -import { GroupsAdministrationComponent, GroupsAdministrationRedirectModalComponent } from './groups-administration.component'; import { GroupAdministrationComponent } from './group-administration.component'; import { BasketsAdministrationComponent } from './baskets-administration.component'; import { BasketsOrderAdministrationComponent } from './baskets-order-administration.component'; import { BasketAdministrationComponent } from './basket-administration.component'; +import { EntitiesAdministrationComponent } from './entities-administration.component'; +import { EntityAdministrationComponent } from './entity-administration.component'; import { StatusesAdministrationComponent } from './statuses-administration.component'; import { StatusAdministrationComponent } from './status-administration.component'; import { ActionsAdministrationComponent } from './actions-administration.component'; @@ -49,6 +51,8 @@ import { NotificationAdministrationComponent } from './notification-adm BasketsAdministrationComponent, BasketsOrderAdministrationComponent, BasketAdministrationComponent, + EntitiesAdministrationComponent, + EntityAdministrationComponent, StatusesAdministrationComponent, StatusAdministrationComponent, ActionsAdministrationComponent, diff --git a/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.js b/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.js new file mode 100644 index 00000000000..52721d5cfdc --- /dev/null +++ b/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.js @@ -0,0 +1,70 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var core_1 = require("@angular/core"); +var http_1 = require("@angular/common/http"); +var translate_component_1 = require("../translate.component"); +var notification_service_1 = require("../notification.service"); +var EntitiesAdministrationComponent = /** @class */ (function () { + function EntitiesAdministrationComponent(http, notify) { + this.http = http; + this.notify = notify; + this.lang = translate_component_1.LANG; + this.entities = []; + this.loading = false; + } + EntitiesAdministrationComponent.prototype.updateBreadcrumb = function (applicationName) { + if ($j('#ariane')[0]) { + $j('#ariane')[0].innerHTML = "<a href='index.php?reinit=true'>" + applicationName + "</a> > <a onclick='location.hash = \"/administration\"' style='cursor: pointer'>Administration</a> > Entités"; + } + }; + EntitiesAdministrationComponent.prototype.ngOnInit = function () { + var _this = this; + this.updateBreadcrumb(angularGlobals.applicationName); + this.coreUrl = angularGlobals.coreUrl; + this.loading = true; + this.http.get(this.coreUrl + "rest/entities") + .subscribe(function (data) { + _this.entities = data['entities']; + _this.loading = false; + }, function () { + location.href = "index.php"; + }); + }; + EntitiesAdministrationComponent.prototype.updateStatus = function (entity, method) { + var _this = this; + this.http.put(this.coreUrl + "rest/entities/" + entity['entity_id'] + "/status", { "method": method }) + .subscribe(function (data) { + _this.notify.success(""); + }, function (err) { + _this.notify.error(err.error.errors); + }); + }; + EntitiesAdministrationComponent.prototype.delete = function (entity) { + var _this = this; + this.http.delete(this.coreUrl + "rest/entities/" + entity['entity_id']) + .subscribe(function (data) { + _this.notify.success(_this.lang.entityDeleted); + _this.entities = data['entities']; + }, function (err) { + _this.notify.error(err.error.errors); + }); + }; + EntitiesAdministrationComponent = __decorate([ + core_1.Component({ + templateUrl: angularGlobals["entities-administrationView"], + providers: [notification_service_1.NotificationService] + }), + __metadata("design:paramtypes", [http_1.HttpClient, notification_service_1.NotificationService]) + ], EntitiesAdministrationComponent); + return EntitiesAdministrationComponent; +}()); +exports.EntitiesAdministrationComponent = EntitiesAdministrationComponent; diff --git a/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts b/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts new file mode 100644 index 00000000000..4fcc3cc1a74 --- /dev/null +++ b/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts @@ -0,0 +1,68 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { LANG } from '../translate.component'; +import { NotificationService } from '../notification.service'; + +declare function $j(selector: any) : any; + +declare var angularGlobals : any; + + +@Component({ + templateUrl : angularGlobals["entities-administrationView"], + providers : [NotificationService] +}) +export class EntitiesAdministrationComponent implements OnInit { + + coreUrl : string; + lang : any = LANG; + + entities : any[] = []; + + loading : boolean = false; + + + constructor(public http: HttpClient, private notify: NotificationService) { + } + + updateBreadcrumb(applicationName: string) { + if ($j('#ariane')[0]) { + $j('#ariane')[0].innerHTML = "<a href='index.php?reinit=true'>" + applicationName + "</a> > <a onclick='location.hash = \"/administration\"' style='cursor: pointer'>Administration</a> > Entités"; + } + } + + ngOnInit(): void { + this.updateBreadcrumb(angularGlobals.applicationName); + this.coreUrl = angularGlobals.coreUrl; + + this.loading = true; + + this.http.get(this.coreUrl + "rest/entities") + .subscribe((data : any) => { + this.entities = data['entities']; + + this.loading = false; + }, () => { + location.href = "index.php"; + }); + } + + updateStatus(entity: any, method: string) { + this.http.put(this.coreUrl + "rest/entities/" + entity['entity_id'] + "/status", {"method" : method}) + .subscribe((data : any) => { + this.notify.success(""); + }, (err) => { + this.notify.error(err.error.errors); + }); + } + + delete(entity: any) { + this.http.delete(this.coreUrl + "rest/entities/" + entity['entity_id']) + .subscribe((data : any) => { + this.notify.success(this.lang.entityDeleted); + this.entities = data['entities']; + }, (err) => { + this.notify.error(err.error.errors); + }); + } +} diff --git a/apps/maarch_entreprise/js/angular/app/administration/entity-administration.component.js b/apps/maarch_entreprise/js/angular/app/administration/entity-administration.component.js new file mode 100644 index 00000000000..565d521717b --- /dev/null +++ b/apps/maarch_entreprise/js/angular/app/administration/entity-administration.component.js @@ -0,0 +1,104 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var core_1 = require("@angular/core"); +var http_1 = require("@angular/common/http"); +var router_1 = require("@angular/router"); +var translate_component_1 = require("../translate.component"); +var notification_service_1 = require("../notification.service"); +var EntityAdministrationComponent = /** @class */ (function () { + function EntityAdministrationComponent(http, route, router, notify) { + this.http = http; + this.route = route; + this.router = router; + this.notify = notify; + this.lang = translate_component_1.LANG; + this.entity = {}; + this.loading = false; + } + EntityAdministrationComponent.prototype.updateBreadcrumb = function (applicationName) { + if ($j('#ariane')[0]) { + $j('#ariane')[0].innerHTML = "<a href='index.php?reinit=true'>" + applicationName + "</a> > <a onclick='location.hash = \"/administration\"' style='cursor: pointer'>Administration</a> > <a onclick='location.hash = \"/administration/entities\"' style='cursor: pointer'>Entités</a>"; + } + }; + EntityAdministrationComponent.prototype.ngOnInit = function () { + var _this = this; + this.updateBreadcrumb(angularGlobals.applicationName); + this.coreUrl = angularGlobals.coreUrl; + this.loading = true; + this.route.params.subscribe(function (params) { + if (typeof params['id'] == "undefined") { + _this.creationMode = true; + _this.entityIdAvailable = false; + _this.loading = false; + } + else { + _this.creationMode = false; + _this.entityIdAvailable = true; + _this.id = params['id']; + _this.http.get(_this.coreUrl + "rest/entities/" + _this.id + "/details") + .subscribe(function (data) { + _this.entity = data.basket; + _this.loading = false; + }, function () { + location.href = "index.php"; + }); + } + }); + }; + EntityAdministrationComponent.prototype.isAvailable = function () { + var _this = this; + if (this.entity.id) { + this.http.get(this.coreUrl + "rest/entities/" + this.entity.id) + .subscribe(function () { + _this.entityIdAvailable = false; + }, function (err) { + _this.entityIdAvailable = false; + if (err.error.errors == "Entity not found") { + _this.entityIdAvailable = true; + } + }); + } + else { + this.entityIdAvailable = false; + } + }; + EntityAdministrationComponent.prototype.onSubmit = function () { + var _this = this; + if (this.creationMode) { + this.http.post(this.coreUrl + "rest/entities", this.entity) + .subscribe(function (data) { + _this.notify.success(_this.lang.entityAdded); + _this.router.navigate(["/administration/entities"]); + }, function (err) { + _this.notify.error(err.error.errors); + }); + } + else { + this.http.put(this.coreUrl + "rest/entities/" + this.id, this.entity) + .subscribe(function (data) { + _this.notify.success(_this.lang.entityUpdated); + _this.router.navigate(["/administration/entities"]); + }, function (err) { + _this.notify.error(err.error.errors); + }); + } + }; + EntityAdministrationComponent = __decorate([ + core_1.Component({ + templateUrl: angularGlobals["entity-administrationView"], + providers: [notification_service_1.NotificationService] + }), + __metadata("design:paramtypes", [http_1.HttpClient, router_1.ActivatedRoute, router_1.Router, notification_service_1.NotificationService]) + ], EntityAdministrationComponent); + return EntityAdministrationComponent; +}()); +exports.EntityAdministrationComponent = EntityAdministrationComponent; diff --git a/apps/maarch_entreprise/js/angular/app/administration/entity-administration.component.ts b/apps/maarch_entreprise/js/angular/app/administration/entity-administration.component.ts new file mode 100644 index 00000000000..f9d7b3d9e4e --- /dev/null +++ b/apps/maarch_entreprise/js/angular/app/administration/entity-administration.component.ts @@ -0,0 +1,102 @@ +import { Component, OnInit} from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Router, ActivatedRoute } from '@angular/router'; +import { LANG } from '../translate.component'; +import { NotificationService } from '../notification.service'; + +declare function $j(selector: any) : any; + +declare var angularGlobals : any; + + +@Component({ + templateUrl : angularGlobals["entity-administrationView"], + providers : [NotificationService] +}) +export class EntityAdministrationComponent implements OnInit { + + coreUrl : string; + lang : any = LANG; + + id : string; + creationMode : boolean; + + entity : any = {}; + entityIdAvailable : boolean; + + loading : boolean = false; + + + constructor(public http: HttpClient, private route: ActivatedRoute, private router: Router, private notify: NotificationService) { + } + + updateBreadcrumb(applicationName: string) { + if ($j('#ariane')[0]) { + $j('#ariane')[0].innerHTML = "<a href='index.php?reinit=true'>" + applicationName + "</a> > <a onclick='location.hash = \"/administration\"' style='cursor: pointer'>Administration</a> > <a onclick='location.hash = \"/administration/entities\"' style='cursor: pointer'>Entités</a>"; + } + } + + ngOnInit(): void { + this.updateBreadcrumb(angularGlobals.applicationName); + this.coreUrl = angularGlobals.coreUrl; + + this.loading = true; + + this.route.params.subscribe((params) => { + if (typeof params['id'] == "undefined") { + this.creationMode = true; + this.entityIdAvailable = false; + this.loading = false; + } else { + this.creationMode = false; + this.entityIdAvailable = true; + this.id = params['id']; + this.http.get(this.coreUrl + "rest/entities/" + this.id + "/details") + .subscribe((data : any) => { + this.entity = data.basket; + + this.loading = false; + }, () => { + location.href = "index.php"; + }); + } + }); + } + + isAvailable() { + if (this.entity.id) { + this.http.get(this.coreUrl + "rest/entities/" + this.entity.id) + .subscribe(() => { + this.entityIdAvailable = false; + }, (err) => { + this.entityIdAvailable = false; + if (err.error.errors == "Entity not found") { + this.entityIdAvailable = true; + } + }); + } else { + this.entityIdAvailable = false; + } + } + + onSubmit() { + if (this.creationMode) { + this.http.post(this.coreUrl + "rest/entities", this.entity) + .subscribe((data : any) => { + this.notify.success(this.lang.entityAdded); + this.router.navigate(["/administration/entities"]); + }, (err) => { + this.notify.error(err.error.errors); + }); + } else { + this.http.put(this.coreUrl + "rest/entities/" + this.id, this.entity) + .subscribe((data : any) => { + this.notify.success(this.lang.entityUpdated); + this.router.navigate(["/administration/entities"]); + }, (err) => { + this.notify.error(err.error.errors); + }); + } + } + +} \ No newline at end of file diff --git a/apps/maarch_entreprise/js/angular/lang/lang-en.ts b/apps/maarch_entreprise/js/angular/lang/lang-en.ts index 4e06e5b8d2d..ce6db8b6126 100755 --- a/apps/maarch_entreprise/js/angular/lang/lang-en.ts +++ b/apps/maarch_entreprise/js/angular/lang/lang-en.ts @@ -115,22 +115,22 @@ export const LANG_EN = { "no" : "No", "noReplacement" : "No replacement", "notes" : "Notes", - "NotificationAdded" : "Notification added", - "notificationCreation" : "Notification creation", - "notificationDeleted" : "Notification deleted", - "NotificationDiffusionType" : "Diffusion type", - "NotificationEnabled" : "Enabled", - "NotificationEvent" : "Event", - "NotificationJoinDocument" : "Join document to notification", - "NotificationModel" : "Model", - "notificationModification" : "Notification modification", - "notifications" : "Notification(s)", - "notificationSchedule" : "Notifications schedule", - "NotificationScheduleInfo" : "This part is used to define when notifications will be sent.\n\nIf you choose * from all the drop-down lists, the notification will be sent every minute 365 days a year.\n\nFrequency example :\n14 30 * * * [courrier] Nouveaux courriers à traiter : La notification sera envoyée tous les jours à 14h30\n9 30 * * Lundi [courrier] Nouveaux courriers à traiter : La notification sera envoyée tous les lundi à 9h30", - "NotificationScheduleUpdated" : "Schedule updated", - "notificationsSchedule" : "Notifications schedule", - "NotificationToEnable" : "To enable", - "notificationUpdated" : "Notification updated", + "NotificationAdded" : "Notification added", + "notificationCreation" : "Notification creation", + "notificationDeleted" : "Notification deleted", + "NotificationDiffusionType" : "Diffusion type", + "NotificationEnabled" : "Enabled", + "NotificationEvent" : "Event", + "NotificationJoinDocument" : "Join document to notification", + "NotificationModel" : "Model", + "notificationModification" : "Notification modification", + "notifications" : "Notification(s)", + "notificationSchedule" : "Notifications schedule", + "NotificationScheduleInfo" : "This part is used to define when notifications will be sent.\n\nIf you choose * from all the drop-down lists, the notification will be sent every minute 365 days a year.\n\nFrequency example :\n14 30 * * * [courrier] Nouveaux courriers à traiter : La notification sera envoyée tous les jours à 14h30\n9 30 * * Lundi [courrier] Nouveaux courriers à traiter : La notification sera envoyée tous les lundi à 9h30", + "NotificationScheduleUpdated" : "Schedule updated", + "notificationsSchedule" : "Notifications schedule", + "NotificationToEnable" : "To enable", + "notificationUpdated" : "Notification updated", "parameter" : "Parameter", "parameterAdded" : "Parameter added", "parameterDeleted" : "Parameter deleted", diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts index 8b9595c011b..6e6c764d603 100755 --- a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts +++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts @@ -208,24 +208,24 @@ export const LANG_FR = { "totalProcessed" : "Élément(s) analysé(s)", "type" : "Type", "unselectAll" : "Tout désélectionner", - "update" : "Modifier", - "updateStatus" : "Changement de statut de courrier", - "updateStatusInformations" : "En saisissant le n° chrono ou le n° GED du document, vous modifierez le statut du courrier. Le courrier sera disponible dans la bannette des utilisateurs auquel il était affecté suivant le statut que vous aurez défini.", - "user" : "utilisateur", - "userAdded" : "Utilisateur ajouté", - "userAuthorized" : "Utilisateur autorisé", - "userCreation" : "Création d'un utilisateur", - "userDeleted" : "Utilisateur supprimé", - "userModification" : "Modification de l'utilisateur", - "users" : "Utilisateur(s)", - "userSuspended" : "Utilisateur suspendu", - "userUpdated" : "Utilisateur modifié", - "validate" : "Valider", - "value" : "valeur", - "view" : "Consulter", - "visa" : "Circuit de visa", - "workingDays" : "Jours ouvrés", - "yes" : "Oui", - "createScriptNotification" : "Créer le script", - "ScriptCreated" : "Script créé", + "update" : "Modifier", + "updateStatus" : "Changement de statut de courrier", + "updateStatusInformations" : "En saisissant le n° chrono ou le n° GED du document, vous modifierez le statut du courrier. Le courrier sera disponible dans la bannette des utilisateurs auquel il était affecté suivant le statut que vous aurez défini.", + "user" : "utilisateur", + "userAdded" : "Utilisateur ajouté", + "userAuthorized" : "Utilisateur autorisé", + "userCreation" : "Création d'un utilisateur", + "userDeleted" : "Utilisateur supprimé", + "userModification" : "Modification de l'utilisateur", + "users" : "Utilisateur(s)", + "userSuspended" : "Utilisateur suspendu", + "userUpdated" : "Utilisateur modifié", + "validate" : "Valider", + "value" : "valeur", + "view" : "Consulter", + "visa" : "Circuit de visa", + "workingDays" : "Jours ouvrés", + "yes" : "Oui", + "createScriptNotification" : "Créer le script", + "ScriptCreated" : "Script créé", }; \ No newline at end of file diff --git a/apps/maarch_entreprise/js/angularFunctions.js b/apps/maarch_entreprise/js/angularFunctions.js index 4c0b5010dda..c06291a9879 100755 --- a/apps/maarch_entreprise/js/angularFunctions.js +++ b/apps/maarch_entreprise/js/angularFunctions.js @@ -12,6 +12,8 @@ function triggerAngular(prodmode, locationToGo) { 'baskets-administration', 'baskets-order-administration', 'basket-administration', + 'entities-administration', + 'entity-administration', 'status-administration', 'statuses-administration', 'actions-administration', diff --git a/rest/index.php b/rest/index.php index 86c60d9c262..220e22764e1 100755 --- a/rest/index.php +++ b/rest/index.php @@ -207,6 +207,7 @@ $app->put('/currentUser/groups/{groupId}/baskets/{basketId}', \Core\Controllers\ //Entities $app->get('/entities', \Entity\controllers\EntityController::class . ':get'); +$app->get('/entities/{id}', \Entity\controllers\EntityController::class . ':getById'); $app->delete('/entities/{id}', \Entity\controllers\EntityController::class . ':delete'); $app->get('/entities/{id}/details', \Entity\controllers\EntityController::class . ':getDetailledById'); $app->put('/entities/{id}/reassign/{newEntityId}', \Entity\controllers\EntityController::class . ':reassignEntity'); diff --git a/src/app/entity/controllers/EntityController.php b/src/app/entity/controllers/EntityController.php index 8f1d7cf9eb1..eb286a5ce81 100644 --- a/src/app/entity/controllers/EntityController.php +++ b/src/app/entity/controllers/EntityController.php @@ -40,6 +40,16 @@ class EntityController return $response->withJson(['entities' => $entities]); } + public function getById(Request $request, Response $response, array $aArgs) + { + $entity = EntityModel::getById(['entityId' => $aArgs['id']]); + if (empty($entity)) { + return $response->withStatus(400)->withJson(['errors' => 'Entity not found']); + } + + return $response->withJson(['entity' => $entity]); + } + public function getDetailledById(Request $request, Response $response, array $aArgs) { if (!ServiceModel::hasService(['id' => 'manage_entities', 'userId' => $GLOBALS['userId'], 'location' => 'entities', 'type' => 'admin'])) { -- GitLab