Compare commits
No commits in common. 'review' and 'master' have entirely different histories.
@ -1,17 +0,0 @@ |
|||||||
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. |
|
||||||
# For additional information regarding the format and rule options, please see: |
|
||||||
# https://github.com/browserslist/browserslist#queries |
|
||||||
|
|
||||||
# For the full list of supported browsers by the Angular framework, please see: |
|
||||||
# https://angular.io/guide/browser-support |
|
||||||
|
|
||||||
# You can see what browsers were selected by your queries by running: |
|
||||||
# npx browserslist |
|
||||||
|
|
||||||
last 1 Chrome version |
|
||||||
last 1 Firefox version |
|
||||||
last 2 Edge major versions |
|
||||||
last 2 Safari major versions |
|
||||||
last 2 iOS major versions |
|
||||||
Firefox ESR |
|
||||||
not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. |
|
@ -1,16 +0,0 @@ |
|||||||
# Editor configuration, see https://editorconfig.org |
|
||||||
root = true |
|
||||||
|
|
||||||
[*] |
|
||||||
charset = utf-8 |
|
||||||
indent_style = space |
|
||||||
indent_size = 2 |
|
||||||
insert_final_newline = true |
|
||||||
trim_trailing_whitespace = true |
|
||||||
|
|
||||||
[*.ts] |
|
||||||
quote_type = single |
|
||||||
|
|
||||||
[*.md] |
|
||||||
max_line_length = off |
|
||||||
trim_trailing_whitespace = false |
|
@ -1,45 +1,477 @@ |
|||||||
# See http://help.github.com/ignore-files/ for more about ignoring files. |
# ---> JetBrains |
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider |
||||||
# compiled output |
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 |
||||||
/dist |
|
||||||
/tmp |
# User-specific stuff |
||||||
/out-tsc |
.idea/**/workspace.xml |
||||||
# Only exists if Bazel was run |
.idea/**/tasks.xml |
||||||
/bazel-out |
.idea/**/usage.statistics.xml |
||||||
|
.idea/**/dictionaries |
||||||
# dependencies |
.idea/**/shelf |
||||||
/node_modules |
|
||||||
|
# AWS User-specific |
||||||
# profiling files |
.idea/**/aws.xml |
||||||
chrome-profiler-events*.json |
|
||||||
|
# Generated files |
||||||
# IDEs and editors |
.idea/**/contentModel.xml |
||||||
/.idea |
|
||||||
.project |
# Sensitive or high-churn files |
||||||
.classpath |
.idea/**/dataSources/ |
||||||
.c9/ |
.idea/**/dataSources.ids |
||||||
*.launch |
.idea/**/dataSources.local.xml |
||||||
.settings/ |
.idea/**/sqlDataSources.xml |
||||||
*.sublime-workspace |
.idea/**/dynamic.xml |
||||||
|
.idea/**/uiDesigner.xml |
||||||
# IDE - VSCode |
.idea/**/dbnavigator.xml |
||||||
|
|
||||||
|
# Gradle |
||||||
|
.idea/**/gradle.xml |
||||||
|
.idea/**/libraries |
||||||
|
|
||||||
|
# Gradle and Maven with auto-import |
||||||
|
# When using Gradle or Maven with auto-import, you should exclude module files, |
||||||
|
# since they will be recreated, and may cause churn. Uncomment if using |
||||||
|
# auto-import. |
||||||
|
# .idea/artifacts |
||||||
|
# .idea/compiler.xml |
||||||
|
# .idea/jarRepositories.xml |
||||||
|
# .idea/modules.xml |
||||||
|
# .idea/*.iml |
||||||
|
# .idea/modules |
||||||
|
# *.iml |
||||||
|
# *.ipr |
||||||
|
|
||||||
|
# CMake |
||||||
|
cmake-build-*/ |
||||||
|
|
||||||
|
# Mongo Explorer plugin |
||||||
|
.idea/**/mongoSettings.xml |
||||||
|
|
||||||
|
# File-based project format |
||||||
|
*.iws |
||||||
|
|
||||||
|
# IntelliJ |
||||||
|
out/ |
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin |
||||||
|
.idea_modules/ |
||||||
|
|
||||||
|
# JIRA plugin |
||||||
|
atlassian-ide-plugin.xml |
||||||
|
|
||||||
|
# Cursive Clojure plugin |
||||||
|
.idea/replstate.xml |
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ) |
||||||
|
com_crashlytics_export_strings.xml |
||||||
|
crashlytics.properties |
||||||
|
crashlytics-build.properties |
||||||
|
fabric.properties |
||||||
|
|
||||||
|
# Editor-based Rest Client |
||||||
|
.idea/httpRequests |
||||||
|
|
||||||
|
# Android studio 3.1+ serialized cache file |
||||||
|
.idea/caches/build_file_checksums.ser |
||||||
|
|
||||||
|
# ---> VisualStudio |
||||||
|
## Ignore Visual Studio temporary files, build results, and |
||||||
|
## files generated by popular Visual Studio add-ons. |
||||||
|
## |
||||||
|
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore |
||||||
|
|
||||||
|
# User-specific files |
||||||
|
*.rsuser |
||||||
|
*.suo |
||||||
|
*.user |
||||||
|
*.userosscache |
||||||
|
*.sln.docstates |
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio) |
||||||
|
*.userprefs |
||||||
|
|
||||||
|
# Mono auto generated files |
||||||
|
mono_crash.* |
||||||
|
|
||||||
|
# Build results |
||||||
|
[Dd]ebug/ |
||||||
|
[Dd]ebugPublic/ |
||||||
|
[Rr]elease/ |
||||||
|
[Rr]eleases/ |
||||||
|
x64/ |
||||||
|
x86/ |
||||||
|
[Ww][Ii][Nn]32/ |
||||||
|
[Aa][Rr][Mm]/ |
||||||
|
[Aa][Rr][Mm]64/ |
||||||
|
bld/ |
||||||
|
[Bb]in/ |
||||||
|
[Oo]bj/ |
||||||
|
[Ll]og/ |
||||||
|
[Ll]ogs/ |
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory |
||||||
|
.vs/ |
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot |
||||||
|
#wwwroot/ |
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files |
||||||
|
Generated\ Files/ |
||||||
|
|
||||||
|
# MSTest test Results |
||||||
|
[Tt]est[Rr]esult*/ |
||||||
|
[Bb]uild[Ll]og.* |
||||||
|
|
||||||
|
# NUnit |
||||||
|
*.VisualState.xml |
||||||
|
TestResult.xml |
||||||
|
nunit-*.xml |
||||||
|
|
||||||
|
# Build Results of an ATL Project |
||||||
|
[Dd]ebugPS/ |
||||||
|
[Rr]eleasePS/ |
||||||
|
dlldata.c |
||||||
|
|
||||||
|
# Benchmark Results |
||||||
|
BenchmarkDotNet.Artifacts/ |
||||||
|
|
||||||
|
# .NET Core |
||||||
|
project.lock.json |
||||||
|
project.fragment.lock.json |
||||||
|
artifacts/ |
||||||
|
|
||||||
|
# ASP.NET Scaffolding |
||||||
|
ScaffoldingReadMe.txt |
||||||
|
|
||||||
|
# StyleCop |
||||||
|
StyleCopReport.xml |
||||||
|
|
||||||
|
# Files built by Visual Studio |
||||||
|
*_i.c |
||||||
|
*_p.c |
||||||
|
*_h.h |
||||||
|
*.ilk |
||||||
|
*.meta |
||||||
|
*.obj |
||||||
|
*.iobj |
||||||
|
*.pch |
||||||
|
*.pdb |
||||||
|
*.ipdb |
||||||
|
*.pgc |
||||||
|
*.pgd |
||||||
|
*.rsp |
||||||
|
*.sbr |
||||||
|
*.tlb |
||||||
|
*.tli |
||||||
|
*.tlh |
||||||
|
*.tmp |
||||||
|
*.tmp_proj |
||||||
|
*_wpftmp.csproj |
||||||
|
*.log |
||||||
|
*.tlog |
||||||
|
*.vspscc |
||||||
|
*.vssscc |
||||||
|
.builds |
||||||
|
*.pidb |
||||||
|
*.svclog |
||||||
|
*.scc |
||||||
|
|
||||||
|
# Chutzpah Test files |
||||||
|
_Chutzpah* |
||||||
|
|
||||||
|
# Visual C++ cache files |
||||||
|
ipch/ |
||||||
|
*.aps |
||||||
|
*.ncb |
||||||
|
*.opendb |
||||||
|
*.opensdf |
||||||
|
*.sdf |
||||||
|
*.cachefile |
||||||
|
*.VC.db |
||||||
|
*.VC.VC.opendb |
||||||
|
|
||||||
|
# Visual Studio profiler |
||||||
|
*.psess |
||||||
|
*.vsp |
||||||
|
*.vspx |
||||||
|
*.sap |
||||||
|
|
||||||
|
# Visual Studio Trace Files |
||||||
|
*.e2e |
||||||
|
|
||||||
|
# TFS 2012 Local Workspace |
||||||
|
$tf/ |
||||||
|
|
||||||
|
# Guidance Automation Toolkit |
||||||
|
*.gpState |
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in |
||||||
|
_ReSharper*/ |
||||||
|
*.[Rr]e[Ss]harper |
||||||
|
*.DotSettings.user |
||||||
|
|
||||||
|
# TeamCity is a build add-in |
||||||
|
_TeamCity* |
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool |
||||||
|
*.dotCover |
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool |
||||||
|
.axoCover/* |
||||||
|
!.axoCover/settings.json |
||||||
|
|
||||||
|
# Coverlet is a free, cross platform Code Coverage Tool |
||||||
|
coverage*.json |
||||||
|
coverage*.xml |
||||||
|
coverage*.info |
||||||
|
|
||||||
|
# Visual Studio code coverage results |
||||||
|
*.coverage |
||||||
|
*.coveragexml |
||||||
|
|
||||||
|
# NCrunch |
||||||
|
_NCrunch_* |
||||||
|
.*crunch*.local.xml |
||||||
|
nCrunchTemp_* |
||||||
|
|
||||||
|
# MightyMoose |
||||||
|
*.mm.* |
||||||
|
AutoTest.Net/ |
||||||
|
|
||||||
|
# Web workbench (sass) |
||||||
|
.sass-cache/ |
||||||
|
|
||||||
|
# Installshield output folder |
||||||
|
[Ee]xpress/ |
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in |
||||||
|
DocProject/buildhelp/ |
||||||
|
DocProject/Help/*.HxT |
||||||
|
DocProject/Help/*.HxC |
||||||
|
DocProject/Help/*.hhc |
||||||
|
DocProject/Help/*.hhk |
||||||
|
DocProject/Help/*.hhp |
||||||
|
DocProject/Help/Html2 |
||||||
|
DocProject/Help/html |
||||||
|
|
||||||
|
# Click-Once directory |
||||||
|
publish/ |
||||||
|
|
||||||
|
# Publish Web Output |
||||||
|
*.[Pp]ublish.xml |
||||||
|
*.azurePubxml |
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings, |
||||||
|
# but database connection strings (with potential passwords) will be unencrypted |
||||||
|
*.pubxml |
||||||
|
*.publishproj |
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to |
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained |
||||||
|
# in these scripts will be unencrypted |
||||||
|
PublishScripts/ |
||||||
|
|
||||||
|
# NuGet Packages |
||||||
|
*.nupkg |
||||||
|
# NuGet Symbol Packages |
||||||
|
*.snupkg |
||||||
|
# The packages folder can be ignored because of Package Restore |
||||||
|
**/[Pp]ackages/* |
||||||
|
# except build/, which is used as an MSBuild target. |
||||||
|
!**/[Pp]ackages/build/ |
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed |
||||||
|
#!**/[Pp]ackages/repositories.config |
||||||
|
# NuGet v3's project.json files produces more ignorable files |
||||||
|
*.nuget.props |
||||||
|
*.nuget.targets |
||||||
|
|
||||||
|
# Nuget personal access tokens and Credentials |
||||||
|
nuget.config |
||||||
|
|
||||||
|
# Microsoft Azure Build Output |
||||||
|
csx/ |
||||||
|
*.build.csdef |
||||||
|
|
||||||
|
# Microsoft Azure Emulator |
||||||
|
ecf/ |
||||||
|
rcf/ |
||||||
|
|
||||||
|
# Windows Store app package directories and files |
||||||
|
AppPackages/ |
||||||
|
BundleArtifacts/ |
||||||
|
Package.StoreAssociation.xml |
||||||
|
_pkginfo.txt |
||||||
|
*.appx |
||||||
|
*.appxbundle |
||||||
|
*.appxupload |
||||||
|
|
||||||
|
# Visual Studio cache files |
||||||
|
# files ending in .cache can be ignored |
||||||
|
*.[Cc]ache |
||||||
|
# but keep track of directories ending in .cache |
||||||
|
!?*.[Cc]ache/ |
||||||
|
|
||||||
|
# Others |
||||||
|
ClientBin/ |
||||||
|
~$* |
||||||
|
*~ |
||||||
|
*.dbmdl |
||||||
|
*.dbproj.schemaview |
||||||
|
*.jfm |
||||||
|
*.pfx |
||||||
|
*.publishsettings |
||||||
|
orleans.codegen.cs |
||||||
|
|
||||||
|
# Including strong name files can present a security risk |
||||||
|
# (https://github.com/github/gitignore/pull/2483#issue-259490424) |
||||||
|
#*.snk |
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components |
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) |
||||||
|
#bower_components/ |
||||||
|
|
||||||
|
# RIA/Silverlight projects |
||||||
|
Generated_Code/ |
||||||
|
|
||||||
|
# Backup & report files from converting an old project file |
||||||
|
# to a newer Visual Studio version. Backup files are not needed, |
||||||
|
# because we have git ;-) |
||||||
|
_UpgradeReport_Files/ |
||||||
|
Backup*/ |
||||||
|
UpgradeLog*.XML |
||||||
|
UpgradeLog*.htm |
||||||
|
ServiceFabricBackup/ |
||||||
|
*.rptproj.bak |
||||||
|
|
||||||
|
# SQL Server files |
||||||
|
*.mdf |
||||||
|
*.ldf |
||||||
|
*.ndf |
||||||
|
|
||||||
|
# Business Intelligence projects |
||||||
|
*.rdl.data |
||||||
|
*.bim.layout |
||||||
|
*.bim_*.settings |
||||||
|
*.rptproj.rsuser |
||||||
|
*- [Bb]ackup.rdl |
||||||
|
*- [Bb]ackup ([0-9]).rdl |
||||||
|
*- [Bb]ackup ([0-9][0-9]).rdl |
||||||
|
|
||||||
|
# Microsoft Fakes |
||||||
|
FakesAssemblies/ |
||||||
|
|
||||||
|
# GhostDoc plugin setting file |
||||||
|
*.GhostDoc.xml |
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio |
||||||
|
.ntvs_analysis.dat |
||||||
|
node_modules/ |
||||||
|
|
||||||
|
# Visual Studio 6 build log |
||||||
|
*.plg |
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file |
||||||
|
*.opt |
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) |
||||||
|
*.vbw |
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output |
||||||
|
**/*.HTMLClient/GeneratedArtifacts |
||||||
|
**/*.DesktopClient/GeneratedArtifacts |
||||||
|
**/*.DesktopClient/ModelManifest.xml |
||||||
|
**/*.Server/GeneratedArtifacts |
||||||
|
**/*.Server/ModelManifest.xml |
||||||
|
_Pvt_Extensions |
||||||
|
|
||||||
|
# Paket dependency manager |
||||||
|
.paket/paket.exe |
||||||
|
paket-files/ |
||||||
|
|
||||||
|
# FAKE - F# Make |
||||||
|
.fake/ |
||||||
|
|
||||||
|
# CodeRush personal settings |
||||||
|
.cr/personal |
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS) |
||||||
|
__pycache__/ |
||||||
|
*.pyc |
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it |
||||||
|
# tools/** |
||||||
|
# !tools/packages.config |
||||||
|
|
||||||
|
# Tabs Studio |
||||||
|
*.tss |
||||||
|
|
||||||
|
# Telerik's JustMock configuration file |
||||||
|
*.jmconfig |
||||||
|
|
||||||
|
# BizTalk build output |
||||||
|
*.btp.cs |
||||||
|
*.btm.cs |
||||||
|
*.odx.cs |
||||||
|
*.xsd.cs |
||||||
|
|
||||||
|
# OpenCover UI analysis results |
||||||
|
OpenCover/ |
||||||
|
|
||||||
|
# Azure Stream Analytics local run output |
||||||
|
ASALocalRun/ |
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log |
||||||
|
*.binlog |
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file |
||||||
|
*.nvuser |
||||||
|
|
||||||
|
# MFractors (Xamarin productivity tool) working folder |
||||||
|
.mfractor/ |
||||||
|
|
||||||
|
# Local History for Visual Studio |
||||||
|
.localhistory/ |
||||||
|
|
||||||
|
# BeatPulse healthcheck temp database |
||||||
|
healthchecksdb |
||||||
|
|
||||||
|
# Backup folder for Package Reference Convert tool in Visual Studio 2017 |
||||||
|
MigrationBackup/ |
||||||
|
|
||||||
|
# Ionide (cross platform F# VS Code tools) working folder |
||||||
|
.ionide/ |
||||||
|
|
||||||
|
# Fody - auto-generated XML schema |
||||||
|
FodyWeavers.xsd |
||||||
|
|
||||||
|
# VS Code files for those working on multiple tools |
||||||
|
.vscode/* |
||||||
|
!.vscode/settings.json |
||||||
|
!.vscode/tasks.json |
||||||
|
!.vscode/launch.json |
||||||
|
!.vscode/extensions.json |
||||||
|
*.code-workspace |
||||||
|
|
||||||
|
# Local History for Visual Studio Code |
||||||
|
.history/ |
||||||
|
|
||||||
|
# Windows Installer files from build outputs |
||||||
|
*.cab |
||||||
|
*.msi |
||||||
|
*.msix |
||||||
|
*.msm |
||||||
|
*.msp |
||||||
|
|
||||||
|
# JetBrains Rider |
||||||
|
.idea/ |
||||||
|
*.sln.iml |
||||||
|
|
||||||
|
# ---> VisualStudioCode |
||||||
.vscode/* |
.vscode/* |
||||||
!.vscode/settings.json |
!.vscode/settings.json |
||||||
!.vscode/tasks.json |
!.vscode/tasks.json |
||||||
!.vscode/launch.json |
!.vscode/launch.json |
||||||
!.vscode/extensions.json |
!.vscode/extensions.json |
||||||
.history/* |
*.code-workspace |
||||||
|
|
||||||
# misc |
# Local History for Visual Studio Code |
||||||
/.sass-cache |
.history/ |
||||||
/connect.lock |
|
||||||
/coverage |
|
||||||
/libpeerconnection.log |
|
||||||
npm-debug.log |
|
||||||
yarn-error.log |
|
||||||
testem.log |
|
||||||
/typings |
|
||||||
|
|
||||||
# System Files |
|
||||||
.DS_Store |
|
||||||
Thumbs.db |
|
||||||
|
@ -1,14 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<module type="WEB_MODULE" version="4"> |
|
||||||
<component name="NewModuleRootManager" inherit-compiler-output="true"> |
|
||||||
<exclude-output /> |
|
||||||
<content url="file://$MODULE_DIR$"> |
|
||||||
<excludeFolder url="file://$MODULE_DIR$/dist" /> |
|
||||||
<excludeFolder url="file://$MODULE_DIR$/tmp" /> |
|
||||||
</content> |
|
||||||
<orderEntry type="sourceFolder" forTests="false" /> |
|
||||||
<orderEntry type="library" name="jquery-3.2.1.slim" level="application" /> |
|
||||||
<orderEntry type="library" name="popper.js" level="application" /> |
|
||||||
<orderEntry type="library" name="bootstrap" level="application" /> |
|
||||||
</component> |
|
||||||
</module> |
|
@ -1,20 +0,0 @@ |
|||||||
# Stage 1 : Building the application |
|
||||||
FROM node:16-alpine3.15 as build-step |
|
||||||
|
|
||||||
RUN mkdir -p /app |
|
||||||
|
|
||||||
WORKDIR /app |
|
||||||
|
|
||||||
COPY . /app |
|
||||||
|
|
||||||
RUN npm install |
|
||||||
|
|
||||||
RUN npm run build --prod |
|
||||||
|
|
||||||
# Stage 2 : Deploying the application on Nginx |
|
||||||
FROM nginx:1.23.1-alpine |
|
||||||
|
|
||||||
RUN rm -rf /usr/share/nginx/html/* && rm -rf /etc/nginx/nginx.conf |
|
||||||
COPY ./nginx.conf /etc/nginx/nginx.conf |
|
||||||
COPY --from=build-step /app/dist/Collaborateur-Epa-Front /usr/share/nginx/html |
|
||||||
|
|
@ -1,133 +0,0 @@ |
|||||||
{ |
|
||||||
"$schema": "./node_modules/@angular/cli/lib/config/schema.json", |
|
||||||
"cli": { |
|
||||||
"analytics": false |
|
||||||
}, |
|
||||||
"version": 1, |
|
||||||
"newProjectRoot": "projects", |
|
||||||
"projects": { |
|
||||||
"Collaborateur-Epa-Front": { |
|
||||||
"projectType": "application", |
|
||||||
"schematics": { |
|
||||||
"@schematics/angular:application": { |
|
||||||
"strict": true |
|
||||||
}, |
|
||||||
"@schematics/angular:component": { |
|
||||||
"style": "scss", |
|
||||||
"skipTests": true |
|
||||||
}, |
|
||||||
"@schematics/angular:class": { |
|
||||||
"skipTests": true |
|
||||||
}, |
|
||||||
"@schematics/angular:directive": { |
|
||||||
"skipTests": true |
|
||||||
}, |
|
||||||
"@schematics/angular:pipe": { |
|
||||||
"skipTests": true |
|
||||||
}, |
|
||||||
"@schematics/angular:service": { |
|
||||||
"skipTests": true |
|
||||||
} |
|
||||||
}, |
|
||||||
"root": "", |
|
||||||
"sourceRoot": "src", |
|
||||||
"prefix": "app", |
|
||||||
"architect": { |
|
||||||
"build": { |
|
||||||
"builder": "@angular-devkit/build-angular:browser", |
|
||||||
"options": { |
|
||||||
"outputPath": "dist/Collaborateur-Epa-Front", |
|
||||||
"index": "src/index.html", |
|
||||||
"main": "src/main.ts", |
|
||||||
"polyfills": "src/polyfills.ts", |
|
||||||
"tsConfig": "tsconfig.app.json", |
|
||||||
"assets": [ |
|
||||||
"src/favicon.ico", |
|
||||||
"src/assets" |
|
||||||
], |
|
||||||
"styles": [ |
|
||||||
"./node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css", |
|
||||||
"node_modules/ngx-toastr/toastr.css", |
|
||||||
"node_modules/bootstrap/dist/css/bootstrap.min.css", |
|
||||||
"src/styles.scss" |
|
||||||
|
|
||||||
], |
|
||||||
"scripts": [ |
|
||||||
"./node_modules/jquery/dist/jquery.min.js", |
|
||||||
"./node_modules/bootstrap/dist/js/bootstrap.min.js" |
|
||||||
] |
|
||||||
}, |
|
||||||
"configurations": { |
|
||||||
"production": { |
|
||||||
"budgets": [ |
|
||||||
{ |
|
||||||
"type": "initial", |
|
||||||
"maximumWarning": "500kb", |
|
||||||
"maximumError": "1mb" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"type": "anyComponentStyle", |
|
||||||
"maximumWarning": "2kb", |
|
||||||
"maximumError": "4kb" |
|
||||||
} |
|
||||||
], |
|
||||||
"fileReplacements": [ |
|
||||||
{ |
|
||||||
"replace": "src/environments/environment.ts", |
|
||||||
"with": "src/environments/environment.prod.ts" |
|
||||||
} |
|
||||||
], |
|
||||||
"outputHashing": "all" |
|
||||||
}, |
|
||||||
"development": { |
|
||||||
"buildOptimizer": false, |
|
||||||
"optimization": false, |
|
||||||
"vendorChunk": true, |
|
||||||
"extractLicenses": false, |
|
||||||
"sourceMap": true, |
|
||||||
"namedChunks": true |
|
||||||
} |
|
||||||
}, |
|
||||||
"defaultConfiguration": "production" |
|
||||||
}, |
|
||||||
"serve": { |
|
||||||
"builder": "@angular-devkit/build-angular:dev-server", |
|
||||||
"configurations": { |
|
||||||
"production": { |
|
||||||
"browserTarget": "Collaborateur-Epa-Front:build:production" |
|
||||||
}, |
|
||||||
"development": { |
|
||||||
"browserTarget": "Collaborateur-Epa-Front:build:development" |
|
||||||
} |
|
||||||
}, |
|
||||||
"defaultConfiguration": "development" |
|
||||||
}, |
|
||||||
"extract-i18n": { |
|
||||||
"builder": "@angular-devkit/build-angular:extract-i18n", |
|
||||||
"options": { |
|
||||||
"browserTarget": "Collaborateur-Epa-Front:build" |
|
||||||
} |
|
||||||
}, |
|
||||||
"test": { |
|
||||||
"builder": "@angular-devkit/build-angular:karma", |
|
||||||
"options": { |
|
||||||
"main": "src/test.ts", |
|
||||||
"polyfills": "src/polyfills.ts", |
|
||||||
"tsConfig": "tsconfig.spec.json", |
|
||||||
"karmaConfig": "karma.conf.js", |
|
||||||
"assets": [ |
|
||||||
"src/favicon.ico", |
|
||||||
"src/assets" |
|
||||||
], |
|
||||||
"styles": [ |
|
||||||
"./node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css", |
|
||||||
"src/styles.css" |
|
||||||
], |
|
||||||
"scripts": [] |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
}, |
|
||||||
"defaultProject": "Collaborateur-Epa-Front" |
|
||||||
} |
|
@ -1,42 +0,0 @@ |
|||||||
// Karma configuration file, see link for more information
|
|
||||||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|
||||||
|
|
||||||
module.exports = function (config) { |
|
||||||
config.set({ |
|
||||||
basePath: '', |
|
||||||
frameworks: ['jasmine', '@angular-devkit/build-angular'], |
|
||||||
plugins: [ |
|
||||||
require('karma-chrome-launcher'), |
|
||||||
require('karma-coverage'), |
|
||||||
require('@angular-devkit/build-angular/plugins/karma') |
|
||||||
], |
|
||||||
client: { |
|
||||||
jasmine: { |
|
||||||
// you can add configuration options for Jasmine here
|
|
||||||
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
|
||||||
// for example, you can disable the random execution with `random: false`
|
|
||||||
// or set a specific seed with `seed: 4321`
|
|
||||||
}, |
|
||||||
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|
||||||
}, |
|
||||||
jasmineHtmlReporter: { |
|
||||||
suppressAll: true // removes the duplicated traces
|
|
||||||
}, |
|
||||||
coverageReporter: { |
|
||||||
dir: require('path').join(__dirname, './coverage/Collaborateur-Epa-Front'), |
|
||||||
subdir: '.', |
|
||||||
reporters: [ |
|
||||||
{ type: 'html' }, |
|
||||||
{ type: 'text-summary' } |
|
||||||
] |
|
||||||
}, |
|
||||||
reporters: ['progress', 'kjhtml'], |
|
||||||
port: 9876, |
|
||||||
colors: true, |
|
||||||
logLevel: config.LOG_INFO, |
|
||||||
autoWatch: true, |
|
||||||
browsers: ['Chrome'], |
|
||||||
singleRun: false, |
|
||||||
restartOnFileChange: true |
|
||||||
}); |
|
||||||
}; |
|
@ -1,25 +0,0 @@ |
|||||||
worker_processes 1; |
|
||||||
|
|
||||||
events { |
|
||||||
worker_connections 1024; |
|
||||||
} |
|
||||||
|
|
||||||
http { |
|
||||||
server { |
|
||||||
listen 80; |
|
||||||
server_name localhost; |
|
||||||
|
|
||||||
root /usr/share/nginx/html; |
|
||||||
index index.html index.htm; |
|
||||||
include /etc/nginx/mime.types; |
|
||||||
|
|
||||||
gzip on; |
|
||||||
gzip_min_length 1000; |
|
||||||
gzip_proxied expired no-cache no-store private auth; |
|
||||||
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript; |
|
||||||
|
|
||||||
location / { |
|
||||||
try_files $uri $uri/ /index.html; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
File diff suppressed because it is too large
Load Diff
@ -1,43 +0,0 @@ |
|||||||
{ |
|
||||||
"name": "collaborateur-epa-front", |
|
||||||
"version": "0.0.0", |
|
||||||
"scripts": { |
|
||||||
"ng": "ng", |
|
||||||
"start": "ng serve", |
|
||||||
"build": "ng build", |
|
||||||
"watch": "ng build --watch --configuration development", |
|
||||||
"test": "ng test" |
|
||||||
}, |
|
||||||
"private": true, |
|
||||||
"dependencies": { |
|
||||||
"@angular/animations": "~12.0.0", |
|
||||||
"@angular/cdk": "^12.2.13", |
|
||||||
"@angular/common": "~12.0.0", |
|
||||||
"@angular/compiler": "~12.0.0", |
|
||||||
"@angular/core": "~12.0.0", |
|
||||||
"@angular/forms": "~12.0.0", |
|
||||||
"@angular/localize": "~12.0.0", |
|
||||||
"@angular/material": "^12.2.13", |
|
||||||
"@angular/platform-browser": "~12.0.0", |
|
||||||
"@angular/platform-browser-dynamic": "~12.0.0", |
|
||||||
"@angular/router": "~12.0.0", |
|
||||||
"@material/card": "^14.0.0", |
|
||||||
"@ng-bootstrap/ng-bootstrap": "^10.0.0", |
|
||||||
"bootstrap": "^5.1.3", |
|
||||||
"jquery": "^3.6.0", |
|
||||||
"ngx-toastr": "^14.3.0", |
|
||||||
"rxjs": "~6.6.0", |
|
||||||
"tslib": "^2.1.0", |
|
||||||
"zone.js": "~0.11.4" |
|
||||||
}, |
|
||||||
"devDependencies": { |
|
||||||
"@angular-devkit/build-angular": "~12.0.0", |
|
||||||
"@angular/cli": "~12.0.0", |
|
||||||
"@angular/compiler-cli": "~12.0.0", |
|
||||||
"@types/node": "^12.11.1", |
|
||||||
"karma": "~6.3.0", |
|
||||||
"karma-chrome-launcher": "~3.1.0", |
|
||||||
"karma-coverage": "~2.0.3", |
|
||||||
"typescript": "~4.2.3" |
|
||||||
} |
|
||||||
} |
|
@ -1,46 +0,0 @@ |
|||||||
import {NgModule} from '@angular/core'; |
|
||||||
import {RouterModule, Routes} from "@angular/router"; |
|
||||||
import {CollaborateurComponent} from "./components/collaborateur/collaborateur.component"; |
|
||||||
import {CollaborateurEditComponent} from "./components/collaborateur/collaborateur-edit/collaborateur-edit.component"; |
|
||||||
import {HomeComponent} from "./components/home/home.component"; |
|
||||||
import {AgenceComponent} from "./components/agence/agence.component"; |
|
||||||
import {AgenceEditComponent} from "./components/agence/agence-edit/agence-edit.component"; |
|
||||||
import {BusinessunitComponent} from "./components/businessunit/businessunit.component"; |
|
||||||
import {BusinessunitEditComponent} from "./components/businessunit/businessunit-edit/businessunit-edit.component"; |
|
||||||
import {PeriodeEssaiComponent} from "./components/periode-essai/periode-essai.component"; |
|
||||||
import {PeriodeEssaiEditComponent} from "./components/periode-essai/periode-essai-edit/periode-essai-edit.component"; |
|
||||||
import {CollaborateurAddComponent} from "./components/collaborateur/collaborateur-add/collaborateur-add.component"; |
|
||||||
import {ReferencementComponent} from "./components/referencement/referencement.component"; |
|
||||||
import {ReferencementAddComponent} from "./components/referencement/referencement-add/referencement-add.component"; |
|
||||||
import {ReferencementEditComponent} from "./components/referencement/referencement-edit/referencement-edit.component"; |
|
||||||
import {PeriodeEssaiAddComponent} from "./components/periode-essai/periode-essai-add/periode-essai-add.component"; |
|
||||||
import {AgenceAddComponent} from "./components/agence/agence-add/agence-add.component"; |
|
||||||
import {BusinessunitAddComponent} from "./components/businessunit/businessunit-add/businessunit-add.component"; |
|
||||||
|
|
||||||
const routes: Routes = [ |
|
||||||
{path: '', redirectTo: '/home', pathMatch: 'full'}, |
|
||||||
{path: 'home', component: HomeComponent, data: {title: 'Services Collaborateurs'}}, |
|
||||||
{path: 'collaborateurs', component: CollaborateurComponent, data: {title: 'Collaborateurs'}}, |
|
||||||
{path: 'collaborateurs/add', component: CollaborateurAddComponent, data: {title: 'Collaborateurs'}}, |
|
||||||
{path: 'collaborateurs/:id', component: CollaborateurEditComponent, data: {title: 'Collaborateurs'}}, |
|
||||||
{path: 'referencements', component: ReferencementComponent, data: {title: 'Referencements'}}, |
|
||||||
{path: 'referencements/add', component: ReferencementAddComponent, data: {title: 'Referencements'}}, |
|
||||||
{path: 'referencements/:id', component: ReferencementEditComponent, data: {title: 'Referencements'}}, |
|
||||||
{path: 'agences', component: AgenceComponent, data: {title: 'Agences'}}, |
|
||||||
{path: 'agences/add', component: AgenceAddComponent, data: {title: 'Agences'}}, |
|
||||||
{path: 'agences/:id', component: AgenceEditComponent, data: {title: 'Agences'}}, |
|
||||||
{path: 'businessunits', component: BusinessunitComponent, data: {title: 'BusinessUnits'}}, |
|
||||||
{path: 'businessunits/add', component: BusinessunitAddComponent, data: {title: 'BusinessUnits'}}, |
|
||||||
{path: 'businessunits/:id', component: BusinessunitEditComponent, data: {title: 'BusinessUnits'}}, |
|
||||||
{path: 'periodeessais', component: PeriodeEssaiComponent, data: {title: 'Periodes d\'Essai'}}, |
|
||||||
{path: 'periodeessais/add', component: PeriodeEssaiAddComponent, data: {title: 'Periodes d\'Essai'}}, |
|
||||||
{path: 'periodeessais/:id', component: PeriodeEssaiEditComponent, data: {title: 'Periodes d\'Essai'}}, |
|
||||||
]; |
|
||||||
|
|
||||||
@NgModule({ |
|
||||||
imports: [RouterModule.forRoot(routes)], |
|
||||||
exports: [RouterModule] |
|
||||||
}) |
|
||||||
|
|
||||||
export class AppRoutingModule { |
|
||||||
} |
|
@ -1,62 +0,0 @@ |
|||||||
<div class="toolbar" role="banner"> |
|
||||||
<nav> |
|
||||||
<button routerLink="/home">Home</button> |
|
||||||
</nav> |
|
||||||
<div #dropBusinessUnit="ngbDropdown" class="d-inline-block" ngbDropdown> |
|
||||||
<button (focus)="dropBusinessUnit.open()" id="dropdownBusinessUnit" ngbDropdownAnchor type="button"> |
|
||||||
Business Units |
|
||||||
</button> |
|
||||||
<div aria-labelledby="dropdownBusinessUnit" ngbDropdownMenu> |
|
||||||
<button ngbDropdownItem routerLink="/businessunits">Liste</button> |
|
||||||
<button ngbDropdownItem routerLink="/businessunits/add">Ajouter</button> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div #dropAgence="ngbDropdown" class="d-inline-block" ngbDropdown> |
|
||||||
<button (focus)="dropAgence.open()" id="dropdownAgence" ngbDropdownAnchor type="button"> |
|
||||||
Agences |
|
||||||
</button> |
|
||||||
<div aria-labelledby="dropdownAgence" ngbDropdownMenu> |
|
||||||
<button ngbDropdownItem routerLink="/agences">Liste</button> |
|
||||||
<button ngbDropdownItem routerLink="/agences/add">Ajouter</button> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div #dropCollaborateur="ngbDropdown" class="d-inline-block" ngbDropdown> |
|
||||||
<button (focus)="dropCollaborateur.open()" id="dropdownCollaborateur" ngbDropdownAnchor type="button"> |
|
||||||
Collaborateurs |
|
||||||
</button> |
|
||||||
<div aria-labelledby="dropdownCollaborateur" ngbDropdownMenu> |
|
||||||
<button ngbDropdownItem routerLink="/collaborateurs">Liste</button> |
|
||||||
<button ngbDropdownItem routerLink="/collaborateurs/add">Ajouter</button> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div #dropReferencement="ngbDropdown" class="d-inline-block" ngbDropdown> |
|
||||||
<button (focus)="dropReferencement.open()" id="dropdownReferencement" ngbDropdownAnchor type="button"> |
|
||||||
Référencements |
|
||||||
</button> |
|
||||||
<div aria-labelledby="dropdownReferencement" ngbDropdownMenu> |
|
||||||
<button ngbDropdownItem routerLink="/referencements">Liste</button> |
|
||||||
<button ngbDropdownItem routerLink="/referencements/add">Ajouter</button> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div #dropPeriodeEssai="ngbDropdown" class="d-inline-block" ngbDropdown> |
|
||||||
<button (focus)="dropPeriodeEssai.open()" id="dropdownPeriodeEssai" ngbDropdownAnchor type="button">Périodes |
|
||||||
d'essai |
|
||||||
</button> |
|
||||||
<div aria-labelledby="dropdownPeriodeEssai" ngbDropdownMenu> |
|
||||||
<button ngbDropdownItem routerLink="/periodeessais">Liste</button> |
|
||||||
<button ngbDropdownItem routerLink="/periodeessais/add">Ajouter</button> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="container" role="main"> |
|
||||||
|
|
||||||
<router-outlet></router-outlet> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
@ -1,58 +0,0 @@ |
|||||||
:host { |
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; |
|
||||||
font-size: 14px; |
|
||||||
color: #333; |
|
||||||
box-sizing: border-box; |
|
||||||
-webkit-font-smoothing: antialiased; |
|
||||||
-moz-osx-font-smoothing: grayscale; |
|
||||||
} |
|
||||||
|
|
||||||
h1, |
|
||||||
h2, |
|
||||||
h3, |
|
||||||
h4, |
|
||||||
h5, |
|
||||||
h6 { |
|
||||||
margin: 8px 0; |
|
||||||
} |
|
||||||
|
|
||||||
p { |
|
||||||
margin: 0; |
|
||||||
} |
|
||||||
|
|
||||||
.toolbar { |
|
||||||
top: 0; |
|
||||||
left: 0; |
|
||||||
right: 0; |
|
||||||
height: 60px; |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
background-color: #183650; |
|
||||||
color: white; |
|
||||||
font-weight: 600; |
|
||||||
} |
|
||||||
|
|
||||||
.terminal pre { |
|
||||||
font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace; |
|
||||||
color: white; |
|
||||||
padding: 0 1rem 1rem; |
|
||||||
margin: 0; |
|
||||||
} |
|
||||||
|
|
||||||
nav a { |
|
||||||
padding: 5px; |
|
||||||
text-decoration: none; |
|
||||||
margin: 5px; |
|
||||||
display: inline-block; |
|
||||||
background-color: #E77620; |
|
||||||
color: white; |
|
||||||
border-radius: 4px; |
|
||||||
} |
|
||||||
|
|
||||||
nav a:hover { |
|
||||||
background-color: #42545C; |
|
||||||
} |
|
||||||
|
|
||||||
.dropdown-menu { |
|
||||||
min-width: fit-content; |
|
||||||
} |
|
@ -1,40 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Title} from "@angular/platform-browser"; |
|
||||||
import {ActivatedRoute, NavigationEnd, Router} from '@angular/router'; |
|
||||||
import {filter} from 'rxjs/operators'; |
|
||||||
|
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-root', |
|
||||||
templateUrl: './app.component.html', |
|
||||||
styleUrls: ['./app.component.scss'] |
|
||||||
}) |
|
||||||
export class AppComponent implements OnInit { |
|
||||||
|
|
||||||
constructor(private router: Router, |
|
||||||
private activatedRoute: ActivatedRoute, |
|
||||||
private titleService: Title) { |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
ngOnInit() { |
|
||||||
this.router.events.pipe( |
|
||||||
filter(event => event instanceof NavigationEnd), |
|
||||||
).subscribe(() => { |
|
||||||
const rt = this.getChild(this.activatedRoute); |
|
||||||
rt.data.subscribe(data => { |
|
||||||
this.titleService.setTitle(data.title) |
|
||||||
}); |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
getChild(activatedRoute: ActivatedRoute): ActivatedRoute { |
|
||||||
if (activatedRoute.firstChild) { |
|
||||||
return this.getChild(activatedRoute.firstChild); |
|
||||||
} else { |
|
||||||
return activatedRoute; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,74 +0,0 @@ |
|||||||
import {NgModule} from '@angular/core'; |
|
||||||
import {BrowserModule, Title} from '@angular/platform-browser'; |
|
||||||
import {HttpClientModule} from "@angular/common/http"; |
|
||||||
import {AppComponent} from './app.component'; |
|
||||||
import {NgbModule} from '@ng-bootstrap/ng-bootstrap'; |
|
||||||
import {RouterModule} from "@angular/router"; |
|
||||||
import {CollaborateurComponent} from './components/collaborateur/collaborateur.component'; |
|
||||||
import {CollaborateurEditComponent} from './components/collaborateur/collaborateur-edit/collaborateur-edit.component'; |
|
||||||
import {FormsModule, ReactiveFormsModule} from "@angular/forms"; |
|
||||||
import {AppRoutingModule} from './app-routing.module'; |
|
||||||
import {HomeComponent} from './components/home/home.component'; |
|
||||||
import {AgenceComponent} from './components/agence/agence.component'; |
|
||||||
import {AgenceEditComponent} from './components/agence/agence-edit/agence-edit.component'; |
|
||||||
import {BusinessunitComponent} from './components/businessunit/businessunit.component'; |
|
||||||
import {BusinessunitEditComponent} from './components/businessunit/businessunit-edit/businessunit-edit.component'; |
|
||||||
import {PeriodeEssaiComponent} from './components/periode-essai/periode-essai.component'; |
|
||||||
import {PeriodeEssaiEditComponent} from './components/periode-essai/periode-essai-edit/periode-essai-edit.component'; |
|
||||||
import {CollaborateurAddComponent} from './components/collaborateur/collaborateur-add/collaborateur-add.component'; |
|
||||||
import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; |
|
||||||
import {ToastrModule} from 'ngx-toastr'; |
|
||||||
import {ReferencementComponent} from './components/referencement/referencement.component'; |
|
||||||
import {ReferencementAddComponent} from './components/referencement/referencement-add/referencement-add.component'; |
|
||||||
import {ReferencementEditComponent} from './components/referencement/referencement-edit/referencement-edit.component'; |
|
||||||
import {PeriodeEssaiAddComponent} from './components/periode-essai/periode-essai-add/periode-essai-add.component'; |
|
||||||
import {BusinessunitAddComponent} from './components/businessunit/businessunit-add/businessunit-add.component'; |
|
||||||
import {AgenceAddComponent} from './components/agence/agence-add/agence-add.component'; |
|
||||||
import {MatCardModule} from '@angular/material/card'; |
|
||||||
import {MatProgressBarModule} from "@angular/material/progress-bar"; |
|
||||||
import {MatDividerModule} from "@angular/material/divider"; |
|
||||||
import {MatButtonModule} from "@angular/material/button"; |
|
||||||
import {MatIconModule} from "@angular/material/icon"; |
|
||||||
|
|
||||||
@NgModule({ |
|
||||||
declarations: [ |
|
||||||
AppComponent, |
|
||||||
CollaborateurComponent, |
|
||||||
CollaborateurEditComponent, |
|
||||||
HomeComponent, |
|
||||||
AgenceComponent, |
|
||||||
AgenceEditComponent, |
|
||||||
BusinessunitComponent, |
|
||||||
BusinessunitEditComponent, |
|
||||||
PeriodeEssaiComponent, |
|
||||||
PeriodeEssaiEditComponent, |
|
||||||
CollaborateurAddComponent, |
|
||||||
ReferencementComponent, |
|
||||||
ReferencementAddComponent, |
|
||||||
ReferencementEditComponent, |
|
||||||
PeriodeEssaiAddComponent, |
|
||||||
BusinessunitAddComponent, |
|
||||||
AgenceAddComponent, |
|
||||||
|
|
||||||
], |
|
||||||
imports: [ |
|
||||||
BrowserModule, |
|
||||||
HttpClientModule, |
|
||||||
NgbModule, |
|
||||||
RouterModule, |
|
||||||
FormsModule, |
|
||||||
AppRoutingModule, |
|
||||||
MatCardModule, |
|
||||||
ReactiveFormsModule, |
|
||||||
BrowserAnimationsModule, |
|
||||||
ToastrModule.forRoot({preventDuplicates: true}), |
|
||||||
MatProgressBarModule, |
|
||||||
MatDividerModule, |
|
||||||
MatButtonModule, |
|
||||||
MatIconModule, |
|
||||||
], |
|
||||||
providers: [Title], |
|
||||||
bootstrap: [AppComponent] |
|
||||||
}) |
|
||||||
export class AppModule { |
|
||||||
} |
|
@ -1,33 +0,0 @@ |
|||||||
<h3>Ajouter une agence : </h3> |
|
||||||
|
|
||||||
<form (ngSubmit)="onSubmit()" [formGroup]="registerForm"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3 mb-2"> |
|
||||||
<label class="form-label">Nom</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.name.errors }" class="form-control" formControlName="name"> |
|
||||||
<div *ngIf="submitted && form.name.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.name.errors.required">Le nom d'une agence est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-md-6"> |
|
||||||
<label class="form-label">Business Unit</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.businessUnitId.errors }" class="form-select" |
|
||||||
formControlName="businessUnitId" |
|
||||||
id="businessUnit-select"> |
|
||||||
<option disabled selected value="">Choisissez la business unit de cette agence</option> |
|
||||||
<option *ngFor="let businessUnit of businessUnits" [ngValue]="businessUnit.id">{{businessUnit.name}}</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.businessUnitId.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.businessUnitId.errors.required">Vous devez choisir la business unit à laquelle appartient |
|
||||||
l'agence |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
|
|
||||||
<div> |
|
||||||
<button type="submit">Créer l'agence</button> |
|
||||||
<button type="reset">Effacer</button> |
|
||||||
</div> |
|
||||||
</form> |
|
@ -1,77 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Agence} from "../../../interfaces/agence"; |
|
||||||
import {Businessunit} from "../../../interfaces/businessunit"; |
|
||||||
import {FormBuilder, FormGroup, Validators} from "@angular/forms"; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {AgenceService} from "../../../services/agence.service"; |
|
||||||
import {BusinessunitService} from "../../../services/businessunit.service"; |
|
||||||
import {ToastrService} from "ngx-toastr"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-agence-add', |
|
||||||
templateUrl: './agence-add.component.html', |
|
||||||
styleUrls: ['./agence-add.component.scss'] |
|
||||||
}) |
|
||||||
export class AgenceAddComponent implements OnInit { |
|
||||||
|
|
||||||
agence = {} as Agence; |
|
||||||
businessUnits: Businessunit[] = []; |
|
||||||
registerForm!: FormGroup; |
|
||||||
submitted = false; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
private agenceService: AgenceService, |
|
||||||
private businessUnitService: BusinessunitService, |
|
||||||
private formBuilder: FormBuilder, |
|
||||||
private toastr: ToastrService |
|
||||||
) { |
|
||||||
} |
|
||||||
|
|
||||||
get form() { |
|
||||||
return this.registerForm.controls; |
|
||||||
} |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.initBusinessUnits(); |
|
||||||
this.registerForm = this.formBuilder.group({ |
|
||||||
name: ['', Validators.required], |
|
||||||
businessUnitId: ['', Validators.required] |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
initBusinessUnits() { |
|
||||||
this.businessUnitService.getBusinessunits() |
|
||||||
.subscribe(businessunits => this.businessUnits = businessunits); |
|
||||||
} |
|
||||||
|
|
||||||
onSubmit() { |
|
||||||
this.submitted = true; |
|
||||||
|
|
||||||
if (this.registerForm.invalid) { |
|
||||||
return; |
|
||||||
} |
|
||||||
this.agence.name = this.registerForm.value.name |
|
||||||
this.agence.businessUnitId = this.registerForm.value.businessUnitId |
|
||||||
this.agenceService.addAgence(this.agence) |
|
||||||
.subscribe(() => { |
|
||||||
this.showSuccess(); |
|
||||||
}, |
|
||||||
() => { |
|
||||||
this.showError() |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
onReset() { |
|
||||||
this.submitted = false; |
|
||||||
this.registerForm.reset(); |
|
||||||
} |
|
||||||
|
|
||||||
showSuccess() { |
|
||||||
this.toastr.success('Création réussie', 'Agence'); |
|
||||||
} |
|
||||||
|
|
||||||
showError() { |
|
||||||
this.toastr.error('Création échouée', 'Agence'); |
|
||||||
} |
|
||||||
} |
|
@ -1,41 +0,0 @@ |
|||||||
<div *ngIf="agence"> |
|
||||||
|
|
||||||
<h2>{{agence.name | uppercase}} </h2> |
|
||||||
|
|
||||||
<form |
|
||||||
(ngSubmit)="onSubmit()" |
|
||||||
[formGroup]="registerForm"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3 mb-2"> |
|
||||||
<label class="form-label">Nom</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.name.errors }" [value]="agence.name" class="form-control" |
|
||||||
formControlName="name"> |
|
||||||
<div *ngIf="submitted && form.name.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.name.errors.required">Le nom d'une agence est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-md-6"> |
|
||||||
<label class="form-label">Business Unit</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.businessUnitId.errors }" class="form-select" |
|
||||||
formControlName="businessUnitId" |
|
||||||
id="businessUnit-select"> |
|
||||||
<option disabled selected value="">Choisissez la business unit de cette agence</option> |
|
||||||
<option *ngFor="let businessUnit of businessUnits" [ngValue]="businessUnit.id">{{businessUnit.name}}</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.businessUnitId.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.businessUnitId.errors.required">Vous devez choisir la business unit à laquelle appartient |
|
||||||
l'agence |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div> |
|
||||||
<button type="submit">Sauvegarder les changements</button> |
|
||||||
<button type="reset">Effacer</button> |
|
||||||
<button (click)="goBack()" type="button">Retour</button> |
|
||||||
</div> |
|
||||||
</form> |
|
||||||
|
|
||||||
|
|
||||||
</div> |
|
@ -1,93 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Agence} from "../../../interfaces/agence"; |
|
||||||
import {ActivatedRoute} from "@angular/router"; |
|
||||||
import {AgenceService} from "../../../services/agence.service"; |
|
||||||
import {Location} from "@angular/common"; |
|
||||||
import {FormBuilder, FormGroup, Validators} from '@angular/forms'; |
|
||||||
import {Businessunit} from "../../../interfaces/businessunit"; |
|
||||||
import {BusinessunitService} from "../../../services/businessunit.service"; |
|
||||||
import {Observable} from "rxjs"; |
|
||||||
import {take, tap} from "rxjs/operators"; |
|
||||||
import {ToastrService} from "ngx-toastr"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-agence-edit', |
|
||||||
templateUrl: './agence-edit.component.html', |
|
||||||
styleUrls: ['./agence-edit.component.scss'] |
|
||||||
}) |
|
||||||
export class AgenceEditComponent implements OnInit { |
|
||||||
businessUnits: Businessunit[] = []; |
|
||||||
agence = {} as Agence; |
|
||||||
|
|
||||||
agenceObservable!: Observable<Agence>; |
|
||||||
id: number; |
|
||||||
|
|
||||||
registerForm!: FormGroup; |
|
||||||
submitted = false; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private route: ActivatedRoute, |
|
||||||
private agenceService: AgenceService, |
|
||||||
private businessUnitService: BusinessunitService, |
|
||||||
private location: Location, |
|
||||||
private formBuilder: FormBuilder, |
|
||||||
private toastr: ToastrService |
|
||||||
) { |
|
||||||
this.id = Number(this.route.snapshot.paramMap.get('id')) |
|
||||||
} |
|
||||||
|
|
||||||
get form() { |
|
||||||
return this.registerForm.controls; |
|
||||||
} |
|
||||||
|
|
||||||
async ngOnInit() { |
|
||||||
this.initBusinessUnits() |
|
||||||
this.registerForm = this.formBuilder.group({ |
|
||||||
name: ['', Validators.required], |
|
||||||
businessUnitId: ['', Validators.required] |
|
||||||
}); |
|
||||||
this.agenceObservable = this.agenceService.getAgence(this.id).pipe(tap(agence => this.registerForm.patchValue(agence))) |
|
||||||
this.agence = await this.agenceObservable.pipe(take(1)).toPromise() |
|
||||||
} |
|
||||||
|
|
||||||
initBusinessUnits() { |
|
||||||
this.businessUnitService.getBusinessunits() |
|
||||||
.subscribe(businessunits => this.businessUnits = businessunits); |
|
||||||
} |
|
||||||
|
|
||||||
goBack(): void { |
|
||||||
this.location.back(); |
|
||||||
} |
|
||||||
|
|
||||||
onSubmit(): void { |
|
||||||
this.submitted = true |
|
||||||
if (this.registerForm.invalid) { |
|
||||||
return; |
|
||||||
} |
|
||||||
if (this.agence) { |
|
||||||
this.agence.name = this.registerForm.value.name |
|
||||||
this.agence.businessUnitId = this.registerForm.value.businessUnitId |
|
||||||
this.agenceService.updateAgence(this.agence) |
|
||||||
.subscribe(() => { |
|
||||||
this.showSuccess(); |
|
||||||
}, |
|
||||||
() => { |
|
||||||
this.showError() |
|
||||||
}); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
onReset() { |
|
||||||
this.submitted = false; |
|
||||||
this.registerForm.reset(); |
|
||||||
} |
|
||||||
|
|
||||||
showSuccess() { |
|
||||||
this.toastr.success('Modification réussie', 'Agence'); |
|
||||||
} |
|
||||||
|
|
||||||
showError() { |
|
||||||
this.toastr.error('Modification échouée', 'Agence'); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,28 +0,0 @@ |
|||||||
<div xmlns=""> |
|
||||||
|
|
||||||
<h2 class=mb-4>Agences</h2> |
|
||||||
|
|
||||||
<div style="display: flex"> |
|
||||||
<p style="margin: 10px 0 10px 0">Pour ajouter une nouvelle agence, cliquez ici : </p> |
|
||||||
<button routerLink="/agences/add">Ajouter</button> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="mb-5 col-12" style="overflow-x:auto;"> |
|
||||||
<table class="table"> |
|
||||||
<thead> |
|
||||||
<tr> |
|
||||||
<th scope="col">Nom</th> |
|
||||||
<th scope="col"> Business Unit attitrée</th> |
|
||||||
</tr> |
|
||||||
</thead> |
|
||||||
<tbody> |
|
||||||
<tr *ngFor="let agence of agences"> |
|
||||||
<th>{{agence.name}}</th> |
|
||||||
<td>{{getBusinessUnitById(agence.businessUnitId).name}}</td> |
|
||||||
<td><a routerLink="{{agence.id}}"> Modifier </a></td> |
|
||||||
</tr> |
|
||||||
</tbody> |
|
||||||
</table> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
@ -1,2 +0,0 @@ |
|||||||
|
|
||||||
|
|
@ -1,53 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Agence} from "../../interfaces/agence"; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {AgenceService} from "../../services/agence.service"; |
|
||||||
import {Businessunit} from "../../interfaces/businessunit"; |
|
||||||
import {BusinessunitService} from "../../services/businessunit.service"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-agence', |
|
||||||
templateUrl: './agence.component.html', |
|
||||||
styleUrls: ['./agence.component.scss'] |
|
||||||
}) |
|
||||||
export class AgenceComponent implements OnInit { |
|
||||||
agences: Agence[] = []; |
|
||||||
businessUnits: Businessunit[] = []; |
|
||||||
|
|
||||||
|
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
private agenceService: AgenceService, |
|
||||||
private businessUnitService: BusinessunitService, |
|
||||||
) { |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.initAgences(); |
|
||||||
this.initBusinessUnits(); |
|
||||||
} |
|
||||||
|
|
||||||
initAgences(): void { |
|
||||||
this.agenceService.getAgences() |
|
||||||
.subscribe(agences => this.agences = agences); |
|
||||||
} |
|
||||||
|
|
||||||
initBusinessUnits(): void { |
|
||||||
this.businessUnitService.getBusinessunits() |
|
||||||
.subscribe(bus => this.businessUnits = bus); |
|
||||||
} |
|
||||||
|
|
||||||
getBusinessUnitById(id: number): Businessunit { |
|
||||||
let bu = {} as Businessunit; |
|
||||||
this.businessUnits.forEach(c => { |
|
||||||
if (c.id === id) { |
|
||||||
bu = c; |
|
||||||
return; |
|
||||||
} |
|
||||||
}); |
|
||||||
return bu; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
} |
|
@ -1,17 +0,0 @@ |
|||||||
<h3>Ajouter une Business Unit : </h3> |
|
||||||
|
|
||||||
<form (ngSubmit)="onSubmit()" [formGroup]="registerForm"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3 mb-2"> |
|
||||||
<label class="form-label">Nom</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.name.errors }" class="form-control" formControlName="name"> |
|
||||||
<div *ngIf="submitted && form.name.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.name.errors.required">Le nom d'une business unit est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div> |
|
||||||
<button type="submit">Créer la business unit</button> |
|
||||||
<button type="reset">Effacer</button> |
|
||||||
</div> |
|
||||||
</form> |
|
@ -1,72 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Businessunit} from "../../../interfaces/businessunit"; |
|
||||||
import {FormBuilder, FormGroup, Validators} from "@angular/forms"; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {BusinessunitService} from "../../../services/businessunit.service"; |
|
||||||
import {ToastrService} from "ngx-toastr"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-businessunit-add', |
|
||||||
templateUrl: './businessunit-add.component.html', |
|
||||||
styleUrls: ['./businessunit-add.component.scss'] |
|
||||||
}) |
|
||||||
export class BusinessunitAddComponent implements OnInit { |
|
||||||
|
|
||||||
businessunit = {} as Businessunit; |
|
||||||
|
|
||||||
registerForm!: FormGroup; |
|
||||||
submitted = false; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
private businessunitService: BusinessunitService, |
|
||||||
private formBuilder: FormBuilder, |
|
||||||
private toastr: ToastrService |
|
||||||
) { |
|
||||||
} |
|
||||||
|
|
||||||
get form() { |
|
||||||
return this.registerForm.controls; |
|
||||||
} |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.registerForm = this.formBuilder.group({ |
|
||||||
name: ['', Validators.required], |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
add(businessunit: Businessunit): void { |
|
||||||
this.businessunitService.addBusinessunit(businessunit) |
|
||||||
.subscribe(() => { |
|
||||||
this.showSuccess(); |
|
||||||
}, |
|
||||||
() => { |
|
||||||
this.showError() |
|
||||||
}); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
onSubmit() { |
|
||||||
this.submitted = true; |
|
||||||
|
|
||||||
if (this.registerForm.invalid) { |
|
||||||
return; |
|
||||||
} |
|
||||||
this.businessunit = this.registerForm.value |
|
||||||
this.add(this.businessunit) |
|
||||||
} |
|
||||||
|
|
||||||
onReset() { |
|
||||||
this.submitted = false; |
|
||||||
this.registerForm.reset(); |
|
||||||
} |
|
||||||
|
|
||||||
showSuccess() { |
|
||||||
this.toastr.success('Création réussie', 'Business Unit'); |
|
||||||
} |
|
||||||
|
|
||||||
showError() { |
|
||||||
this.toastr.error('Création échouée', 'Business Unit'); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,23 +0,0 @@ |
|||||||
<div *ngIf="businessunit"> |
|
||||||
|
|
||||||
<h2>{{bu.name | uppercase}} </h2> |
|
||||||
|
|
||||||
<form |
|
||||||
(ngSubmit)="onSubmit()" |
|
||||||
[formGroup]="registerForm"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3 mb-2"> |
|
||||||
<label class="form-label">Nom</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.name.errors }" class="form-control" formControlName="name"> |
|
||||||
<div *ngIf="submitted && form.name.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.name.errors.required">Le nom d'une business unit est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div> |
|
||||||
<button type="submit">Sauvegarder les changements</button> |
|
||||||
<button type="reset">Effacer</button> |
|
||||||
<button type="button" (click)="goBack()">Retour</button> |
|
||||||
</div> |
|
||||||
</form> |
|
||||||
</div> |
|
@ -1,82 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Businessunit} from "../../../interfaces/businessunit"; |
|
||||||
import {ActivatedRoute} from "@angular/router"; |
|
||||||
import {BusinessunitService} from "../../../services/businessunit.service"; |
|
||||||
import {Location} from "@angular/common"; |
|
||||||
import {FormBuilder, FormGroup, Validators} from "@angular/forms"; |
|
||||||
import {Observable} from "rxjs"; |
|
||||||
import {take, tap} from "rxjs/operators"; |
|
||||||
import {ToastrService} from "ngx-toastr"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-businessunit-edit', |
|
||||||
templateUrl: './businessunit-edit.component.html', |
|
||||||
styleUrls: ['./businessunit-edit.component.scss'] |
|
||||||
}) |
|
||||||
export class BusinessunitEditComponent implements OnInit { |
|
||||||
|
|
||||||
businessunit!: Observable<Businessunit>; |
|
||||||
bu = {} as Businessunit; |
|
||||||
id: number; |
|
||||||
|
|
||||||
registerForm!: FormGroup; |
|
||||||
submitted = false; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private route: ActivatedRoute, |
|
||||||
private businessunitService: BusinessunitService, |
|
||||||
private location: Location, |
|
||||||
private formBuilder: FormBuilder, |
|
||||||
private toastr: ToastrService |
|
||||||
) { |
|
||||||
this.id = Number(this.route.snapshot.paramMap.get('id')) |
|
||||||
} |
|
||||||
|
|
||||||
get form() { |
|
||||||
return this.registerForm.controls; |
|
||||||
} |
|
||||||
|
|
||||||
async ngOnInit() { |
|
||||||
this.registerForm = this.formBuilder.group({ |
|
||||||
name: ['', Validators.required] |
|
||||||
}); |
|
||||||
this.businessunit = this.businessunitService.getBusinessunit(this.id).pipe(tap(businessUnit => this.registerForm.patchValue(businessUnit))); |
|
||||||
this.bu = await this.businessunit.pipe(take(1)).toPromise() |
|
||||||
} |
|
||||||
|
|
||||||
onSubmit() { |
|
||||||
this.submitted = true; |
|
||||||
if (this.registerForm.invalid) { |
|
||||||
return; |
|
||||||
} |
|
||||||
this.bu.name = this.registerForm.value.name |
|
||||||
|
|
||||||
if (this.businessunit) { |
|
||||||
this.businessunitService.updateBusinessunit(this.bu, this.id) |
|
||||||
.subscribe(() => { |
|
||||||
this.showSuccess(); |
|
||||||
}, |
|
||||||
() => { |
|
||||||
this.showError() |
|
||||||
}); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
onReset() { |
|
||||||
this.submitted = false; |
|
||||||
this.registerForm.reset(); |
|
||||||
} |
|
||||||
|
|
||||||
goBack(): void { |
|
||||||
this.location.back(); |
|
||||||
} |
|
||||||
|
|
||||||
showSuccess() { |
|
||||||
this.toastr.success('Modification réussie', 'Business Unit'); |
|
||||||
} |
|
||||||
|
|
||||||
showError() { |
|
||||||
this.toastr.error('Modification échouée', 'Business Unit'); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,26 +0,0 @@ |
|||||||
<div xmlns=""> |
|
||||||
|
|
||||||
<h2 class=mb-4>Business Units</h2> |
|
||||||
|
|
||||||
<div style="display: flex"> |
|
||||||
<p style="margin: 10px 0 10px 0">Pour ajouter une nouvelle business unit, cliquez ici : </p> |
|
||||||
<button routerLink="/businessunits/add">Ajouter</button> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="mb-5 col-12" style="overflow-x:auto;"> |
|
||||||
<table class="table"> |
|
||||||
<thead> |
|
||||||
<tr> |
|
||||||
<th scope="col">Nom</th> |
|
||||||
</tr> |
|
||||||
</thead> |
|
||||||
<tbody> |
|
||||||
<tr *ngFor="let businessunit of businessunits"> |
|
||||||
<th scope="row">{{businessunit.name}}</th> |
|
||||||
<td><a routerLink="{{businessunit.id}}"> Modifier </a></td> |
|
||||||
</tr> |
|
||||||
</tbody> |
|
||||||
</table> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
@ -1,37 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Businessunit} from "../../interfaces/businessunit"; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {BusinessunitService} from "../../services/businessunit.service"; |
|
||||||
import {FormGroup} from "@angular/forms"; |
|
||||||
|
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-businessunit', |
|
||||||
templateUrl: './businessunit.component.html', |
|
||||||
styleUrls: ['./businessunit.component.scss'] |
|
||||||
}) |
|
||||||
export class BusinessunitComponent implements OnInit { |
|
||||||
|
|
||||||
businessunits: Businessunit[] = []; |
|
||||||
|
|
||||||
registerForm!: FormGroup; |
|
||||||
submitted = false; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
private businessunitService: BusinessunitService, |
|
||||||
) { |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.initBusinessunits(); |
|
||||||
} |
|
||||||
|
|
||||||
initBusinessunits(): void { |
|
||||||
this.businessunitService.getBusinessunits() |
|
||||||
.subscribe(businessunits => this.businessunits = businessunits); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
} |
|
@ -1,165 +0,0 @@ |
|||||||
<h3>Ajouter un collaborateur : </h3> |
|
||||||
|
|
||||||
<form (ngSubmit)="onSubmit()" [formGroup]="registerForm"> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Nom</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.name.errors }" class="form-control" formControlName="name"> |
|
||||||
<div *ngIf="submitted && form.name.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.name.errors.required">Le nom d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Prénom</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.firstName.errors }" class="form-control" |
|
||||||
formControlName="firstName"> |
|
||||||
<div *ngIf="submitted && form.firstName.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.firstName.errors.required">Le prénom d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de naissance</label> |
|
||||||
<input (change)="onBirthDateChange($event)" [ngClass]="{ 'is-invalid': submitted && form.birthDate.errors }" |
|
||||||
class="form-control" formControlName="birthDate" |
|
||||||
type="date"> |
|
||||||
<div *ngIf="submitted && form.birthDate.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.birthDate.errors.required">La date de naissance d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Genre</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.gender.errors }" class="form-select" |
|
||||||
formControlName="gender"> |
|
||||||
<option disabled selected value="">Genre</option> |
|
||||||
<option value="MASCULIN">Masculin</option> |
|
||||||
<option value="FEMININ">Féminin</option> |
|
||||||
<option value="AUTRE">Autre</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.gender.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.gender.errors.required">Vous devez préciser le genre du collaborateur</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Statut</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.status.errors }" class="form-select" |
|
||||||
formControlName="status"> |
|
||||||
<option disabled selected value="">Statut</option> |
|
||||||
<option value="CADRE">Cadre</option> |
|
||||||
<option value="NONCADRE">Non-cadre</option> |
|
||||||
<option value="ALTERNANT">Alternant</option> |
|
||||||
<option value="STAGIAIRE">Stagiaire</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.status.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.status.errors.required">Vous devez préciser le statut du collaborateur</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Nombre d'enfants</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.childrenNumber.errors }" class="form-control" |
|
||||||
formControlName="childrenNumber" min="0" onkeyup="if(this.value<0){this.value= this.value * -1}" |
|
||||||
type="number"> |
|
||||||
<div *ngIf="submitted && form.childrenNumber.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.childrenNumber.errors.required">Le nombre d'enfant d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Adresse</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.address.errors }" class="form-control" |
|
||||||
formControlName="address"> |
|
||||||
<div *ngIf="submitted && form.address.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.address.errors.required">L'adresse d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Téléphone</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.telephone.errors }" class="form-control" |
|
||||||
formControlName="telephone"> |
|
||||||
<div *ngIf="submitted && form.telephone.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.telephone.errors.required">Le numéro de téléphone d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<div style="display: flex"> |
|
||||||
<label class="form-label" style="padding-right: 5px">Mail personnel</label> |
|
||||||
<small>(pas Apside)</small> |
|
||||||
</div> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.personalMail.errors }" class="form-control" |
|
||||||
formControlName="personalMail" |
|
||||||
placeholder="prenom.nom@example.com" type="email"> |
|
||||||
<div *ngIf="submitted && form.personalMail.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.personalMail.errors.required">Le mail personnel d'un collaborateur est obligatoire</div> |
|
||||||
<div *ngIf="form.personalMail.errors.pattern">Le mail personnel d'un collaborateur doit être au format |
|
||||||
"exemple@nom.de.domaine" |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Mail Apside</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': (submitted && form.apsideMail.errors) || errorValue==1 }" |
|
||||||
[value]="collaborateur.apsideMail" class="form-control" |
|
||||||
formControlName="apsideMail" |
|
||||||
placeholder="prenom.nom@apside-groupe.com" type="email"> |
|
||||||
<div *ngIf="submitted && form.apsideMail.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.apsideMail.errors.required">Le mail Apside d'un collaborateur est obligatoire</div> |
|
||||||
<div *ngIf="form.apsideMail.errors.pattern">Le mail Apside d'un collaborateur doit être au format |
|
||||||
"exemple@apside-groupe.com" ou "exemple@apside.fr" |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div *ngIf="submitted && errorValue==1" class="invalid-feedback"> |
|
||||||
<div *ngIf="errorValue==1">Le mail Apside que vous avez entré est déjà utilisé pour un autre collaborateur</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de départ</label> |
|
||||||
<input (change)="onResignationDateChange($event)" |
|
||||||
[ngClass]="{ 'is-invalid': submitted && form.resignationDate.errors }" class="form-control" |
|
||||||
formControlName="resignationDate" |
|
||||||
type="date"> |
|
||||||
<div *ngIf="submitted && form.resignationDate.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.resignationDate.errors.required">La date de départ d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-md-6"> |
|
||||||
<label class="form-label">Business Unit</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.businessUnitId.errors }" class="form-select" |
|
||||||
formControlName="businessUnitId"> |
|
||||||
<option disabled selected value="">Choisissez une Business Unit pour le collaborateur</option> |
|
||||||
<option *ngFor="let businessUnit of businessUnits" [ngValue]="businessUnit.id">{{businessUnit.name}} </option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.businessUnitId.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.businessUnitId.errors.required">Vous devez préciser la Business Unit du collaborateur</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div> |
|
||||||
<button type="submit">Ajouter le collaborateur</button> |
|
||||||
<button type="reset">Effacer</button> |
|
||||||
</div> |
|
||||||
</form> |
|
@ -1,108 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {FormBuilder, FormGroup, Validators} from "@angular/forms"; |
|
||||||
import {Collaborateur} from "../../../interfaces/collaborateur"; |
|
||||||
import {Businessunit} from "../../../interfaces/businessunit"; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {BusinessunitService} from "../../../services/businessunit.service"; |
|
||||||
import {CollaborateurService} from "../../../services/collaborateur.service"; |
|
||||||
import {ToastrService} from "ngx-toastr"; |
|
||||||
import {Router} from '@angular/router'; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-collaborateur-add', |
|
||||||
templateUrl: './collaborateur-add.component.html', |
|
||||||
styleUrls: ['./collaborateur-add.component.scss'] |
|
||||||
}) |
|
||||||
export class CollaborateurAddComponent implements OnInit { |
|
||||||
|
|
||||||
collaborateurs: Collaborateur[] = []; |
|
||||||
collaborateur = {} as Collaborateur; |
|
||||||
businessUnits: Businessunit[] = []; |
|
||||||
|
|
||||||
errorValue: number = 0; |
|
||||||
|
|
||||||
registerForm!: FormGroup; |
|
||||||
submitted : boolean = false; |
|
||||||
|
|
||||||
constructor(private http: HttpClient, |
|
||||||
private businessunitService: BusinessunitService, |
|
||||||
private collaborateurService: CollaborateurService, |
|
||||||
private formBuilder: FormBuilder, |
|
||||||
private toastr: ToastrService, |
|
||||||
private router: Router) { |
|
||||||
} |
|
||||||
|
|
||||||
get form() { |
|
||||||
return this.registerForm.controls; |
|
||||||
} |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.initCollaborateurs(); |
|
||||||
this.initBusinessunits(); |
|
||||||
this.registerForm = this.formBuilder.group({ |
|
||||||
name: ['', Validators.required], |
|
||||||
firstName: ['', Validators.required], |
|
||||||
birthDate: ['', Validators.required], |
|
||||||
gender: ['', Validators.required], |
|
||||||
status: ['', Validators.required], |
|
||||||
childrenNumber: ['', Validators.required], |
|
||||||
address: ['', Validators.required], |
|
||||||
telephone: ['', Validators.required], |
|
||||||
personalMail: ['', Validators.compose([Validators.required, Validators.pattern(".*@[a-z]*\.[a-z]*")])], |
|
||||||
apsideMail: ['', Validators.compose([Validators.required, Validators.pattern(".*@apside-groupe\.com|.*@apside\.fr")])], |
|
||||||
resignationDate: [], |
|
||||||
businessUnitId: ['', Validators.required], |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
initCollaborateurs(): void { |
|
||||||
this.collaborateurService.getCollaborateurs() |
|
||||||
.subscribe(collaborateurs => this.collaborateurs = collaborateurs); |
|
||||||
} |
|
||||||
|
|
||||||
initBusinessunits(): void { |
|
||||||
this.businessunitService.getBusinessunits() |
|
||||||
.subscribe(businessunits => this.businessUnits = businessunits); |
|
||||||
} |
|
||||||
|
|
||||||
onSubmit(): void { |
|
||||||
this.submitted = true; |
|
||||||
if (this.registerForm.invalid) { |
|
||||||
return; |
|
||||||
} |
|
||||||
this.collaborateur = this.registerForm.value |
|
||||||
if (this.collaborateur) { |
|
||||||
this.collaborateurService.addCollaborateur(this.collaborateur).subscribe(collaborateur => { |
|
||||||
this.collaborateurs.push(collaborateur); |
|
||||||
this.showSuccess(); |
|
||||||
this.router.navigateByUrl('/periodeessais/add?apsideMail=' + this.registerForm.value.apsideMail); |
|
||||||
}, |
|
||||||
() => { |
|
||||||
this.showError() |
|
||||||
}) |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
onReset():void { |
|
||||||
this.submitted = false; |
|
||||||
this.registerForm.reset(); |
|
||||||
} |
|
||||||
|
|
||||||
onResignationDateChange($event: any): void { |
|
||||||
this.collaborateur.resignationDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
onBirthDateChange($event: any): void { |
|
||||||
this.collaborateur.birthDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
showSuccess() { |
|
||||||
this.toastr.success('Création réussie', 'Collaborateur'); |
|
||||||
} |
|
||||||
|
|
||||||
showError() { |
|
||||||
this.toastr.error('Création échouée', 'Collaborateur'); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,176 +0,0 @@ |
|||||||
<div *ngIf="collaborateur"> |
|
||||||
|
|
||||||
<h2>{{collaborateur.name | uppercase}} {{collaborateur.firstName | uppercase}} </h2> |
|
||||||
|
|
||||||
<form (ngSubmit)="onSubmit()" |
|
||||||
[formGroup]="registerForm"> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Nom</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.name.errors }" [value]="collaborateur.name" |
|
||||||
class="form-control" |
|
||||||
formControlName="name"> |
|
||||||
<div *ngIf="submitted && form.name.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.name.errors.required">Le nom d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Prénom</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.firstName.errors }" [value]="collaborateur.firstName" |
|
||||||
class="form-control" formControlName="firstName"> |
|
||||||
<div *ngIf="submitted && form.firstName.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.firstName.errors.required">Le prénom d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de naissance</label> |
|
||||||
<input (change)="onBirthDateChange($event)" [ngClass]="{ 'is-invalid': submitted && form.birthDate.errors }" |
|
||||||
[value]="collaborateur.birthDate | date:'yyyy-MM-dd'" |
|
||||||
class="form-control" formControlName="birthDate" |
|
||||||
type="date"> |
|
||||||
<div *ngIf="submitted && form.birthDate.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.birthDate.errors.required">La date de naissance d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Genre</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.gender.errors }" [value]="collaborateur.gender" |
|
||||||
class="form-select" |
|
||||||
formControlName="gender"> |
|
||||||
<option disabled selected value="">Genre</option> |
|
||||||
<option value="MASCULIN">Masculin</option> |
|
||||||
<option value="FEMININ">Féminin</option> |
|
||||||
<option value="AUTRE">Autre</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.gender.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.gender.errors.required">Vous devez préciser le genre du collaborateur</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Statut</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.status.errors }" [value]="collaborateur.status" |
|
||||||
class="form-select" |
|
||||||
formControlName="status"> |
|
||||||
<option disabled selected value="">Statut</option> |
|
||||||
<option value="CADRE">Cadre</option> |
|
||||||
<option value="NONCADRE">Non-cadre</option> |
|
||||||
<option value="ALTERNANT">Alternant</option> |
|
||||||
<option value="STAGIAIRE">Stagiaire</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.status.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.status.errors.required">Vous devez préciser le statut du collaborateur</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Nombre d'enfants</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.childrenNumber.errors }" [value]="collaborateur.childrenNumber" |
|
||||||
class="form-control" formControlName="childrenNumber" min="0" |
|
||||||
onkeyup="if(this.value<0){this.value= this.value * -1}" type="number"> |
|
||||||
<div *ngIf="submitted && form.childrenNumber.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.childrenNumber.errors.required">Le nombre d'enfant d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Adresse</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.address.errors }" [value]="collaborateur.address" |
|
||||||
class="form-control" formControlName="address"> |
|
||||||
<div *ngIf="submitted && form.address.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.address.errors.required">L'adresse d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Téléphone</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.telephone.errors }" [value]="collaborateur.telephone" |
|
||||||
class="form-control" formControlName="telephone"> |
|
||||||
<div *ngIf="submitted && form.telephone.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.telephone.errors.required">Le numéro de téléphone d'un collaborateur est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<div style="display: flex"> |
|
||||||
<label class="form-label" style="padding-right: 5px">Mail personnel</label> |
|
||||||
<small>(pas Apside)</small> |
|
||||||
</div> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.personalMail.errors }" [value]="collaborateur.personalMail" |
|
||||||
class="form-control" |
|
||||||
formControlName="personalMail" placeholder="prenom.nom@example.com" |
|
||||||
type="email"> |
|
||||||
<div *ngIf="submitted && form.personalMail.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.personalMail.errors.required">Le mail personnel d'un collaborateur est obligatoire</div> |
|
||||||
<div *ngIf="form.personalMail.errors.pattern">Le mail personnel d'un collaborateur doit être au format |
|
||||||
"exemple@nom.de.domaine" |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Mail Apside</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': (submitted && form.apsideMail.errors) || errorValue==1 }" |
|
||||||
[value]="collaborateur.apsideMail" class="form-control" |
|
||||||
formControlName="apsideMail" |
|
||||||
placeholder="prenom.nom@apside-groupe.com" type="email"> |
|
||||||
<div *ngIf="submitted && form.apsideMail.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.apsideMail.errors.required">Le mail Apside d'un collaborateur est obligatoire</div> |
|
||||||
<div *ngIf="form.apsideMail.errors.pattern">Le mail Apside d'un collaborateur doit être au format |
|
||||||
"exemple@apside-groupe.com" ou "exemple@apside.fr" |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div *ngIf="submitted && errorValue==1" class="invalid-feedback"> |
|
||||||
<div *ngIf="errorValue==1">Le mail Apside que vous avez entré est déjà utilisé pour un autre collaborateur |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de départ</label> |
|
||||||
<input (change)="onResignationDateChange($event)" |
|
||||||
[ngClass]="{ 'is-invalid': submitted && form.resignationDate.errors }" |
|
||||||
[value]="collaborateur.resignationDate | date:'yyyy-MM-dd'" |
|
||||||
class="form-control" formControlName="resignationDate" |
|
||||||
type="date"> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-md-6"> |
|
||||||
<label class="form-label">Business Unit</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.businessUnitId.errors }" class="form-select" |
|
||||||
formControlName="businessUnitId"> |
|
||||||
<option disabled selected value="">Choisissez une Business Unit pour le collaborateur</option> |
|
||||||
<option *ngFor="let businessUnit of businessUnits" [ngValue]="businessUnit.id">{{businessUnit.name}} </option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.businessUnitId.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.businessUnitId.errors.required">Vous devez préciser la Business Unit du collaborateur</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div> |
|
||||||
<button type="submit">Sauvegarder les changements</button> |
|
||||||
<button type="button" (click)="delete()">Supprimer le collaborateur</button> |
|
||||||
<button type="reset">Effacer</button> |
|
||||||
<button type="button" (click)="goBack()">Retour</button> |
|
||||||
</div> |
|
||||||
</form> |
|
||||||
|
|
||||||
</div> |
|
@ -1,142 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Collaborateur} from "../../../interfaces/collaborateur"; |
|
||||||
import {ActivatedRoute} from '@angular/router'; |
|
||||||
import {Location} from '@angular/common'; |
|
||||||
import {CollaborateurService} from "../../../services/collaborateur.service"; |
|
||||||
import {BusinessunitService} from "../../../services/businessunit.service"; |
|
||||||
import {FormBuilder, FormGroup, Validators} from "@angular/forms"; |
|
||||||
import {Businessunit} from "../../../interfaces/businessunit"; |
|
||||||
import {Observable} from "rxjs"; |
|
||||||
import {take, tap} from "rxjs/operators"; |
|
||||||
import {ToastrService} from "ngx-toastr"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-collaborateur-edit', |
|
||||||
templateUrl: './collaborateur-edit.component.html', |
|
||||||
styleUrls: ['./collaborateur-edit.component.scss'] |
|
||||||
}) |
|
||||||
export class CollaborateurEditComponent implements OnInit { |
|
||||||
|
|
||||||
collaborateurObservable!: Observable<Collaborateur>; |
|
||||||
id: number; |
|
||||||
|
|
||||||
collaborateur = {} as Collaborateur; |
|
||||||
collaborateurs: Collaborateur[] = []; |
|
||||||
businessUnits: Businessunit[] = []; |
|
||||||
errorValue: number = 0; |
|
||||||
|
|
||||||
registerForm!: FormGroup; |
|
||||||
submitted = false; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private route: ActivatedRoute, |
|
||||||
private collaborateurService: CollaborateurService, |
|
||||||
private businessunitService: BusinessunitService, |
|
||||||
private location: Location, |
|
||||||
private formBuilder: FormBuilder, |
|
||||||
private toastr: ToastrService |
|
||||||
) { |
|
||||||
this.id = Number(this.route.snapshot.paramMap.get('id')) |
|
||||||
} |
|
||||||
|
|
||||||
get form() { |
|
||||||
return this.registerForm.controls; |
|
||||||
} |
|
||||||
|
|
||||||
async ngOnInit() { |
|
||||||
this.initCollaborateurs() |
|
||||||
this.initBusinessunits(); |
|
||||||
this.registerForm = this.formBuilder.group({ |
|
||||||
name: ['', Validators.required], |
|
||||||
firstName: ['', Validators.required], |
|
||||||
birthDate: ['', Validators.required], |
|
||||||
gender: ['', Validators.required], |
|
||||||
status: ['', Validators.required], |
|
||||||
childrenNumber: ['', Validators.required], |
|
||||||
address: ['', Validators.required], |
|
||||||
telephone: ['', Validators.required], |
|
||||||
personalMail: ['', Validators.compose([Validators.required, Validators.pattern(".+@[a-z]*\.[a-z]*")])], |
|
||||||
apsideMail: ['', Validators.compose([Validators.required, Validators.pattern(".+@apside-groupe\.com|.*@apside\.fr")])], |
|
||||||
resignationDate: [], |
|
||||||
businessUnitId: ['', Validators.required], |
|
||||||
}); |
|
||||||
this.collaborateurObservable = this.collaborateurService.getCollaborateur(this.id).pipe(tap(collaborateur => this.registerForm.patchValue(collaborateur))) |
|
||||||
this.collaborateur = await this.collaborateurObservable.pipe(take(1)).toPromise() |
|
||||||
} |
|
||||||
|
|
||||||
initCollaborateurs(): void { |
|
||||||
this.collaborateurService.getCollaborateurs() |
|
||||||
.subscribe(collaborateurs => this.collaborateurs = collaborateurs); |
|
||||||
} |
|
||||||
|
|
||||||
initBusinessunits(): void { |
|
||||||
this.businessunitService.getBusinessunits() |
|
||||||
.subscribe(businessunits => this.businessUnits = businessunits); |
|
||||||
} |
|
||||||
|
|
||||||
goBack(): void { |
|
||||||
this.location.back(); |
|
||||||
} |
|
||||||
|
|
||||||
delete(): void { |
|
||||||
if (this.collaborateur) { |
|
||||||
this.collaborateurService.deleteCollaborateur(this.collaborateur) |
|
||||||
.subscribe(() => this.goBack()); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
onSubmit() { |
|
||||||
this.submitted = true; |
|
||||||
|
|
||||||
if (this.registerForm.invalid) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
this.collaborateur.name = this.registerForm.value.name |
|
||||||
this.collaborateur.firstName = this.registerForm.value.firstName |
|
||||||
this.collaborateur.birthDate = this.registerForm.value.birthDate |
|
||||||
this.collaborateur.gender = this.registerForm.value.gender |
|
||||||
this.collaborateur.businessUnitId = this.registerForm.value.businessUnitId |
|
||||||
this.collaborateur.apsideMail = this.registerForm.value.apsideMail |
|
||||||
this.collaborateur.personalMail = this.registerForm.value.personalMail |
|
||||||
this.collaborateur.telephone = this.registerForm.value.telephone |
|
||||||
this.collaborateur.address = this.registerForm.value.address |
|
||||||
this.collaborateur.childrenNumber = this.registerForm.value.childrenNumber |
|
||||||
this.collaborateur.status = this.registerForm.value.status |
|
||||||
|
|
||||||
if (this.registerForm.value.resignationDate == undefined) { |
|
||||||
this.collaborateur.resignationDate = new Date(); |
|
||||||
} |
|
||||||
|
|
||||||
if (this.collaborateur) { |
|
||||||
this.collaborateurService.updateCollaborateur(this.collaborateur).subscribe(() => { |
|
||||||
this.showSuccess(); |
|
||||||
}, |
|
||||||
() => { |
|
||||||
this.showError() |
|
||||||
}) |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
onReset() { |
|
||||||
this.submitted = false; |
|
||||||
this.registerForm.reset(); |
|
||||||
} |
|
||||||
|
|
||||||
onResignationDateChange($event: any): void { |
|
||||||
this.collaborateur.resignationDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
onBirthDateChange($event: any): void { |
|
||||||
this.collaborateur.birthDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
showSuccess() { |
|
||||||
this.toastr.success('Modification réussie', 'Collaborateur'); |
|
||||||
} |
|
||||||
|
|
||||||
showError() { |
|
||||||
this.toastr.error('Modification échouée', 'Collaborateur'); |
|
||||||
} |
|
||||||
} |
|
@ -1,28 +0,0 @@ |
|||||||
<h2 class=mb-4>Collaborateurs</h2> |
|
||||||
|
|
||||||
<div style="display: flex"> |
|
||||||
<p style="margin: 10px 0 10px 0">Pour ajouter un nouveau collaborateur, cliquez ici : </p> |
|
||||||
<button routerLink="/collaborateurs/add">Ajouter</button> |
|
||||||
</div> |
|
||||||
|
|
||||||
|
|
||||||
<div class="mb-5 col-12" style="overflow-x:auto;"> |
|
||||||
<table class="table"> |
|
||||||
<thead> |
|
||||||
<tr> |
|
||||||
<th scope="col">Nom</th> |
|
||||||
<th scope="col">Prénom</th> |
|
||||||
<th scope="col">Mail Apside</th> |
|
||||||
</tr> |
|
||||||
</thead> |
|
||||||
|
|
||||||
<tbody> |
|
||||||
<tr *ngFor="let collaborateur of collaborateurs"> |
|
||||||
<th scope="row">{{collaborateur.name}}</th> |
|
||||||
<td> {{collaborateur.firstName}} </td> |
|
||||||
<td> {{collaborateur.apsideMail}} </td> |
|
||||||
<td><a routerLink="{{collaborateur.id}}"> Modifier </a></td> |
|
||||||
</tr> |
|
||||||
</tbody> |
|
||||||
</table> |
|
||||||
</div> |
|
@ -1,32 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {CollaborateurService} from "../../services/collaborateur.service"; |
|
||||||
import {Collaborateur} from "../../interfaces/collaborateur"; |
|
||||||
import {BusinessunitService} from "../../services/businessunit.service"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-collaborateur', |
|
||||||
templateUrl: './collaborateur.component.html', |
|
||||||
styleUrls: ['./collaborateur.component.scss'] |
|
||||||
}) |
|
||||||
export class CollaborateurComponent implements OnInit { |
|
||||||
collaborateurs: Collaborateur[] = []; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
private businessunitService: BusinessunitService, |
|
||||||
private collaborateurService: CollaborateurService, |
|
||||||
) { |
|
||||||
} |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.initCollaborateurs(); |
|
||||||
} |
|
||||||
|
|
||||||
initCollaborateurs(): void { |
|
||||||
this.collaborateurService.getCollaborateurs() |
|
||||||
.subscribe(collaborateurs => this.collaborateurs = collaborateurs); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
} |
|
@ -1,23 +0,0 @@ |
|||||||
.home-card { |
|
||||||
margin-right: 20px; |
|
||||||
margin-left: 20px; |
|
||||||
height: fit-content; |
|
||||||
} |
|
||||||
|
|
||||||
.title-center { |
|
||||||
display: flex; |
|
||||||
justify-content: center; |
|
||||||
align-items: center; |
|
||||||
font-size: 22px; |
|
||||||
} |
|
||||||
|
|
||||||
.subtitle-center { |
|
||||||
display: flex; |
|
||||||
justify-content: center; |
|
||||||
align-items: center; |
|
||||||
} |
|
||||||
|
|
||||||
.button-link{ |
|
||||||
width: 100%; |
|
||||||
padding: 2px; |
|
||||||
} |
|
@ -1,131 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Collaborateur} from "../../interfaces/collaborateur"; |
|
||||||
import {PeriodeEssai} from "../../interfaces/periode-essai"; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {CollaborateurService} from "../../services/collaborateur.service"; |
|
||||||
import {PeriodeEssaiService} from "../../services/periode-essai.service"; |
|
||||||
import {Referencement} from "../../interfaces/referencement"; |
|
||||||
import {ReferencementService} from "../../services/referencement.service"; |
|
||||||
import {Businessunit} from "../../interfaces/businessunit"; |
|
||||||
import {Agence} from "../../interfaces/agence"; |
|
||||||
import {BusinessunitService} from "../../services/businessunit.service"; |
|
||||||
import {AgenceService} from "../../services/agence.service"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-home', |
|
||||||
templateUrl: './home.component.html', |
|
||||||
styleUrls: ['./home.component.scss'] |
|
||||||
}) |
|
||||||
export class HomeComponent implements OnInit { |
|
||||||
|
|
||||||
businessUnits: Businessunit[] = []; |
|
||||||
agences: Agence[] = []; |
|
||||||
collaborateurs: Collaborateur[] = []; |
|
||||||
referencements: Referencement[] = []; |
|
||||||
periodeEssais: PeriodeEssai[] = []; |
|
||||||
|
|
||||||
|
|
||||||
collaborateursSansRef: Collaborateur[] = []; |
|
||||||
idReferredTab: number[] = []; |
|
||||||
|
|
||||||
periodeEssaisEnCours: PeriodeEssai[] = []; |
|
||||||
|
|
||||||
isShown: boolean = false; |
|
||||||
|
|
||||||
joursRestant: number = 7; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
private businessUnitService: BusinessunitService, |
|
||||||
private agenceService: AgenceService, |
|
||||||
private collaborateurService: CollaborateurService, |
|
||||||
private periodeEssaiService: PeriodeEssaiService, |
|
||||||
private referencementService: ReferencementService, |
|
||||||
) { |
|
||||||
} |
|
||||||
|
|
||||||
getDateJoursRestant(): Date { |
|
||||||
let result = new Date(); |
|
||||||
result.setDate(new Date().getDate() + this.joursRestant); |
|
||||||
return result; |
|
||||||
} |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.collaborateurService.getCollaborateurs() |
|
||||||
.subscribe(collaborateurs => { |
|
||||||
this.collaborateurs = collaborateurs; |
|
||||||
this.referencementService.getReferencements() |
|
||||||
.subscribe(referencements => { |
|
||||||
this.referencements = referencements; |
|
||||||
this.referencements.forEach(ref => { |
|
||||||
|
|
||||||
if (this.idReferredTab.find(id => ref.id == id) == undefined) { |
|
||||||
this.idReferredTab.push(ref.referredId); |
|
||||||
} |
|
||||||
|
|
||||||
}); |
|
||||||
this.collaborateurs.forEach(collab => { |
|
||||||
if (this.idReferredTab.find(id => collab.id == id) == undefined) { |
|
||||||
this.collaborateursSansRef.push(collab); |
|
||||||
} |
|
||||||
}) |
|
||||||
}); |
|
||||||
}); |
|
||||||
this.initPeriodeEssais(); |
|
||||||
this.businessUnitService.getBusinessunits().subscribe( |
|
||||||
businessUnits => { |
|
||||||
this.businessUnits = businessUnits |
|
||||||
} |
|
||||||
) |
|
||||||
this.agenceService.getAgences().subscribe( |
|
||||||
agences => { |
|
||||||
this.agences = agences |
|
||||||
} |
|
||||||
) |
|
||||||
} |
|
||||||
|
|
||||||
getCollaborateurById(id: number): Collaborateur { |
|
||||||
let collab = {} as Collaborateur; |
|
||||||
this.collaborateurs.forEach(c => { |
|
||||||
if (c.id === id) { |
|
||||||
collab = c; |
|
||||||
return; |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
return collab; |
|
||||||
} |
|
||||||
|
|
||||||
initPeriodeEssais():void { |
|
||||||
this.periodeEssaisEnCours = [] |
|
||||||
this.periodeEssaiService.getPeriodeEssais() |
|
||||||
.subscribe(periodeEssais => { |
|
||||||
this.periodeEssais = periodeEssais; |
|
||||||
periodeEssais.forEach(pe => { |
|
||||||
if (new Date(pe.plannedEndingDate).getTime() > new Date().getTime() && new Date(pe.plannedEndingDate).getTime() < this.getDateJoursRestant().getTime()) { |
|
||||||
this.periodeEssaisEnCours.push(pe); |
|
||||||
} |
|
||||||
}) |
|
||||||
this.periodeEssaisEnCours.sort((b, a) => new Date(b.plannedEndingDate).getTime() - new Date(a.plannedEndingDate).getTime()); |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
getSplitDate(date: string | undefined): string { |
|
||||||
if (date == undefined) { |
|
||||||
return ""; |
|
||||||
} |
|
||||||
return date.split('T')[0]; |
|
||||||
} |
|
||||||
|
|
||||||
incrementJoursRestant() { |
|
||||||
this.joursRestant += 7; |
|
||||||
this.initPeriodeEssais(); |
|
||||||
} |
|
||||||
|
|
||||||
decrementJoursRestant() { |
|
||||||
if (this.joursRestant >= 7) { |
|
||||||
this.joursRestant -= 7; |
|
||||||
this.initPeriodeEssais(); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,75 +0,0 @@ |
|||||||
<h3>Ajouter une Période d'essai : </h3> |
|
||||||
|
|
||||||
<form (ngSubmit)="onSubmit()" [formGroup]="registerForm"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-md-6"> |
|
||||||
<label class="form-label">Collaborateur</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.collaborateurId.errors }" class="form-select" |
|
||||||
formControlName="collaborateurId" |
|
||||||
id="collaborateur-select"> |
|
||||||
<option *ngFor="let collaborateur of collaborateurs" |
|
||||||
[ngValue]="collaborateur.id">{{collaborateur.name}} {{collaborateur.firstName}}</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.collaborateurId.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.collaborateurId.errors.required">Vous devez choisir le collaborateur concerné par cette période |
|
||||||
d'essai |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de début</label> |
|
||||||
<input (change)="onStartingDateChange($event)" [ngClass]="{ 'is-invalid': submitted && form.startingDate.errors }" |
|
||||||
class="form-control" formControlName="startingDate" |
|
||||||
type="date"> |
|
||||||
<div *ngIf="submitted && form.startingDate.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.startingDate.errors.required">La date de début d'une période d'essai est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de fin prévue</label> |
|
||||||
<input (change)="onPlannedEndingDateChange($event)" |
|
||||||
[ngClass]="{ 'is-invalid': submitted && form.plannedEndingDate.errors }" class="form-control" |
|
||||||
formControlName="plannedEndingDate" |
|
||||||
type="date"> |
|
||||||
<div *ngIf="submitted && form.plannedEndingDate.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.plannedEndingDate.errors.required">La date de fin prévue d'une période d'essai est obligatoire |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de fin réelle</label> |
|
||||||
<input (change)="onRealEndingDateChange($event)" class="form-control" formControlName="realEndingDate" |
|
||||||
type="date"> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3 mb-2"> |
|
||||||
<label class="form-label">Commentaire</label> |
|
||||||
<input [ngClass]="{ 'is-invalid': submitted && form.comment.errors }" class="form-control" formControlName="comment"> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3 mb-2"> |
|
||||||
<label class="form-label">Issue</label> |
|
||||||
<select class="form-select" formControlName="issue"> |
|
||||||
<option disabled selected value="">Statut</option> |
|
||||||
<option value="VALIDEE">Validée</option> |
|
||||||
<option value="PROLONGEE_COLLAB">Prolongée par le collaborateur</option> |
|
||||||
<option value="PROLONGEE_APSIDE">Prolongée par Apside</option> |
|
||||||
<option value="ARRETEE_COLLAB">Arrêtée par le collaborateur</option> |
|
||||||
<option value="ARRETEE_APSIDE">Arrêtée par Apside</option> |
|
||||||
<option value="INDETERMINEE">Indéterminée</option> |
|
||||||
</select> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div> |
|
||||||
<button type="submit">Créer la période d'essai</button> |
|
||||||
<button type="reset">Effacer</button> |
|
||||||
</div> |
|
||||||
</form> |
|
@ -1,127 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Collaborateur} from "../../../interfaces/collaborateur"; |
|
||||||
import {PeriodeEssai} from "../../../interfaces/periode-essai"; |
|
||||||
import {FormBuilder, FormGroup, Validators} from "@angular/forms"; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {CollaborateurService} from "../../../services/collaborateur.service"; |
|
||||||
import {PeriodeEssaiService} from "../../../services/periode-essai.service"; |
|
||||||
import {ToastrService} from "ngx-toastr"; |
|
||||||
import {ActivatedRoute} from "@angular/router"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-periode-essai-add', |
|
||||||
templateUrl: './periode-essai-add.component.html', |
|
||||||
styleUrls: ['./periode-essai-add.component.scss'] |
|
||||||
}) |
|
||||||
export class PeriodeEssaiAddComponent implements OnInit { |
|
||||||
|
|
||||||
collaborateurs: Collaborateur[] = []; |
|
||||||
collaborateur = {} as Collaborateur; |
|
||||||
periodeEssai = {} as PeriodeEssai; |
|
||||||
|
|
||||||
registerForm!: FormGroup; |
|
||||||
submitted = false; |
|
||||||
|
|
||||||
apsideMail?: string | null; |
|
||||||
id?: number; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
private collaborateurService: CollaborateurService, |
|
||||||
private periodeEssaiService: PeriodeEssaiService, |
|
||||||
private formBuilder: FormBuilder, |
|
||||||
private toastr: ToastrService, |
|
||||||
private route: ActivatedRoute |
|
||||||
) { |
|
||||||
} |
|
||||||
|
|
||||||
get form() { |
|
||||||
return this.registerForm.controls; |
|
||||||
} |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.apsideMail = this.route.snapshot.queryParamMap.get('apsideMail'); |
|
||||||
this.registerForm = this.formBuilder.group({ |
|
||||||
comment: [], |
|
||||||
collaborateurId: ['', Validators.required], |
|
||||||
issue: [], |
|
||||||
plannedEndingDate: ['', Validators.required], |
|
||||||
realEndingDate: [], |
|
||||||
startingDate: ['', Validators.required] |
|
||||||
}); |
|
||||||
|
|
||||||
this.initCollaborateurs(); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
initCollaborateurs(): void { |
|
||||||
this.collaborateurService.getCollaborateurs() |
|
||||||
.subscribe(collaborateurs => { |
|
||||||
this.collaborateurs = collaborateurs; |
|
||||||
if (this.apsideMail != undefined) { |
|
||||||
this.collaborateurs.forEach(collab => { |
|
||||||
if (this.apsideMail === collab.apsideMail) { |
|
||||||
this.registerForm.get("collaborateurId")?.setValue(collab.id) |
|
||||||
this.collaborateur = collab |
|
||||||
} |
|
||||||
}) |
|
||||||
} |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
onSubmit() { |
|
||||||
this.submitted = true; |
|
||||||
if (this.registerForm.invalid) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
this.periodeEssai.comment = this.registerForm.value.comment; |
|
||||||
this.periodeEssai.collaborateurId = this.registerForm.value.collaborateurId; |
|
||||||
if (this.registerForm.value.issue == undefined) { |
|
||||||
this.periodeEssai.issue = "INDETERMINEE"; |
|
||||||
} else { |
|
||||||
this.periodeEssai.issue = this.registerForm.value.issue; |
|
||||||
} |
|
||||||
if (this.registerForm.value.realEndingDate == undefined) { |
|
||||||
this.periodeEssai.realEndingDate = new Date(); |
|
||||||
} else { |
|
||||||
this.periodeEssai.realEndingDate = this.registerForm.value.realEndingDate; |
|
||||||
} |
|
||||||
this.periodeEssai.plannedEndingDate = this.registerForm.value.plannedEndingDate; |
|
||||||
this.periodeEssai.startingDate = this.registerForm.value.startingDate; |
|
||||||
|
|
||||||
this.periodeEssaiService.addPeriodeEssai(this.periodeEssai) |
|
||||||
.subscribe(() => { |
|
||||||
this.showSuccess(); |
|
||||||
}, |
|
||||||
() => { |
|
||||||
this.showError() |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
onReset() { |
|
||||||
this.submitted = false; |
|
||||||
this.registerForm.reset(); |
|
||||||
} |
|
||||||
|
|
||||||
onStartingDateChange($event: any): void { |
|
||||||
this.periodeEssai.startingDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
onPlannedEndingDateChange($event: any): void { |
|
||||||
this.periodeEssai.plannedEndingDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
onRealEndingDateChange($event: any): void { |
|
||||||
this.periodeEssai.realEndingDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
showSuccess() { |
|
||||||
this.toastr.success('Création réussie', 'Période d\'essai'); |
|
||||||
} |
|
||||||
|
|
||||||
showError() { |
|
||||||
this.toastr.error('Création échouée', 'Période d\'essai'); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,92 +0,0 @@ |
|||||||
<div xmlns=""> |
|
||||||
|
|
||||||
<h3>Modifier une Période d'essai : </h3> |
|
||||||
|
|
||||||
<form (ngSubmit)="onSubmit()" |
|
||||||
[formGroup]="registerForm"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-md-6"> |
|
||||||
<label class="form-label">Collaborateur</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.collaborateurId.errors }" class="form-select" |
|
||||||
formControlName="collaborateurId" |
|
||||||
id="collaborateur-select"> |
|
||||||
<option disabled selected value="">Choisissez le collaborateur concerné par cette période d'essai</option> |
|
||||||
<option *ngFor="let collaborateur of collaborateurs" |
|
||||||
[ngValue]="collaborateur.id">{{collaborateur.name}} {{collaborateur.firstName}}</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.collaborateurId.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.collaborateurId.errors.required">Vous devez choisir le collaborateur concerné par cette période |
|
||||||
d'essai |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de début</label> |
|
||||||
<input (change)="onStartingDateChange($event)" [ngClass]="{ 'is-invalid': submitted && form.startingDate.errors }" |
|
||||||
[value]="periodeEssai.startingDate | date:'yyyy-MM-dd'" |
|
||||||
class="form-control" formControlName="startingDate" |
|
||||||
type="date"> |
|
||||||
<div *ngIf="submitted && form.startingDate.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.startingDate.errors.required">La date de début d'une période d'essai est obligatoire</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de fin prévue</label> |
|
||||||
<input (change)="onPlannedEndingDateChange($event)" |
|
||||||
[ngClass]="{ 'is-invalid': submitted && form.plannedEndingDate.errors }" |
|
||||||
[value]="periodeEssai.plannedEndingDate | date:'yyyy-MM-dd'" |
|
||||||
class="form-control" |
|
||||||
formControlName="plannedEndingDate" |
|
||||||
type="date"> |
|
||||||
<div *ngIf="submitted && form.plannedEndingDate.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.plannedEndingDate.errors.required">La date de fin prévue d'une période d'essai est obligatoire |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de fin réelle</label> |
|
||||||
<input (change)="onRealEndingDateChange($event)" [value]="periodeEssai.realEndingDate | date:'yyyy-MM-dd'" |
|
||||||
class="form-control" |
|
||||||
formControlName="realEndingDate" type="date"> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3 mb-2"> |
|
||||||
<label class="form-label">Commentaire</label> |
|
||||||
<input class="form-control" formControlName="comment"> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3 mb-2"> |
|
||||||
<label class="form-label">Issue</label> |
|
||||||
<select class="form-select" formControlName="issue"> |
|
||||||
<option disabled selected value="">Statut</option> |
|
||||||
<option value="VALIDEE">Validée</option> |
|
||||||
<option value="PROLONGEE_COLLAB">Prolongée par le collaborateur</option> |
|
||||||
<option value="PROLONGEE_APSIDE">Prolongée par Apside</option> |
|
||||||
<option value="ARRETEE_COLLAB">Arrêtée par le collaborateur</option> |
|
||||||
<option value="ARRETEE_APSIDE">Arrêtée par Apside</option> |
|
||||||
<option value="INDETERMINEE">Indéterminée</option> |
|
||||||
</select> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div> |
|
||||||
<button type="submit">Sauvegarder les changements</button> |
|
||||||
<button type="button" (click)="delete()">Supprimer la période d'essai</button> |
|
||||||
<button type="reset">Effacer</button> |
|
||||||
<button type="button" (click)="goBack()">Retour</button> |
|
||||||
</div> |
|
||||||
|
|
||||||
</form> |
|
||||||
|
|
||||||
</div> |
|
@ -1,143 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {FormBuilder, FormGroup, Validators} from '@angular/forms'; |
|
||||||
import {PeriodeEssai} from "../../../interfaces/periode-essai"; |
|
||||||
import {Collaborateur} from "../../../interfaces/collaborateur"; |
|
||||||
import {CollaborateurService} from "../../../services/collaborateur.service"; |
|
||||||
import {PeriodeEssaiService} from "../../../services/periode-essai.service"; |
|
||||||
import {Observable} from "rxjs"; |
|
||||||
import {ActivatedRoute} from "@angular/router"; |
|
||||||
import {take, tap} from "rxjs/operators"; |
|
||||||
import {Location} from "@angular/common"; |
|
||||||
import {ToastrService} from "ngx-toastr"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-periode-essai-edit', |
|
||||||
templateUrl: './periode-essai-edit.component.html', |
|
||||||
styleUrls: ['./periode-essai-edit.component.scss'] |
|
||||||
}) |
|
||||||
export class PeriodeEssaiEditComponent implements OnInit { |
|
||||||
|
|
||||||
periodeEssaiObservable!: Observable<PeriodeEssai>; |
|
||||||
id: number; |
|
||||||
|
|
||||||
collaborateurs: Collaborateur[] = []; |
|
||||||
collaborateur = {} as Collaborateur; |
|
||||||
|
|
||||||
periodeEssais: PeriodeEssai[] = []; |
|
||||||
periodeEssai = {} as PeriodeEssai; |
|
||||||
|
|
||||||
registerForm!: FormGroup; |
|
||||||
submitted = false; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private route: ActivatedRoute, |
|
||||||
private location: Location, |
|
||||||
private collaborateurService: CollaborateurService, |
|
||||||
private periodeEssaiService: PeriodeEssaiService, |
|
||||||
private formBuilder: FormBuilder, |
|
||||||
private toastr: ToastrService |
|
||||||
) { |
|
||||||
this.id = Number(this.route.snapshot.paramMap.get('id')) |
|
||||||
} |
|
||||||
|
|
||||||
get form() { |
|
||||||
return this.registerForm.controls; |
|
||||||
} |
|
||||||
|
|
||||||
async ngOnInit() { |
|
||||||
this.initCollaborateurs(); |
|
||||||
this.initPeriodeEssais(); |
|
||||||
this.registerForm = this.formBuilder.group({ |
|
||||||
comment: [], |
|
||||||
collaborateurId: ['', Validators.required], |
|
||||||
issue: [], |
|
||||||
plannedEndingDate: ['', Validators.required], |
|
||||||
realEndingDate: [], |
|
||||||
startingDate: ['', Validators.required] |
|
||||||
}); |
|
||||||
this.periodeEssaiObservable = this.periodeEssaiService.getPeriodeEssai(this.id).pipe(tap(pe => this.registerForm.patchValue(pe))) |
|
||||||
this.periodeEssai = await this.periodeEssaiObservable.pipe(take(1)).toPromise() |
|
||||||
} |
|
||||||
|
|
||||||
initCollaborateurs(): void { |
|
||||||
this.collaborateurService.getCollaborateurs() |
|
||||||
.subscribe(collaborateurs => this.collaborateurs = collaborateurs); |
|
||||||
} |
|
||||||
|
|
||||||
initPeriodeEssais() { |
|
||||||
this.periodeEssaiService.getPeriodeEssais() |
|
||||||
.subscribe(periodeEssais => this.periodeEssais = periodeEssais); |
|
||||||
} |
|
||||||
|
|
||||||
goBack(): void { |
|
||||||
this.location.back(); |
|
||||||
} |
|
||||||
|
|
||||||
delete(): void { |
|
||||||
if (this.periodeEssai) { |
|
||||||
this.periodeEssaiService.deletePeriodeEssai(this.periodeEssai) |
|
||||||
.subscribe(() => this.goBack()); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
onSubmit() { |
|
||||||
this.submitted = true; |
|
||||||
|
|
||||||
if (this.registerForm.invalid) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
this.periodeEssai.comment = this.registerForm.value.comment; |
|
||||||
this.periodeEssai.collaborateurId = this.registerForm.value.collaborateurId; |
|
||||||
if (this.registerForm.value.issue == undefined) { |
|
||||||
this.periodeEssai.issue = "INDETERMINEE"; |
|
||||||
} else { |
|
||||||
this.periodeEssai.issue = this.registerForm.value.issue; |
|
||||||
} |
|
||||||
if (this.registerForm.value.realEndingDate == undefined || this.registerForm.value.realEndingDate === '') { |
|
||||||
this.periodeEssai.realEndingDate = null; |
|
||||||
} else { |
|
||||||
this.periodeEssai.realEndingDate = this.registerForm.value.realEndingDate; |
|
||||||
} |
|
||||||
this.periodeEssai.plannedEndingDate = this.registerForm.value.plannedEndingDate; |
|
||||||
this.periodeEssai.startingDate = this.registerForm.value.startingDate; |
|
||||||
|
|
||||||
if (this.periodeEssai) { |
|
||||||
this.periodeEssaiService.updatePeriodeEssai(this.periodeEssai) |
|
||||||
.subscribe(() => { |
|
||||||
this.showSuccess(); |
|
||||||
}, |
|
||||||
() => { |
|
||||||
this.showError() |
|
||||||
}); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
onReset() { |
|
||||||
this.submitted = false; |
|
||||||
this.registerForm.reset(); |
|
||||||
} |
|
||||||
|
|
||||||
onStartingDateChange($event: any): void { |
|
||||||
this.periodeEssai.startingDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
onPlannedEndingDateChange($event: any): void { |
|
||||||
this.periodeEssai.plannedEndingDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
onRealEndingDateChange($event: any): void { |
|
||||||
this.periodeEssai.realEndingDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
showSuccess() { |
|
||||||
this.toastr.success('Modification réussie', 'Période d\'essai'); |
|
||||||
} |
|
||||||
|
|
||||||
showError() { |
|
||||||
this.toastr.error('Modification échouée', 'Période d\'essai'); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
|
|
@ -1,41 +0,0 @@ |
|||||||
<div xmlns=""> |
|
||||||
|
|
||||||
<h2 *ngIf="isOld" class=mb-4>Périodes d'essai Passées</h2> |
|
||||||
<h2 *ngIf="!isOld" class=mb-4>Périodes d'essai En cours</h2> |
|
||||||
|
|
||||||
<div style="display: flex"> |
|
||||||
<p style="margin: 10px 0 10px 0">Pour ajouter une nouvelle période d'essai, cliquez ici : </p> |
|
||||||
<button routerLink="/periodeessais/add">Ajouter</button> |
|
||||||
</div> |
|
||||||
<br/><br/> |
|
||||||
|
|
||||||
<div style="display: flex"> |
|
||||||
<p *ngIf="!isOld" style="margin: 10px 0 10px 0">Pour voir les périodes d'essai passées, cliquez ici : </p> |
|
||||||
<p *ngIf="isOld" style="margin: 10px 0 10px 0">Pour voir les périodes d'essai en cours, cliquez ici :</p> |
|
||||||
<button (click)="onIsOldChange()">Changer</button> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="mb-5 col-12" style="overflow-x:auto;"> |
|
||||||
<table class="table"> |
|
||||||
<thead> |
|
||||||
<tr> |
|
||||||
<th scope="col">Collaborateur</th> |
|
||||||
<th scope="col">Date de début</th> |
|
||||||
<th scope="col">Date de fin prévue</th> |
|
||||||
<th scope="col">Issue</th> |
|
||||||
</tr> |
|
||||||
</thead> |
|
||||||
<tbody> |
|
||||||
<tr *ngFor="let periodeEssai of periodeEssais"> |
|
||||||
<th |
|
||||||
scope="row">{{getCollaborateurById(periodeEssai.collaborateurId).name}} {{getCollaborateurById(periodeEssai.collaborateurId).firstName}}</th> |
|
||||||
<td> {{getSplitDate(periodeEssai.startingDate.toString())}}</td> |
|
||||||
<th> {{getSplitDate(periodeEssai.plannedEndingDate.toString())}}</th> |
|
||||||
<td> {{periodeEssai.issue}}</td> |
|
||||||
<td><a routerLink="{{periodeEssai.id}}"> Modifier </a></td> |
|
||||||
</tr> |
|
||||||
</tbody> |
|
||||||
</table> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
@ -1,89 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {PeriodeEssai} from "../../interfaces/periode-essai"; |
|
||||||
import {Collaborateur} from "../../interfaces/collaborateur"; |
|
||||||
import {CollaborateurService} from "../../services/collaborateur.service"; |
|
||||||
import {PeriodeEssaiService} from "../../services/periode-essai.service"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-periode-essai', |
|
||||||
templateUrl: './periode-essai.component.html', |
|
||||||
styleUrls: ['./periode-essai.component.scss'] |
|
||||||
}) |
|
||||||
export class PeriodeEssaiComponent implements OnInit { |
|
||||||
|
|
||||||
collaborateurs: Collaborateur[] = []; |
|
||||||
periodeEssais: PeriodeEssai[] = []; |
|
||||||
|
|
||||||
periodeEssaisEnCours: PeriodeEssai[] = []; |
|
||||||
periodeEssaisPassees: PeriodeEssai[] = []; |
|
||||||
|
|
||||||
isOld: boolean = false; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
private collaborateurService: CollaborateurService, |
|
||||||
private periodeEssaiService: PeriodeEssaiService, |
|
||||||
) { |
|
||||||
} |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.initCollaborateurs(); |
|
||||||
this.initPeriodeEssais(); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
onIsOldChange() { |
|
||||||
this.isOld = !this.isOld; |
|
||||||
this.definePeriodeEssais(); |
|
||||||
} |
|
||||||
|
|
||||||
definePeriodeEssais() { |
|
||||||
if (this.isOld) { |
|
||||||
this.periodeEssais = this.periodeEssaisPassees; |
|
||||||
} else { |
|
||||||
this.periodeEssais = this.periodeEssaisEnCours; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
initCollaborateurs(): void { |
|
||||||
this.collaborateurService.getCollaborateurs() |
|
||||||
.subscribe(collaborateurs => this.collaborateurs = collaborateurs); |
|
||||||
} |
|
||||||
|
|
||||||
getCollaborateurById(id: number): Collaborateur { |
|
||||||
let collab = {} as Collaborateur; |
|
||||||
this.collaborateurs.forEach(c => { |
|
||||||
if (c.id === id) { |
|
||||||
collab = c; |
|
||||||
return; |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
return collab; |
|
||||||
} |
|
||||||
|
|
||||||
initPeriodeEssais() { |
|
||||||
this.periodeEssaiService.getPeriodeEssais() |
|
||||||
.subscribe(periodeEssais => { |
|
||||||
periodeEssais.forEach(pe => { |
|
||||||
if (new Date(pe.plannedEndingDate).getTime() > new Date().getTime()) { |
|
||||||
this.periodeEssaisEnCours.push(pe); |
|
||||||
} else { |
|
||||||
this.periodeEssaisPassees.push(pe); |
|
||||||
} |
|
||||||
}) |
|
||||||
this.periodeEssaisEnCours.sort((b, a) => new Date(b.plannedEndingDate).getTime() - new Date(a.plannedEndingDate).getTime()); |
|
||||||
this.periodeEssaisPassees.sort((a, b) => new Date(b.plannedEndingDate).getTime() - new Date(a.plannedEndingDate).getTime()); |
|
||||||
this.definePeriodeEssais(); |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
getSplitDate(date: string | undefined): string { |
|
||||||
if (date == undefined) { |
|
||||||
return ""; |
|
||||||
} |
|
||||||
return date.split('T')[0]; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,59 +0,0 @@ |
|||||||
<h3>Ajouter un référencement : </h3> |
|
||||||
|
|
||||||
<form (ngSubmit)="onSubmit()" [formGroup]="registerForm"> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de début</label> |
|
||||||
<input (change)="onStartingDateChange($event)" [ngClass]="{ 'is-invalid': submitted && form.startingDate.errors }" |
|
||||||
class="form-control" |
|
||||||
formControlName="startingDate" |
|
||||||
type="date"> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de fin</label> |
|
||||||
<input (change)="onEndingDateChange($event)" [ngClass]="{ 'is-invalid': submitted && form.endingDate.errors }" |
|
||||||
class="form-control" |
|
||||||
formControlName="endingDate" |
|
||||||
type="date"> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-md-6"> |
|
||||||
<label class="form-label">Référent</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.referrerId.errors }" class="form-select" |
|
||||||
formControlName="referrerId"> |
|
||||||
<option disabled selected value="">Choisissez le référent du référencement</option> |
|
||||||
<option *ngFor="let collaborateur of collaborateurs" |
|
||||||
[ngValue]="collaborateur.id">{{collaborateur.name}} {{collaborateur.firstName}}</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.referrerId.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.referrerId.errors.required">Vous devez préciser le référent du référencement</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-md-6"> |
|
||||||
<label class="form-label">Référé</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.referredId.errors }" class="form-select" |
|
||||||
formControlName="referredId"> |
|
||||||
<option disabled selected value="">Choisissez le référé du référencement</option> |
|
||||||
<option *ngFor="let collaborateur of collaborateurs" |
|
||||||
[ngValue]="collaborateur.id">{{collaborateur.name}} {{collaborateur.firstName}}</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.referredId.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.referredId.errors.required">Vous devez préciser le référent du référencement</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div> |
|
||||||
<button type="submit">Ajouter le référencement</button> |
|
||||||
<button type="reset">Effacer</button> |
|
||||||
</div> |
|
||||||
</form> |
|
@ -1,99 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Collaborateur} from "../../../interfaces/collaborateur"; |
|
||||||
import {FormBuilder, FormGroup, Validators} from "@angular/forms"; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {CollaborateurService} from "../../../services/collaborateur.service"; |
|
||||||
import {ToastrService} from "ngx-toastr"; |
|
||||||
import {ReferencementService} from "../../../services/referencement.service"; |
|
||||||
import {Referencement} from "../../../interfaces/referencement"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-referencement-add', |
|
||||||
templateUrl: './referencement-add.component.html', |
|
||||||
styleUrls: ['./referencement-add.component.scss'] |
|
||||||
}) |
|
||||||
export class ReferencementAddComponent implements OnInit { |
|
||||||
|
|
||||||
collaborateurs: Collaborateur[] = []; |
|
||||||
collaborateur = {} as Collaborateur; |
|
||||||
referencement = {} as Referencement; |
|
||||||
|
|
||||||
errorValue: number = 0; |
|
||||||
rDate: String = ""; |
|
||||||
bDate: String = ""; |
|
||||||
|
|
||||||
registerForm!: FormGroup; |
|
||||||
submitted = false; |
|
||||||
|
|
||||||
constructor(private http: HttpClient, |
|
||||||
private referencementService: ReferencementService, |
|
||||||
private collaborateurService: CollaborateurService, |
|
||||||
private formBuilder: FormBuilder, |
|
||||||
private toastr: ToastrService) { |
|
||||||
} |
|
||||||
|
|
||||||
get form() { |
|
||||||
return this.registerForm.controls; |
|
||||||
} |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.initCollaborateurs(); |
|
||||||
this.registerForm = this.formBuilder.group({ |
|
||||||
referredId: ['', Validators.required], |
|
||||||
referrerId: ['', Validators.required], |
|
||||||
startingDate: ['', Validators.required], |
|
||||||
endingDate: [], |
|
||||||
}); |
|
||||||
if (this.referencement.startingDate) { |
|
||||||
this.rDate = new Date(this.collaborateur.resignationDate).toISOString().split('T')[0]; |
|
||||||
} |
|
||||||
if (this.referencement.endingDate) { |
|
||||||
this.bDate = new Date(this.collaborateur.birthDate).toISOString().split('T')[0]; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
initCollaborateurs(): void { |
|
||||||
this.collaborateurService.getCollaborateurs() |
|
||||||
.subscribe(collaborateurs => this.collaborateurs = collaborateurs); |
|
||||||
} |
|
||||||
|
|
||||||
onSubmit() { |
|
||||||
this.submitted = true; |
|
||||||
if (this.registerForm.invalid) { |
|
||||||
return; |
|
||||||
} |
|
||||||
this.referencement = this.registerForm.value |
|
||||||
if (this.referencement) { |
|
||||||
this.referencementService.addReferencement(this.referencement).subscribe(() => { |
|
||||||
this.showSuccess(); |
|
||||||
}, |
|
||||||
() => { |
|
||||||
this.showError() |
|
||||||
}) |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
onReset() { |
|
||||||
this.submitted = false; |
|
||||||
this.registerForm.reset(); |
|
||||||
} |
|
||||||
|
|
||||||
onStartingDateChange($event: any): void { |
|
||||||
this.collaborateur.resignationDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
onEndingDateChange($event: any): void { |
|
||||||
this.collaborateur.birthDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
showSuccess() { |
|
||||||
this.toastr.success('Création réussie', 'Référencement'); |
|
||||||
} |
|
||||||
|
|
||||||
showError() { |
|
||||||
this.toastr.error('Création échouée', 'Référencement'); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
@ -1,63 +0,0 @@ |
|||||||
<h3>Modifier un référencement : </h3> |
|
||||||
|
|
||||||
<form (ngSubmit)="onSubmit()" [formGroup]="registerForm"> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de début</label> |
|
||||||
<input (change)="onStartingDateChange($event)" [ngClass]="{ 'is-invalid': submitted && form.startingDate.errors }" |
|
||||||
[value]="referencement.startingDate | date:'yyyy-MM-dd'" |
|
||||||
class="form-control" |
|
||||||
formControlName="startingDate" |
|
||||||
type="date"> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3"> |
|
||||||
<label class="form-label">Date de fin</label> |
|
||||||
<input (change)="onEndingDateChange($event)" [ngClass]="{ 'is-invalid': submitted && form.endingDate.errors }" |
|
||||||
[value]="referencement.endingDate | date:'yyyy-MM-dd'" |
|
||||||
class="form-control" |
|
||||||
formControlName="endingDate" |
|
||||||
type="date"> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="row mb-2"> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-md-6"> |
|
||||||
<label class="form-label">Référent</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.referrerId.errors }" class="form-select" |
|
||||||
formControlName="referrerId"> |
|
||||||
<option disabled selected value="">Choisissez le référent du référencement</option> |
|
||||||
<option *ngFor="let collaborateur of collaborateurs" |
|
||||||
[ngValue]="collaborateur.id">{{collaborateur.name}} {{collaborateur.firstName}}</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.referrerId.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.referrerId.errors.required">Vous devez préciser le référent du référencement</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="form-group col-12 col-md-6"> |
|
||||||
<label class="form-label">Référé</label> |
|
||||||
<select [ngClass]="{ 'is-invalid': submitted && form.referredId.errors }" class="form-select" |
|
||||||
formControlName="referredId"> |
|
||||||
<option disabled selected value="">Choisissez le référé du référencement</option> |
|
||||||
<option *ngFor="let collaborateur of collaborateurs" |
|
||||||
[ngValue]="collaborateur.id">{{collaborateur.name}} {{collaborateur.firstName}}</option> |
|
||||||
</select> |
|
||||||
<div *ngIf="submitted && form.referredId.errors" class="invalid-feedback"> |
|
||||||
<div *ngIf="form.referredId.errors.required">Vous devez préciser le référent du référencement</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div> |
|
||||||
<button type="submit">Sauvegarder les changements</button> |
|
||||||
<button type="button" (click)="delete()">Supprimer le référencement</button> |
|
||||||
<button type="reset">Effacer</button> |
|
||||||
<button type="button" (click)="goBack()">Retour</button> |
|
||||||
</div> |
|
||||||
</form> |
|
@ -1,125 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {Collaborateur} from "../../../interfaces/collaborateur"; |
|
||||||
import {Referencement} from "../../../interfaces/referencement"; |
|
||||||
import {FormBuilder, FormGroup, Validators} from "@angular/forms"; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {ReferencementService} from "../../../services/referencement.service"; |
|
||||||
import {CollaborateurService} from "../../../services/collaborateur.service"; |
|
||||||
import {ToastrService} from "ngx-toastr"; |
|
||||||
import {Location} from "@angular/common"; |
|
||||||
import {ActivatedRoute} from "@angular/router"; |
|
||||||
import {Observable} from "rxjs"; |
|
||||||
import {take, tap} from "rxjs/operators"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-referencement-edit', |
|
||||||
templateUrl: './referencement-edit.component.html', |
|
||||||
styleUrls: ['./referencement-edit.component.scss'] |
|
||||||
}) |
|
||||||
export class ReferencementEditComponent implements OnInit { |
|
||||||
|
|
||||||
referencementObservable!: Observable<Referencement>; |
|
||||||
id: number; |
|
||||||
|
|
||||||
collaborateurs: Collaborateur[] = []; |
|
||||||
|
|
||||||
referencement = {} as Referencement; |
|
||||||
|
|
||||||
errorValue: number = 0; |
|
||||||
|
|
||||||
registerForm!: FormGroup; |
|
||||||
submitted = false; |
|
||||||
|
|
||||||
constructor(private http: HttpClient, |
|
||||||
private referencementService: ReferencementService, |
|
||||||
private collaborateurService: CollaborateurService, |
|
||||||
private formBuilder: FormBuilder, |
|
||||||
private location: Location, |
|
||||||
private route: ActivatedRoute, |
|
||||||
private toastr: ToastrService) { |
|
||||||
this.id = Number(this.route.snapshot.paramMap.get('id')) |
|
||||||
} |
|
||||||
|
|
||||||
get form() { |
|
||||||
return this.registerForm.controls; |
|
||||||
} |
|
||||||
|
|
||||||
async ngOnInit() { |
|
||||||
this.initCollaborateurs(); |
|
||||||
this.registerForm = this.formBuilder.group({ |
|
||||||
referredId: ['', Validators.required], |
|
||||||
referrerId: ['', Validators.required], |
|
||||||
startingDate: ['', Validators.required], |
|
||||||
endingDate: [], |
|
||||||
}); |
|
||||||
|
|
||||||
this.referencementObservable = this.referencementService.getReferencement(this.id).pipe(tap(ref => this.registerForm.patchValue(ref))) |
|
||||||
this.referencement = await this.referencementObservable.pipe(take(1)).toPromise() |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
initCollaborateurs(): void { |
|
||||||
this.collaborateurService.getCollaborateurs() |
|
||||||
.subscribe(collaborateurs => this.collaborateurs = collaborateurs); |
|
||||||
} |
|
||||||
|
|
||||||
onSubmit() { |
|
||||||
this.submitted = true; |
|
||||||
if (this.registerForm.invalid) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
this.referencement.referredId = this.registerForm.value.referredId; |
|
||||||
this.referencement.referrerId = this.registerForm.value.referrerId; |
|
||||||
this.referencement.startingDate = this.registerForm.value.startingDate; |
|
||||||
|
|
||||||
if (this.registerForm.value.endingDate == undefined || this.registerForm.value.endingDate === '') { |
|
||||||
this.referencement.endingDate = null; |
|
||||||
} else { |
|
||||||
this.referencement.endingDate = this.registerForm.value.endingDate; |
|
||||||
} |
|
||||||
|
|
||||||
if (this.referencement) { |
|
||||||
this.referencementService.updateReferencement(this.referencement).subscribe(() => { |
|
||||||
this.showSuccess(); |
|
||||||
}, |
|
||||||
() => { |
|
||||||
this.showError() |
|
||||||
}) |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
onReset() { |
|
||||||
this.submitted = false; |
|
||||||
this.registerForm.reset(); |
|
||||||
} |
|
||||||
|
|
||||||
onStartingDateChange($event: any): void { |
|
||||||
this.referencement.startingDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
onEndingDateChange($event: any): void { |
|
||||||
this.referencement.endingDate = new Date($event.target.value); |
|
||||||
} |
|
||||||
|
|
||||||
showSuccess() { |
|
||||||
this.toastr.success('Modification réussie', 'Référencement'); |
|
||||||
} |
|
||||||
|
|
||||||
showError() { |
|
||||||
this.toastr.error('Modification échouée', 'Référencement'); |
|
||||||
} |
|
||||||
|
|
||||||
goBack(): void { |
|
||||||
this.location.back(); |
|
||||||
} |
|
||||||
|
|
||||||
delete(): void { |
|
||||||
if (this.referencement) { |
|
||||||
this.referencementService.deleteReferencement(this.referencement) |
|
||||||
.subscribe(() => this.goBack()); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,61 +0,0 @@ |
|||||||
<div> |
|
||||||
|
|
||||||
<h2 *ngIf="!isOld" class=mb-4>Collaborateurs sans référencement</h2> |
|
||||||
<h2 *ngIf="isOld" class=mb-4>Référencements</h2> |
|
||||||
<div style="display: flex"> |
|
||||||
<p style="margin: 10px 0 10px 0">Pour ajouter un nouveau référencement, cliquez ici : </p> |
|
||||||
<button routerLink="/referencements/add">Ajouter</button> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div style="display: flex"> |
|
||||||
<p *ngIf="isOld" style="margin: 10px 0 10px 0">Pour voir les collaborateurs sans référencement, cliquez ici : </p> |
|
||||||
<p *ngIf="!isOld" style="margin: 10px 0 10px 0">Pour voir les référencements, cliquez ici :</p> |
|
||||||
<button (click)="isOldReverse()">Changer</button> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div *ngIf="!isOld" class="mb-5 col-12" style="overflow-x:auto;"> |
|
||||||
<table class="table"> |
|
||||||
<thead> |
|
||||||
<tr> |
|
||||||
<th scope="col">Nom</th> |
|
||||||
<th scope="col">Prénom</th> |
|
||||||
<th scope="col">Mail Apside</th> |
|
||||||
</tr> |
|
||||||
</thead> |
|
||||||
|
|
||||||
<tbody> |
|
||||||
<tr *ngFor="let collaborateur of collaborateursSansRef"> |
|
||||||
<th scope="row">{{collaborateur.name}}</th> |
|
||||||
<td> {{collaborateur.firstName}} </td> |
|
||||||
<td> {{collaborateur.apsideMail}} </td> |
|
||||||
</tr> |
|
||||||
</tbody> |
|
||||||
</table> |
|
||||||
</div> |
|
||||||
|
|
||||||
|
|
||||||
<div *ngIf="isOld" class="mb-5 col-12" style="overflow-x:auto;"> |
|
||||||
<table class="table"> |
|
||||||
<thead> |
|
||||||
<tr> |
|
||||||
<th scope="col">Référent</th> |
|
||||||
<th scope="col">Référé</th> |
|
||||||
<th scope="col">Date de début</th> |
|
||||||
<th scope="col">Date de fin</th> |
|
||||||
</tr> |
|
||||||
</thead> |
|
||||||
|
|
||||||
<tbody> |
|
||||||
<tr *ngFor="let referencement of referencements"> |
|
||||||
<td> {{getCollaborateurById(referencement.referrerId).name}} {{getCollaborateurById(referencement.referrerId).firstName}}</td> |
|
||||||
<td> {{getCollaborateurById(referencement.referredId).name}} {{getCollaborateurById(referencement.referredId).firstName}} </td> |
|
||||||
<td> {{getSplitDate(referencement.startingDate.toString())}} </td> |
|
||||||
<td> {{getSplitDate(referencement.endingDate?.toString())}} </td> |
|
||||||
<td><a routerLink="{{referencement.id}}"> Modifier </a></td> |
|
||||||
</tr> |
|
||||||
</tbody> |
|
||||||
</table> |
|
||||||
</div> |
|
||||||
|
|
||||||
|
|
||||||
</div> |
|
@ -1,79 +0,0 @@ |
|||||||
import {Component, OnInit} from '@angular/core'; |
|
||||||
import {HttpClient} from "@angular/common/http"; |
|
||||||
import {ReferencementService} from "../../services/referencement.service"; |
|
||||||
import {Referencement} from "../../interfaces/referencement"; |
|
||||||
import {CollaborateurService} from "../../services/collaborateur.service"; |
|
||||||
import {Collaborateur} from "../../interfaces/collaborateur"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: 'app-referencement', |
|
||||||
templateUrl: './referencement.component.html', |
|
||||||
styleUrls: ['./referencement.component.scss'] |
|
||||||
}) |
|
||||||
export class ReferencementComponent implements OnInit { |
|
||||||
|
|
||||||
referencements: Referencement[] = []; |
|
||||||
collaborateurs: Collaborateur[] = []; |
|
||||||
collaborateursSansRef: Collaborateur[] = []; |
|
||||||
idReferredTab: number[] = []; |
|
||||||
isOld: boolean = false; |
|
||||||
|
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
private referencementService: ReferencementService, |
|
||||||
private collaborateurService: CollaborateurService, |
|
||||||
) { |
|
||||||
} |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
|
|
||||||
this.collaborateurService.getCollaborateurs() |
|
||||||
.subscribe(collaborateurs => { |
|
||||||
this.collaborateurs = collaborateurs; |
|
||||||
|
|
||||||
this.referencementService.getReferencements() |
|
||||||
.subscribe(referencements => { |
|
||||||
|
|
||||||
this.referencements = referencements; |
|
||||||
this.referencements.forEach(ref => { |
|
||||||
|
|
||||||
if (this.idReferredTab.find(id => ref.id === id) == undefined) { |
|
||||||
this.idReferredTab.push(ref.referredId); |
|
||||||
} |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
this.collaborateurs.forEach(collab => { |
|
||||||
if (this.idReferredTab.find(id => collab.id === id) == undefined) { |
|
||||||
this.collaborateursSansRef.push(collab); |
|
||||||
} |
|
||||||
}) |
|
||||||
}); |
|
||||||
}); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
isOldReverse() { |
|
||||||
this.isOld = !this.isOld; |
|
||||||
} |
|
||||||
|
|
||||||
getCollaborateurById(id: number): Collaborateur { |
|
||||||
let collab = {} as Collaborateur; |
|
||||||
this.collaborateurs.forEach(c => { |
|
||||||
if (c.id === id) { |
|
||||||
collab = c; |
|
||||||
return; |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
return collab; |
|
||||||
} |
|
||||||
|
|
||||||
getSplitDate(date: string | undefined): string { |
|
||||||
if (date == undefined) { |
|
||||||
return ""; |
|
||||||
} |
|
||||||
return date.split('T')[0]; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,5 +0,0 @@ |
|||||||
export interface Agence { |
|
||||||
name: string; |
|
||||||
id: number; |
|
||||||
businessUnitId: number; |
|
||||||
} |
|
@ -1,4 +0,0 @@ |
|||||||
export interface Businessunit { |
|
||||||
name: string; |
|
||||||
id: number; |
|
||||||
} |
|
@ -1,15 +0,0 @@ |
|||||||
export interface Collaborateur { |
|
||||||
name: string; |
|
||||||
firstName: string; |
|
||||||
birthDate: Date; |
|
||||||
gender: string; |
|
||||||
status: string; |
|
||||||
childrenNumber: number; |
|
||||||
address: string; |
|
||||||
telephone: string; |
|
||||||
personalMail: string; |
|
||||||
apsideMail: string; |
|
||||||
resignationDate: Date; |
|
||||||
businessUnitId: number; |
|
||||||
id: number; |
|
||||||
} |
|
@ -1,9 +0,0 @@ |
|||||||
export interface PeriodeEssai { |
|
||||||
id: number; |
|
||||||
collaborateurId: number; |
|
||||||
startingDate: Date; |
|
||||||
plannedEndingDate: Date; |
|
||||||
realEndingDate: Date | null; |
|
||||||
comment: string; |
|
||||||
issue: string; |
|
||||||
} |
|
@ -1,7 +0,0 @@ |
|||||||
export interface Referencement { |
|
||||||
id: number; |
|
||||||
startingDate: Date; |
|
||||||
endingDate: Date | null; |
|
||||||
referredId: number; |
|
||||||
referrerId: number; |
|
||||||
} |
|
@ -1,36 +0,0 @@ |
|||||||
import {Injectable} from '@angular/core'; |
|
||||||
import {HttpClient, HttpHeaders} from "@angular/common/http"; |
|
||||||
import {Observable} from "rxjs"; |
|
||||||
import {Agence} from "../interfaces/agence"; |
|
||||||
import {agencesUrl} from "../../ressources/routes/routesPreprod"; |
|
||||||
|
|
||||||
@Injectable({ |
|
||||||
providedIn: 'root' |
|
||||||
}) |
|
||||||
export class AgenceService { |
|
||||||
httpOptions = { |
|
||||||
headers: new HttpHeaders({'Content-Type': 'application/json'}) |
|
||||||
}; |
|
||||||
private agencesUrl = agencesUrl; |
|
||||||
|
|
||||||
constructor(private http: HttpClient) { |
|
||||||
} |
|
||||||
|
|
||||||
getAgences(): Observable<Agence[]> { |
|
||||||
return this.http.get<Agence[]>(this.agencesUrl); |
|
||||||
} |
|
||||||
|
|
||||||
getAgence(id: number): Observable<Agence> { |
|
||||||
return this.http.get<Agence>(this.agencesUrl + "/" + id); |
|
||||||
} |
|
||||||
|
|
||||||
updateAgence(agence: Agence): Observable<Agence> { |
|
||||||
let body = JSON.stringify(agence); |
|
||||||
return this.http.put<Agence>(this.agencesUrl + "/" + agence.id, body, this.httpOptions); |
|
||||||
} |
|
||||||
|
|
||||||
addAgence(agence: Agence): Observable<Agence> { |
|
||||||
let body = JSON.stringify(agence); |
|
||||||
return this.http.post<Agence>(this.agencesUrl, body, this.httpOptions); |
|
||||||
} |
|
||||||
} |
|
@ -1,36 +0,0 @@ |
|||||||
import {Injectable} from '@angular/core'; |
|
||||||
import {HttpClient, HttpHeaders} from "@angular/common/http"; |
|
||||||
import {Observable} from "rxjs"; |
|
||||||
import {Businessunit} from "../interfaces/businessunit"; |
|
||||||
import {businessunitsUrl} from "../../ressources/routes/routesPreprod"; |
|
||||||
|
|
||||||
@Injectable({ |
|
||||||
providedIn: 'root' |
|
||||||
}) |
|
||||||
export class BusinessunitService { |
|
||||||
httpOptions = { |
|
||||||
headers: new HttpHeaders({'Content-Type': 'application/json'}) |
|
||||||
}; |
|
||||||
private businessunitsUrl = businessunitsUrl; |
|
||||||
|
|
||||||
constructor(private http: HttpClient) { |
|
||||||
} |
|
||||||
|
|
||||||
getBusinessunits(): Observable<Businessunit[]> { |
|
||||||
return this.http.get<Businessunit[]>(this.businessunitsUrl); |
|
||||||
} |
|
||||||
|
|
||||||
getBusinessunit(id: number): Observable<Businessunit> { |
|
||||||
return this.http.get<Businessunit>(this.businessunitsUrl + "/" + id); |
|
||||||
} |
|
||||||
|
|
||||||
updateBusinessunit(businessunit: Businessunit, id: number): Observable<Businessunit> { |
|
||||||
let body = JSON.stringify(businessunit); |
|
||||||
return this.http.put<Businessunit>(this.businessunitsUrl + "/" + id, body, this.httpOptions); |
|
||||||
} |
|
||||||
|
|
||||||
addBusinessunit(businessunit: Businessunit): Observable<Businessunit> { |
|
||||||
let body = JSON.stringify(businessunit); |
|
||||||
return this.http.post<Businessunit>(this.businessunitsUrl, body, this.httpOptions); |
|
||||||
} |
|
||||||
} |
|
@ -1,42 +0,0 @@ |
|||||||
import {Collaborateur} from "../interfaces/collaborateur"; |
|
||||||
import {Injectable} from '@angular/core'; |
|
||||||
import {Observable} from "rxjs"; |
|
||||||
import {HttpClient, HttpHeaders} from "@angular/common/http"; |
|
||||||
import {collaborateursUrl} from "../../ressources/routes/routesPreprod"; |
|
||||||
|
|
||||||
|
|
||||||
@Injectable({providedIn: 'root'}) |
|
||||||
|
|
||||||
export class CollaborateurService { |
|
||||||
|
|
||||||
httpOptions = { |
|
||||||
headers: new HttpHeaders({'Content-Type': 'application/json'}) |
|
||||||
}; |
|
||||||
private collaborateursUrl = collaborateursUrl; |
|
||||||
|
|
||||||
constructor(private http: HttpClient) { |
|
||||||
} |
|
||||||
|
|
||||||
getCollaborateurs(): Observable<Collaborateur[]> { |
|
||||||
return this.http.get<Collaborateur[]>(this.collaborateursUrl); |
|
||||||
} |
|
||||||
|
|
||||||
getCollaborateur(id: number): Observable<Collaborateur> { |
|
||||||
return this.http.get<Collaborateur>(this.collaborateursUrl + "/" + id); |
|
||||||
} |
|
||||||
|
|
||||||
updateCollaborateur(collaborateur: Collaborateur): Observable<Collaborateur> { |
|
||||||
let body = JSON.stringify(collaborateur); |
|
||||||
return this.http.put<Collaborateur>(this.collaborateursUrl + "/" + collaborateur.id, body, this.httpOptions); |
|
||||||
} |
|
||||||
|
|
||||||
deleteCollaborateur(collaborateur: Collaborateur) { |
|
||||||
return this.http.delete(this.collaborateursUrl + "/" + collaborateur.id); |
|
||||||
} |
|
||||||
|
|
||||||
addCollaborateur(collaborateur: Collaborateur): Observable<Collaborateur> { |
|
||||||
let body = JSON.stringify(collaborateur); |
|
||||||
return this.http.post<Collaborateur>(this.collaborateursUrl, body, this.httpOptions); |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
@ -1,41 +0,0 @@ |
|||||||
import {Injectable} from '@angular/core'; |
|
||||||
import {HttpClient, HttpHeaders} from "@angular/common/http"; |
|
||||||
import {Observable} from "rxjs"; |
|
||||||
import {periodeessaisUrl} from "../../ressources/routes/routesPreprod"; |
|
||||||
import {PeriodeEssai} from "../interfaces/periode-essai"; |
|
||||||
|
|
||||||
|
|
||||||
@Injectable({ |
|
||||||
providedIn: 'root' |
|
||||||
}) |
|
||||||
export class PeriodeEssaiService { |
|
||||||
httpOptions = { |
|
||||||
headers: new HttpHeaders({'Content-Type': 'application/json'}) |
|
||||||
}; |
|
||||||
private periodeessaisUrl = periodeessaisUrl; |
|
||||||
|
|
||||||
constructor(private http: HttpClient) { |
|
||||||
} |
|
||||||
|
|
||||||
getPeriodeEssais(): Observable<PeriodeEssai[]> { |
|
||||||
return this.http.get<PeriodeEssai[]>(this.periodeessaisUrl); |
|
||||||
} |
|
||||||
|
|
||||||
getPeriodeEssai(id: number): Observable<PeriodeEssai> { |
|
||||||
return this.http.get<PeriodeEssai>(this.periodeessaisUrl + "/" + id); |
|
||||||
} |
|
||||||
|
|
||||||
updatePeriodeEssai(periodeEssai: PeriodeEssai): Observable<PeriodeEssai> { |
|
||||||
let body = JSON.stringify(periodeEssai); |
|
||||||
return this.http.put<PeriodeEssai>(this.periodeessaisUrl + "/" + periodeEssai.id, body, this.httpOptions); |
|
||||||
} |
|
||||||
|
|
||||||
deletePeriodeEssai(periodeEssai: PeriodeEssai) { |
|
||||||
return this.http.delete(this.periodeessaisUrl + "/" + periodeEssai.id); |
|
||||||
} |
|
||||||
|
|
||||||
addPeriodeEssai(periodeEssai: PeriodeEssai): Observable<PeriodeEssai> { |
|
||||||
let body = JSON.stringify(periodeEssai); |
|
||||||
return this.http.post<PeriodeEssai>(this.periodeessaisUrl, body, this.httpOptions); |
|
||||||
} |
|
||||||
} |
|
@ -1,43 +0,0 @@ |
|||||||
import {Referencement} from "../interfaces/referencement"; |
|
||||||
import {Injectable} from '@angular/core'; |
|
||||||
import {Observable} from "rxjs"; |
|
||||||
import {HttpClient, HttpHeaders} from "@angular/common/http"; |
|
||||||
import {referencementsUrl} from "../../ressources/routes/routesPreprod"; |
|
||||||
|
|
||||||
|
|
||||||
@Injectable({providedIn: 'root'}) |
|
||||||
|
|
||||||
export class ReferencementService { |
|
||||||
|
|
||||||
httpOptions = { |
|
||||||
headers: new HttpHeaders({'Content-Type': 'application/json'}) |
|
||||||
}; |
|
||||||
private referencementsUrl = referencementsUrl; |
|
||||||
|
|
||||||
constructor(private http: HttpClient) { |
|
||||||
} |
|
||||||
|
|
||||||
getReferencements(): Observable<Referencement[]> { |
|
||||||
return this.http.get<Referencement[]>(this.referencementsUrl); |
|
||||||
} |
|
||||||
|
|
||||||
getReferencement(id: number): Observable<Referencement> { |
|
||||||
return this.http.get<Referencement>(this.referencementsUrl + "/" + id); |
|
||||||
} |
|
||||||
|
|
||||||
updateReferencement(referencement: Referencement): Observable<Referencement> { |
|
||||||
let body = JSON.stringify(referencement); |
|
||||||
return this.http.put<Referencement>(this.referencementsUrl + "/" + referencement.id, body, this.httpOptions); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
deleteReferencement(referencement: Referencement) { |
|
||||||
return this.http.delete(this.referencementsUrl + "/" + referencement.id); |
|
||||||
} |
|
||||||
|
|
||||||
addReferencement(referencement: Referencement): Observable<Referencement> { |
|
||||||
let body = JSON.stringify(referencement); |
|
||||||
return this.http.post<Referencement>(this.referencementsUrl, body, this.httpOptions); |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
@ -1,3 +0,0 @@ |
|||||||
export const environment = { |
|
||||||
production: true |
|
||||||
}; |
|
@ -1,16 +0,0 @@ |
|||||||
// This file can be replaced during build by using the `fileReplacements` array.
|
|
||||||
// `ng build` replaces `environment.ts` with `environment.prod.ts`.
|
|
||||||
// The list of file replacements can be found in `angular.json`.
|
|
||||||
|
|
||||||
export const environment = { |
|
||||||
production: false |
|
||||||
}; |
|
||||||
|
|
||||||
/* |
|
||||||
* For easier debugging in development mode, you can import the following file |
|
||||||
* to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. |
|
||||||
* |
|
||||||
* This import should be commented out in production mode because it will have a negative impact |
|
||||||
* on performance if an error is thrown. |
|
||||||
*/ |
|
||||||
// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.
|
|
@ -1,18 +0,0 @@ |
|||||||
<!doctype html> |
|
||||||
<html lang="en"> |
|
||||||
<head> |
|
||||||
<meta charset="utf-8"> |
|
||||||
<title>Services Collaborateurs</title> |
|
||||||
<base href="/"> |
|
||||||
<meta content="width=device-width, initial-scale=1" name="viewport"> |
|
||||||
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script> |
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script> |
|
||||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> |
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com"> |
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet"> |
|
||||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> |
|
||||||
</head> |
|
||||||
<body> |
|
||||||
<app-root></app-root> |
|
||||||
</body> |
|
||||||
</html> |
|
@ -1,12 +0,0 @@ |
|||||||
import {enableProdMode} from '@angular/core'; |
|
||||||
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; |
|
||||||
|
|
||||||
import {AppModule} from './app/app.module'; |
|
||||||
import {environment} from './environments/environment'; |
|
||||||
|
|
||||||
if (environment.production) { |
|
||||||
enableProdMode(); |
|
||||||
} |
|
||||||
|
|
||||||
platformBrowserDynamic().bootstrapModule(AppModule) |
|
||||||
.catch(err => console.error(err)); |
|
@ -1,69 +0,0 @@ |
|||||||
/*************************************************************************************************** |
|
||||||
* Load `$localize` onto the global scope - used if i18n tags appear in Angular templates. |
|
||||||
*/ |
|
||||||
import '@angular/localize/init'; |
|
||||||
/** |
|
||||||
* This file includes polyfills needed by Angular and is loaded before the app. |
|
||||||
* You can add your own extra polyfills to this file. |
|
||||||
* |
|
||||||
* This file is divided into 2 sections: |
|
||||||
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. |
|
||||||
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main |
|
||||||
* file. |
|
||||||
* |
|
||||||
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that |
|
||||||
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), |
|
||||||
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. |
|
||||||
* |
|
||||||
* Learn more in https://angular.io/guide/browser-support
|
|
||||||
*/ |
|
||||||
|
|
||||||
/*************************************************************************************************** |
|
||||||
* BROWSER POLYFILLS |
|
||||||
*/ |
|
||||||
|
|
||||||
/** |
|
||||||
* IE11 requires the following for NgClass support on SVG elements |
|
||||||
*/ |
|
||||||
// import 'classlist.js'; // Run `npm install --save classlist.js`.
|
|
||||||
|
|
||||||
/** |
|
||||||
* Web Animations `@angular/platform-browser/animations` |
|
||||||
* Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. |
|
||||||
* Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). |
|
||||||
*/ |
|
||||||
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
|
|
||||||
|
|
||||||
/** |
|
||||||
* By default, zone.js will patch all possible macroTask and DomEvents |
|
||||||
* user can disable parts of macroTask/DomEvents patch by setting following flags |
|
||||||
* because those flags need to be set before `zone.js` being loaded, and webpack |
|
||||||
* will put import in the top of bundle, so user need to create a separate file |
|
||||||
* in this directory (for example: zone-flags.ts), and put the following flags |
|
||||||
* into that file, and then add the following code before importing zone.js. |
|
||||||
* import './zone-flags'; |
|
||||||
* |
|
||||||
* The flags allowed in zone-flags.ts are listed here. |
|
||||||
* |
|
||||||
* The following flags will work for all browsers. |
|
||||||
* |
|
||||||
* (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
|
|
||||||
* (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
|
|
||||||
* (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
|
|
||||||
* |
|
||||||
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js |
|
||||||
* with the following flag, it will bypass `zone.js` patch for IE/Edge |
|
||||||
* |
|
||||||
* (window as any).__Zone_enable_cross_context_check = true; |
|
||||||
* |
|
||||||
*/ |
|
||||||
|
|
||||||
/*************************************************************************************************** |
|
||||||
* Zone JS is required by default for Angular itself. |
|
||||||
*/ |
|
||||||
import 'zone.js'; // Included with Angular CLI.
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************************************** |
|
||||||
* APPLICATION IMPORTS |
|
||||||
*/ |
|
Before Width: | Height: | Size: 40 KiB |
@ -1,5 +0,0 @@ |
|||||||
export const collaborateursUrl = 'https://localhost:5001/api/collaborateurs'; |
|
||||||
export const agencesUrl = 'https://localhost:5001/api/agences'; |
|
||||||
export const businessunitsUrl = 'https://localhost:5001/api/businessunits'; |
|
||||||
export const periodeessaisUrl = 'https://localhost:5001/api/periodeessais'; |
|
||||||
export const referencementsUrl = 'https://localhost:5001/api/referencements'; |
|
@ -1,5 +0,0 @@ |
|||||||
export const collaborateursUrl = 'https://collaborateur-epa.apsdigit.lan/api/collaborateurs'; |
|
||||||
export const agencesUrl = 'https://collaborateur-epa.apsdigit.lan/api/agences'; |
|
||||||
export const businessunitsUrl = 'https://collaborateur-epa.apsdigit.lan/api/businessunits'; |
|
||||||
export const periodeessaisUrl = 'https://collaborateur-epa.apsdigit.lan/api/periodeessais'; |
|
||||||
export const referencementsUrl = 'https://collaborateur-epa.apsdigit.lan/api/referencements'; |
|
@ -1,82 +0,0 @@ |
|||||||
/* You can add global styles to this file, and also import other style files */ |
|
||||||
|
|
||||||
$primary: #183650; |
|
||||||
$secondary: #e77620; |
|
||||||
$accent: #e1e4e6; |
|
||||||
$error: #b53333; |
|
||||||
$success: #0b7023; |
|
||||||
$info: #fff; |
|
||||||
$warning: #e07612; |
|
||||||
|
|
||||||
label { |
|
||||||
color: $primary; |
|
||||||
font-weight: bold; |
|
||||||
} |
|
||||||
|
|
||||||
input { |
|
||||||
font-size: 1em; |
|
||||||
padding: .3rem; |
|
||||||
margin: 0 15px 0 0; |
|
||||||
} |
|
||||||
|
|
||||||
.form-submit { |
|
||||||
text-decoration: none; |
|
||||||
background-color: $secondary; |
|
||||||
color: white; |
|
||||||
border-radius: 4px; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
.form-submit:hover { |
|
||||||
background-color: $primary; |
|
||||||
} |
|
||||||
|
|
||||||
.form-submit:disabled { |
|
||||||
background-color: #eee; |
|
||||||
color: #ccc; |
|
||||||
cursor: auto; |
|
||||||
} |
|
||||||
|
|
||||||
a { |
|
||||||
padding: 5px; |
|
||||||
text-decoration: none; |
|
||||||
margin: 2px; |
|
||||||
display: inline-block; |
|
||||||
background-color: $secondary; |
|
||||||
color: white; |
|
||||||
border-radius: 4px; |
|
||||||
} |
|
||||||
|
|
||||||
a:hover { |
|
||||||
background-color: $primary; |
|
||||||
color: white; |
|
||||||
} |
|
||||||
|
|
||||||
a:active { |
|
||||||
background-color: #525252; |
|
||||||
color: white; |
|
||||||
} |
|
||||||
|
|
||||||
button { |
|
||||||
padding: 5px; |
|
||||||
text-decoration: none; |
|
||||||
margin: 2px; |
|
||||||
display: inline-block; |
|
||||||
background-color: $secondary; |
|
||||||
color: white; |
|
||||||
border-radius: 4px; |
|
||||||
border-color: transparent; |
|
||||||
} |
|
||||||
|
|
||||||
button:hover { |
|
||||||
background-color: $primary; |
|
||||||
} |
|
||||||
|
|
||||||
button:disabled { |
|
||||||
background-color: #eee; |
|
||||||
color: #ccc; |
|
||||||
cursor: auto; |
|
||||||
} |
|
||||||
|
|
||||||
html, body { height: 100%; } |
|
||||||
body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } |
|
@ -1,15 +0,0 @@ |
|||||||
/* To learn more about this file see: https://angular.io/config/tsconfig. */ |
|
||||||
{ |
|
||||||
"extends": "./tsconfig.json", |
|
||||||
"compilerOptions": { |
|
||||||
"outDir": "./out-tsc/app", |
|
||||||
"types": [] |
|
||||||
}, |
|
||||||
"files": [ |
|
||||||
"src/main.ts", |
|
||||||
"src/polyfills.ts" |
|
||||||
], |
|
||||||
"include": [ |
|
||||||
"src/**/*.d.ts" |
|
||||||
] |
|
||||||
} |
|
@ -1,30 +0,0 @@ |
|||||||
/* To learn more about this file see: https://angular.io/config/tsconfig. */ |
|
||||||
{ |
|
||||||
"compileOnSave": false, |
|
||||||
"compilerOptions": { |
|
||||||
"baseUrl": "./", |
|
||||||
"outDir": "./dist/out-tsc", |
|
||||||
"forceConsistentCasingInFileNames": true, |
|
||||||
"strict": true, |
|
||||||
"noImplicitReturns": true, |
|
||||||
"noFallthroughCasesInSwitch": true, |
|
||||||
"sourceMap": true, |
|
||||||
"declaration": false, |
|
||||||
"downlevelIteration": true, |
|
||||||
"experimentalDecorators": true, |
|
||||||
"moduleResolution": "node", |
|
||||||
"importHelpers": true, |
|
||||||
"target": "es2017", |
|
||||||
"module": "es2020", |
|
||||||
"lib": [ |
|
||||||
"es2018", |
|
||||||
"dom" |
|
||||||
] |
|
||||||
}, |
|
||||||
"angularCompilerOptions": { |
|
||||||
"enableI18nLegacyMessageIdFormat": false, |
|
||||||
"strictInjectionParameters": true, |
|
||||||
"strictInputAccessModifiers": true, |
|
||||||
"strictTemplates": true |
|
||||||
} |
|
||||||
} |
|
@ -1,18 +0,0 @@ |
|||||||
/* To learn more about this file see: https://angular.io/config/tsconfig. */ |
|
||||||
{ |
|
||||||
"extends": "./tsconfig.json", |
|
||||||
"compilerOptions": { |
|
||||||
"outDir": "./out-tsc/spec", |
|
||||||
"types": [ |
|
||||||
"jasmine" |
|
||||||
] |
|
||||||
}, |
|
||||||
"files": [ |
|
||||||
"src/app/tests/test.ts", |
|
||||||
"src/polyfills.ts" |
|
||||||
], |
|
||||||
"include": [ |
|
||||||
"src/**/*.spec.ts", |
|
||||||
"src/**/*.d.ts" |
|
||||||
] |
|
||||||
} |
|
Loading…
Reference in new issue