Compare commits

..

90 Commits

Author SHA1 Message Date
b5e015a6fe [mod] Del method for employee 2018-08-15 03:30:23 -06:00
ee168bd637 [add] Updating work days from front end 2018-08-15 02:36:23 -06:00
b233346795 [add] Worked day modified through api 2018-08-15 02:26:41 -06:00
ca80abc389 [add] Validations for work day abstracted to their own method 2018-08-15 01:40:36 -06:00
e3dfaf9f26 [add] Validating future dates 2018-08-15 00:51:10 -06:00
477ac28212 [mod] Exits changed to exceptions 2018-08-15 00:38:05 -06:00
3ad687f797 [add] Data loaded to be edited 2018-08-15 00:31:18 -06:00
b84b9fa2fb [add] Returning details per pay day 2018-08-14 16:35:30 -06:00
f2851ec56a [add] Work day details 2018-08-14 15:39:55 -06:00
03cbcce59f [add] Basic endpoint for workday data 2018-08-14 11:52:57 -06:00
f864e74247 Merge pull request #22 from PootisPenserHere/retrievingrySalary
Retrievingry salary
2018-08-14 07:40:19 -06:00
6b22fc4694 [add] Loading salary data 2018-08-14 07:38:25 -06:00
caa31136f1 [add] Endpoint to calculate salary 2018-08-14 04:06:36 -06:00
c97421df32 Merge pull request #21 from PootisPenserHere/registeringNewWorkDay
Registering new work day
2018-08-14 02:31:46 -06:00
568c6d23a9 [add] Validating date isn't duplicated 2018-08-14 02:30:56 -06:00
15a7ea5ef5 [add] Saving worked day 2018-08-14 02:11:07 -06:00
93099d316f [add] Sending new work day data to backend 2018-08-14 00:26:25 -06:00
e9f80a9989 [add] Enabling covered rol for aux 2018-08-14 00:16:06 -06:00
6ce90bd318 [add] Loading basic employee data 2018-08-14 00:08:05 -06:00
69e3a31d52 [add] Layout new work day 2018-08-14 00:00:47 -06:00
1ee650e020 [add] Instantiating the new view 2018-08-13 23:20:37 -06:00
61eb809204 [add] Database and settings 2018-08-13 22:58:49 -06:00
b98b4077b4 Merge pull request #20 from PootisPenserHere/updatingEmployeeDataFromView
Updating employee data from view
2018-08-12 23:18:47 -06:00
a8148bbb93 [add] Employee updated 2018-08-12 23:17:20 -06:00
b0a19c6daa [add] Loading employee data 2018-08-12 22:55:00 -06:00
38d3466f16 [fix] Returning idEmployeeType instead of name type 2018-08-12 22:49:32 -06:00
68723e82fe [add] Searching for full employee data by code
Corrected a logical  error where the wrong method was being called to get data by code and also made it so the search function only returns names and codes
2018-08-12 22:22:33 -06:00
6615e5471a [add] Bloodhound in local files 2018-08-12 21:51:09 -06:00
49e114c18a [add] Bloodhoung search 2018-08-12 21:45:50 -06:00
e9effb7fcc [add] Finding employees by name 2018-08-12 21:01:46 -06:00
a5a1656518 [add] New asserts 2018-08-12 19:48:34 -06:00
19d1f57240 [mod] File naming 2018-08-12 19:28:50 -06:00
99a020024e Merge pull request #19 from PootisPenserHere/creatingNewEmployeeFromView
Creating new employee from view
2018-08-12 19:22:13 -06:00
abd8168dbf [add] Asserting email type 2018-08-12 17:15:39 -06:00
79059fb91b [mod] Updated html and css references 2018-08-12 16:59:46 -06:00
1b2484fbf2 [fix] Phone number length in database 2018-08-12 16:27:05 -06:00
168a6a352e [add] Displaying data post save 2018-08-12 16:25:23 -06:00
8185a42331 [add] Saving new employee 2018-08-12 15:54:56 -06:00
64a6ddafb5 [add] Datepicker 2018-08-12 15:38:09 -06:00
54ef088fe0 [add] New employee form layout 2018-08-12 14:39:47 -06:00
dc45f02ad2 Merge pull request #18 from PootisPenserHere/loadingViews
Loading views
2018-08-12 11:36:52 -06:00
b829f09330 [fix] Reference to view body 2018-08-12 11:36:17 -06:00
b03d152f11 [add] Loading views 2018-08-12 11:32:48 -06:00
0ec20a4c67 [add] Logout uses generic error messages
Refactored some messages from the generic modals
2018-08-12 10:39:44 -06:00
1605b1cea3 Merge pull request #17 from PootisPenserHere/interactionBetweenLoginAndPanel
Interaction between login and panel
2018-08-12 10:08:54 -06:00
d4fadf08bc [add] Logout
Also made general fixes to the css
2018-08-12 10:03:25 -06:00
de84da4482 [add] Mapping enter key 2018-08-12 09:13:00 -06:00
697d0fe769 [mod] getBaseUrl moved to its own file 2018-08-12 09:07:48 -06:00
cb5d30b4e0 [add] Verifying session 2018-08-12 08:51:22 -06:00
6c91cad46c Merge pull request #16 from PootisPenserHere/qualityChangesToDocker
Quality changes to docker
2018-08-11 20:07:07 -06:00
ccd9e10351 Merge pull request #15 from PootisPenserHere/landingPage
Landing page
2018-08-11 20:06:13 -06:00
30f755c0b2 [fix] Misleading error when login 2018-08-11 20:03:28 -06:00
231e7fe2e6 [add] Access config 2018-08-12 01:43:37 +00:00
f820a22a4f [add] Volumes directory 2018-08-12 01:25:11 +00:00
0cdfd21fa2 [mod] Config files moved to a directory 2018-08-12 01:06:40 +00:00
fee3db486f [add] Composer decoupled from prod build 2018-08-12 00:58:12 +00:00
87181696e1 [add] Looks of the dockerfile 2018-08-12 00:49:03 +00:00
8b22c0db9c [add] Composer compileed in multi stagre 2018-08-12 00:38:39 +00:00
7feb3a6f5d [add] Landing page skeleton 2018-08-10 01:31:25 -06:00
18ee0ad333 [add] Downloading composer dependencies 2018-08-10 06:53:13 +00:00
e5d90bc32d Merge pull request #14 from PootisPenserHere/genericAsserts
Generic asserts
2018-08-09 23:29:58 -06:00
1500aef977 [add] Higher than zero asserting 2018-08-09 23:26:25 -06:00
112f78c1de [del] Old asserts 2018-08-09 22:48:42 -06:00
08702b2cdf [add] Generic assers in employee application 2018-08-09 22:47:19 -06:00
21013cf6ac [add] Generic asserts with custom errors 2018-08-09 21:55:39 -06:00
4928481f72 [add] Empty log file with permisions 2018-08-10 03:51:17 +00:00
Jose Pablo Domingo Aramburo Sanchez
2d11218076 [fix] php volume 2018-08-09 13:42:13 -06:00
59a4d6e4a5 Merge pull request #13 from PootisPenserHere/loginFront
Login front
2018-08-09 02:35:11 -06:00
7cf083a612 [add] Simple redirect 2018-08-09 02:33:21 -06:00
d4135188bd [add] Local bootstrap libraries 2018-08-09 02:30:39 -06:00
6d29ac3f23 [add] Error handling in the login 2018-08-09 02:26:16 -06:00
0449f202ef [add] Added wrapper for login method
Also changed the logout endpoint to get
2018-08-09 01:35:44 -06:00
23868b60ee [add] Login functionality 2018-08-09 01:28:36 -06:00
8a2d5b2afa Merge pull request #12 from PootisPenserHere/fixEmployeeTypesReturnsIdAsInt
[mod] Returning id as int
2018-08-08 23:07:37 -06:00
7ceb2aad93 [mod] Returning id as int 2018-08-08 23:06:38 -06:00
3902435690 Merge pull request #11 from PootisPenserHere/adaptingMysqlForOtherPort
Adapting mysql for other port
2018-08-08 21:35:55 -06:00
f16e9fe72c [add] Parametrizing 2018-08-08 16:15:45 -06:00
d2b9163537 [add] Configuring the mysql port 2018-08-08 15:58:55 -06:00
403541580d Merge pull request #10 from PootisPenserHere/dockerizing
Dockerizing
2018-08-08 01:46:39 -06:00
663ea7cc3e [add] Testing the docker build in CI 2018-08-08 07:41:29 +00:00
f93b41f14e [add] Index protection 2018-08-08 07:37:27 +00:00
24f1ce1ed7 [add] Docker ignore for php 2018-08-08 07:32:54 +00:00
b25346e3d5 [add] Database initiated along with container 2018-08-08 07:14:22 +00:00
f2237d9209 [add] Connecting to mysql from pdo 2018-08-08 05:24:02 +00:00
7fc9ca8c75 [add] Mysql container 2018-08-07 19:25:20 -06:00
97fca1d7d3 [add] Docker compose 2018-08-07 17:33:21 -06:00
058e19a49a [add] Apache conf for the docker container 2018-08-07 17:32:32 -06:00
bffeb6e9f4 [add] Dockerfile 2018-08-07 17:31:02 -06:00
9a3e876afe Merge pull request #9 from PootisPenserHere/employeeDataByCode
[add] Emṕloyee data by code
2018-08-06 15:22:05 -06:00
dadea504d0 [add] Emṕloyee data by code 2018-08-06 15:17:31 -06:00
291 changed files with 5319 additions and 145283 deletions

View File

@@ -0,0 +1,5 @@
Dockerfile
README.md
buildspec.yml
CONTRIBUTING.md
docker-compose.yml

2
api-payroll/.htaccess Normal file
View File

@@ -0,0 +1,2 @@
Options -Indexes
Deny from all

52
api-payroll/Dockerfile Normal file
View File

@@ -0,0 +1,52 @@
# Stage 1 - the build process
FROM composer:1.7.1 as build-deps
ENV COMPOSER_ALLOW_SUPERUSER 1
WORKDIR /root
COPY . .
RUN composer install
RUN composer test
# Stage 2 - the production environment
FROM ubuntu:16.04
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get -y install apache2 \
php7.0 \
libapache2-mod-php7.0 \
php7.0-cli \
php7.0-common \
php7.0-mbstring \
php7.0-gd \
php7.0-intl \
php7.0-xml \
php7.0-mysql \
php7.0-mcrypt
# Enable apache mods
RUN a2enmod php7.0
RUN a2enmod rewrite
# Update the PHP.ini file, enable <? ?> tags and quieten logging
RUN sed -i "s/short_open_tag = Off/short_open_tag = On/" /etc/php/7.0/apache2/php.ini
RUN sed -i "s/error_reporting = .*$/error_reporting = E_ERROR | E_WARNING | E_PARSE/" /etc/php/7.0/apache2/php.ini
# Manually set up the apache environment variables
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
WORKDIR /var/www/site
COPY --from=build-deps /root .
RUN touch logs/app.log
RUN chmod 777 logs/app.log
# Update the default apache site
ADD docker/apache-config.conf /etc/apache2/sites-enabled/000-default.conf
# By default start up apache in the foreground
CMD /usr/sbin/apache2ctl -D FOREGROUND

View File

@@ -14,8 +14,9 @@ phases:
- echo Entered the build phase... - echo Entered the build phase...
- echo Build started on `date` - echo Build started on `date`
- composer test - composer test
- sudo docker-compose up --build -d
post_build: post_build:
commands: commands:
- echo Entered the post_build phase... - echo Entered the post_build phase...
- sudo docker-compose down --rmi all -v
- echo Build completed on `date` - echo Build completed on `date`

View File

@@ -0,0 +1,15 @@
<VirtualHost *:80>
ServerAdmin me@mydomain.com
DocumentRoot /var/www/site
<Directory /var/www/site/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

View File

View File

@@ -1,3 +1,5 @@
allow from all
<IfModule mod_rewrite.c> <IfModule mod_rewrite.c>
RewriteEngine On RewriteEngine On

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,243 @@
body {
background-color: #e3e3e3;
color: #000;
}
.datepicker{
color: black;
}
#newViewBody{
top:17%;
left:1%;
width:98%;
float:left;
}
#navigation_spot{
margin: 0;
padding: 0;
}
#footer {
}
#newViewBody .modal-body{
color: #000;
border:none;
}
#newViewBody .panel-default{
border: 3px solid #4A89A5;
border-radius: 5px;
}
#newViewBody .panel > .panel-heading {
background-image: none;
background-color: #4A89A5;
color: white;
border-radius: 0;
}
#newViewBody .btn-default{
border: 2px solid #62655F;
background: #F9DFAF;
}
#newViewBody .btn-default:hover{
border: 2px solid #62655F;
background: #F9DFAF;
}
#newViewBody .alert-success{
background: #C6E97C;
}
.modalHeaderError{
background-color: #d9534f;
}
.modalHeaderSuccess{
background-color: #5bc0de;
}
.metro{
width:auto;
height:auto;
}
.metroBox{
margin: 0 auto;
width:100%;
padding: 0;
height:auto;
display:table;
overflow: hidden;
}
.metroBox h3{
margin-bottom: 0;
padding-bottom: 0;
}
.metroBox a{
text-decoration: none;
color: #fff;
}
.boxElement{
color: #fff;
height:210px;
width: 318px;
float:left;
margin:0 5px 5px 0;
padding:0 1% 0 1%;
}
.boxElement:hover{
color: #fff;
background: #483D8B;
text-decoration: none;
}
.amarelo{
background:#f4c20d;
}
.vermelho{
background:#da542d;
}
.azul{
background:#009bad;
}
.azulFuerte{
background:#5636b0;
}
.verde{
background-color: #009f00;
}
.violet{
background-color: #a400ab;
}
.iconPanel{
font-size: 130px;
}
@media (max-width: 310px){
.boxElement{
width: 245px;
}
}
@media (min-width: 311px) and (max-width: 353px){
.boxElement{
width: 265px;
}
}
@media (min-width: 354px) and (max-width: 365px){
.boxElement{
width: 320px;
}
}
@media (min-width: 366px) and (max-width: 520px){
.boxElement{
width: 320px;
}
}
@media (min-width: 521px) and (max-width: 549px){
.boxElement{
width: 235px;
}
}
@media (min-width: 550px) and (max-width: 590px){
.boxElement{
width: 250px;
}
}
@media (min-width: 591px) and (max-width: 610px){
.boxElement{
width: 265px;
}
}
@media (min-width: 611px) and (max-width: 630px){
.boxElement{
width: 275px;
}
}
@media (min-width: 631px) and (max-width: 655px){
.boxElement{
width: 280px;
}
}
@media (min-width: 656px) and (max-width: 699px){
.boxElement{
width: 300px;
}
}
@media (min-width: 700px) and (max-width: 739px){
.boxElement{
width: 320px;
}
}
@media (min-width: 740px) and (max-width: 769px){
.boxElement{
width: 340px;
}
}
@media (min-width: 770px) and (max-width: 1230px){
.boxElement{
width: 280px;
}
}
.formato_texto_custom{
width: 97%;
float: left;
border: 1px solid #222;
padding: 1%;
margin: .5%;
}
.cliente_muestra_producto{
width: 96%;
padding: 1%;
margin: 0 1% 2% 1%;
}
textarea{
resize: none;
}
#custom-bootstrap-menu.navbar-default .navbar-brand {
color: rgba(255, 255, 255, 1);
}
#custom-bootstrap-menu.navbar-default {
font-size: 14px;
background-color: rgba(27, 35, 78, 1);
border-width: 1px;
border-radius: 4px;
}
#custom-bootstrap-menu.navbar-default .navbar-nav>li>a {
color: rgba(255, 255, 255, 1);
background-color: rgba(27, 35, 78, 1);
}
#custom-bootstrap-menu.navbar-default .navbar-nav>li>a:hover,
#custom-bootstrap-menu.navbar-default .navbar-nav>li>a:focus {
color: rgba(106, 171, 232, 1);
background-color: rgba(27, 35, 78, 1);
}
#custom-bootstrap-menu.navbar-default .navbar-nav>.active>a,
#custom-bootstrap-menu.navbar-default .navbar-nav>.active>a:hover,
#custom-bootstrap-menu.navbar-default .navbar-nav>.active>a:focus {
color: rgba(255, 255, 255, 1);
background-color: rgba(27, 35, 78, 1);
}
#custom-bootstrap-menu.navbar-default .navbar-toggle {
border-color: #1b234e;
}
#custom-bootstrap-menu.navbar-default .navbar-toggle:hover,
#custom-bootstrap-menu.navbar-default .navbar-toggle:focus {
background-color: #1b234e;
}
#custom-bootstrap-menu.navbar-default .navbar-toggle .icon-bar {
background-color: #1b234e;
}
#custom-bootstrap-menu.navbar-default .navbar-toggle:hover .icon-bar,
#custom-bootstrap-menu.navbar-default .navbar-toggle:focus .icon-bar {
background-color: #1b234e;
}

View File

@@ -0,0 +1,81 @@
body {
background: url(../imagenes/grey_background.jpg);
background-size: cover;
font-family: Montserrat;
}
@media only screen and (min-device-width: 480px) {
body {
background: url('../imagenes/grey_background.jpg') no-repeat fixed center center;
}
}
.logo {
width: 213px;
height: 60px;
margin: 30px auto;
}
.login-block {
width: 320px;
padding: 20px;
background: #fff;
border-radius: 5px;
border-top: 5px solid #5bc0de;
margin: 0 auto;
}
.login-block h1 {
text-align: center;
color: #000;
font-size: 18px;
text-transform: uppercase;
margin-top: 0;
margin-bottom: 20px;
}
.login-block input {
width: 100%;
height: 42px;
box-sizing: border-box;
border-radius: 5px;
border: 1px solid #ccc;
margin-bottom: 20px;
font-size: 14px;
font-family: Montserrat;
padding: 0 20px 0 50px;
outline: none;
}
.login-block input#user {
background: #fff url('../imagenes/login_username.png') 20px top no-repeat;
background-size: 16px 80px;
}
.login-block input#user:focus {
background: #fff url('../imagenes/login_username.png') 20px bottom no-repeat;
background-size: 16px 80px;
}
.login-block input#password {
background: #fff url('../imagenes/login_password.png') 20px top no-repeat;
background-size: 16px 80px;
}
.login-block input#password:focus {
background: #fff url('../imagenes/login_password.png') 20px bottom no-repeat;
background-size: 16px 80px;
}
.login-block input:active, .login-block input:focus {
border: 1px solid #5bc0de;
}
.login-block #loginButon {
width: 100%;
height: 40px;
background: #009bad;
box-sizing: border-box;
border-radius: 5px;
border: 1px solid #000;
color: #fff;
font-weight: bold;
text-transform: uppercase;
font-size: 14px;
font-family: Montserrat;
outline: none;
cursor: pointer;
}
#modalLoginErrorHeader{
background-color: #d9534f;
}

View File

@@ -0,0 +1,111 @@
<script src="../js/getBaseUrl.js"></script>
<script src="../js/editEmployee.js"></script>
<form class="form-horizontal" id="editEmployee">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Edit employee</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="editEmploySearch">Employee</label>
<div class="col-md-5">
<input id="editEmploySearch" name="editEmploySearch" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="col-md-6">
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="editEmployeeFirstName">First name</label>
<div class="col-md-5">
<input id="editEmployeeFirstName" name="editEmployeeFirstName" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="editEmployeeMiddleName">Middle name</label>
<div class="col-md-5">
<input id="editEmployeeMiddleName" name="editEmployeeMiddleName" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="editEmployeeLastName">Last name</label>
<div class="col-md-5">
<input id="editEmployeeLastName" name="editEmployeeLastName" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="editEmployeeBirthDate">Birth date</label>
<div class="col-md-5">
<input id="editEmployeeBirthDate" name="editEmployeeBirthDate" type="text" class="form-control input-md datepicker">
</div>
</div>
</div>
<div class="row" id="hidenEmployeeCode">
<div class="form-group">
<label class="col-md-4 control-label" for="editEmployeeCode">Code</label>
<div class="col-md-5">
<input id="editEmployeeCode" name="editEmployeeCode" type="text" class="form-control input-md">
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="editEmployeeEmail">Email</label>
<div class="col-md-5">
<input id="editEmployeeEmail" name="editEmployeeEmail" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="editEmployeePhone">Phone</label>
<div class="col-md-5">
<input id="editEmployeePhone" name="editEmployeePhone" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="editEmployeeType">Rol</label>
<div class="col-md-5">
<select class="form-control input-md" name="editEmployeeType" id="editEmployeeType">
<option>Employee type</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="editEmployeeContractType">Contract type</label>
<div class="col-md-5">
<select class="form-control input-md" name="editEmployeeContractType" id="editEmployeeContractType">
<option>Contract type</option>
<option value="INTERNO">interno</option>
<option value="EXTERNO">Externo</option>
</select>
</div>
</div>
</div>
</div>
<div class="row col-md-offset-6">
<div class="form-group">
<a href="#" class="btn btn-lg btn-success " onclick="updateEmployee();">Update</a>
</div>
</div>
</div>
</div>
</div>
</form>

View File

@@ -0,0 +1,232 @@
<?php
session_start();
if(!isset($_SESSION['userName'])){
header("Location: ./login.php");
exit();
}
?>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="../css/bootstrap.min.css">
<!-- jQuery library -->
<script src="../js/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="../js/bootstrap.min.js"></script>
<body>
<div class="col-md-12" id="navigation_spot">
<!-- NavBar-->
<div id="custom-bootstrap-menu" class="navbar navbar-default " role="navigation">
<div class="container-fluid">
<div class="navbar-header"><a class="navbar-brand" href="#"></a>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-menubuilder"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse navbar-menubuilder">
<ul class="nav navbar-nav navbar-left" id="nevatation-options">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="glyphicon glyphicon-user"></span> Employees<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#" data-nav_accion="newEmployee.php"> New employee</a></li>
<li><a href="#" data-nav_accion="editEmployee.php"> Modify employee</a></li>
</ul>
</li>
<li>
<a href="#" data-nav_accion="registerWorkDays.php" ><span class="glyphicon glyphicon-tasks"></span> Management</a>
</li>
<li>
<a href="#" onclick="loadView();"><span class="glyphicon glyphicon-wrench"></span> Change password</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#" onclick="logout();"><span class="fa fa-fw fa-power-off"></span> logout</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-md-12" id="newViewBody"></div>
<!--
=================================================================================
Modals for errors encountered by ajax
=================================================================================
-->
<div id="modalErrorInternetConnection" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header modalHeaderError">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">An error has occurred</h4>
</div>
<div class="modal-body">
<p>Please verify your internet connection and try again.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<div id="modalError404" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header modalHeaderError">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">An error has occurred</h4>
</div>
<div class="modal-body">
<p>Unable to find the requested url in the sever.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<div id="modalError500" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header modalHeaderError">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">An error has occurred</h4>
</div>
<div class="modal-body">
<p>The server has encountered an internal error, please try again later.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<div id="modalErrorParsererror" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header modalHeaderError">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">An error has occurred</h4>
</div>
<div class="modal-body">
<p>The response from the sever wasn't a proper JSON format</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<div id="modalErrorTimeout" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header modalHeaderError">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">An error has occurred</h4>
</div>
<div class="modal-body">
<p>The request timeout, please try again or verify your connection.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<div id="modalErrorOther" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header modalHeaderError">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">An error has occurred</h4>
</div>
<div class="modal-body">
<p>An unknown error occurred.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<!--
=================================================================================
Generic response modals
=================================================================================
-->
<div id="modalServerResponseError" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header modalHeaderError">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">An error has occurred</h4>
</div>
<div class="modal-body">
<p id="modalResponseError"></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<div id="modalServerResponseSuccess" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header modalHeaderSuccess" id="modalHeaderServerResponseSuccess">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Success</h4>
</div>
<div class="modal-body">
<p id="serverResponseSuccess"></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
</body>
<script src="../js/getBaseUrl.js"></script>
<script src="../js/landing.js"></script>
<script src="../js/bootstrap-datepicker.min.js"></script>
<script src="../js/typeahead.bundle.js"></script>
<link href="../css/bootstrap-datepicker.min.css" rel="stylesheet">
<link href="../css/landing.css" rel="stylesheet">

View File

@@ -0,0 +1,54 @@
<?php
session_start();
if(isset($_SESSION['userName'])){
header("Location: ./landing.php");
exit();
}
?>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="../css/bootstrap.min.css">
<!-- jQuery library -->
<script src="../js/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="../js/bootstrap.min.js"></script>
<link href='http://fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'>
<div class="container">
<div class="logo"></div>
<div class="login-block">
<form action="" method="post" name="Login_Form" class="login">
<h1>Login</h1>
<input type="text" value="" placeholder="User" id="userName" name="user" required="" autofocus=""/>
<input type="password" value="" placeholder="Password" id="password" name="password" required=""/>
<a href="#" class="btn btn-lg btn-warning btn-default" id="loginButon" name="login" value="Login" onclick="processLogin();">Login</a>
</form>
</div>
</div>
<div id="modalLoginError" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header" id="modalLoginErrorHeader">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title"><center>Ha ocurrido un error</center></h4>
</div>
<div class="modal-body">
<p id="modalLoginErrorBody"></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<script src="../js/login.js"></script>
<script src="../js/getBaseUrl.js"></script>
<link href="../css/login.css" rel="stylesheet">

View File

@@ -0,0 +1,93 @@
<script src="../js/newEmployee.js"></script>
<script src="../js/getBaseUrl.js"></script>
<form class="form-horizontal" id="newEmployeeForm">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">New employee</h3>
</div>
<div class="panel-body">
<div class="col-md-6">
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="newEmployeeFirstName">First name</label>
<div class="col-md-5">
<input id="newEmployeeFirstName" name="newEmployeeFirstName" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="newEmployeeMiddleName">Middle name</label>
<div class="col-md-5">
<input id="newEmployeeMiddleName" name="newEmployeeMiddleName" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="newEmployeeLastName">Last name</label>
<div class="col-md-5">
<input id="newEmployeeLastName" name="newEmployeeLastName" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="newEmployeeBirthDate">Birth date</label>
<div class="col-md-5">
<input id="newEmployeeBirthDate" name="newEmployeeBirthDate" type="text" class="form-control input-md datepicker">
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="newEmployeeEmail">Email</label>
<div class="col-md-5">
<input id="newEmployeeEmail" name="newEmployeeEmail" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="newEmployeePhone">Phone</label>
<div class="col-md-5">
<input id="newEmployeePhone" name="newEmployeePhone" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="newEmployeeType">Rol</label>
<div class="col-md-5">
<select class="form-control input-md" name="newEmployeeType" id="newEmployeeType">
<option>Employee type</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="NewEmpployyContractType">Contract type</label>
<div class="col-md-5">
<select class="form-control input-md" name="NewEmpployyContractType" id="NewEmpployyContractType">
<option>Contract type</option>
<option value="INTERNO">interno</option>
<option value="EXTERNO">Externo</option>
</select>
</div>
</div>
</div>
</div>
<div class="row col-md-offset-6">
<div class="form-group">
<a href="#" class="btn btn-lg btn-success " onclick="saveNewEmployee();">Create</a>
</div>
</div>
</div>
</div>
</div>
</form>

View File

@@ -0,0 +1,142 @@
<script src="../js/getBaseUrl.js"></script>
<script src="../js/registerWorkDays.js"></script>
<form class="form-horizontal" id="workDaysForm">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Managing work days</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysSearchEmployee">Search employee</label>
<div class="col-md-5">
<input id="workDaysSearchEmployee" name="workDaysSearchEmployee" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysSearchByDate">Search by date</label>
<div class="col-md-2">
<input id="workDaysSearchByDate" name="workDaysSearchByDate" type="text" class="form-control input-md datepicker">
</div>
</div>
</div>
</div>
<div id="registerWorkDaysEmployeeInfo" class="col-md-6">
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysEmployeeName">Name</label>
<div class="col-md-5">
<input id="workDaysEmployeeName" name="workDaysEmployeeName" type="text" class="form-control input-md" disabled>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysEmployeeRol">Rol</label>
<div class="col-md-5">
<select class="form-control input-md" name="workDaysEmployeeRol" id="workDaysEmployeeRol" disabled>
<option></option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysEmployeeContractType">Contract type</label>
<div class="col-md-5">
<select class="form-control input-md" name="workDaysEmployeeContractType" id="workDaysEmployeeContractType" disabled>
<option>Contract type</option>
<option value="INTERNO">interno</option>
<option value="EXTERNO">Externo</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysEmployeeWorkedDay">Date</label>
<div class="col-md-5">
<input id="workDaysEmployeeWorkedDay" name="workDaysEmployeeWorkedDay" type="text" class="form-control input-md datepicker">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysEmployeeDeliveries">Deliveries</label>
<div class="col-md-5">
<input id="workDaysEmployeeDeliveries" name="workDaysEmployeeDeliveries" type="number" value="0" class="form-control input-md">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysEmployeePerformedRol">Performed rol</label>
<div class="col-md-5">
<select class="form-control input-md" name="workDaysEmployeePerformedRol" id="workDaysEmployeePerformedRol" disabled>
<option>Employee type</option>
</select>
</div>
</div>
</div>
</div>
<div id="registerWorkDaysEmployeeSalary" class="col-md-6">
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysEmployeeSalaryRaw">Raw</label>
<div class="col-md-5">
<input id="workDaysEmployeeSalaryRaw" name="workDaysEmployeeSalaryRaw" type="text" class="form-control input-md" disabled>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysEmployeeSalaryTaxes">Taxes</label>
<div class="col-md-5">
<input id="workDaysEmployeeSalaryTaxes" name="workDaysEmployeeSalaryTaxes" type="text" class="form-control input-md" disabled>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysEmployeeSalaryFinal">Final</label>
<div class="col-md-5">
<input id="workDaysEmployeeSalaryFinal" name="workDaysEmployeeSalaryFinal" type="text" class="form-control input-md" disabled>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<label class="col-md-4 control-label" for="workDaysEmployeeSalaryVouchers">Vouchers</label>
<div class="col-md-5">
<input id="workDaysEmployeeSalaryVouchers" name="workDaysEmployeeSalaryVouchers" type="text" class="form-control input-md" disabled>
</div>
</div>
</div>
</div>
<div class="row" id="hidenEmployeeCodeForWorkDays">
<div class="form-group">
<label class="col-md-4 control-label" for="hidenEmployeeCodeForWorkDaysCode">Code</label>
<div class="col-md-5">
<input id="hidenEmployeeCodeForWorkDaysCode" name="hidenEmployeeCodeForWorkDaysCode" type="text" class="form-control input-md">
</div>
</div>
</div>
<div class="row col-md-offset-6">
<div class="form-group">
<a href="#" class="btn btn-lg btn-success " onclick="processSaveActionWorkDay();">Save</a>
</div>
</div>
</div>
</div>
</form>

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,180 @@
/**
* Bootstrapping the starting actions for the module
*/
$(document).ready(function(){
let baseUrl = getbaseUrl();
loadEmployeeTypes();
$('.datepicker').datepicker({
format: "yyyy/mm/dd",
autoclose: true
});
// Not to be edited
$("#hidenEmployeeCode").hide();
// Setting up bloodhound typeahead
let employeesList = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace("name"),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
'cache': false,
url: baseUrl + '/api/employee/find',
replace: function(url, uriEncodedQuery) {
return url + '/' + uriEncodedQuery
},
wildcard: '%QUERY',
filter: function (data) {
return data;
}
}
});
employeesList.initialize();
$("#editEmploySearch").typeahead({
hint: true,
highlight: true,
minLength: 3
},
{
name: "result",
displayKey: "fullName",
source: employeesList.ttAdapter()
}).bind("typeahead:selected", function(obj, datum, name) {
$(this).data("id", datum.code);
loadEmployeeData(datum.code);
});
});
/**
* Loads the the employee types into their select option
*/
function loadEmployeeTypes(){
let baseUrl = getbaseUrl();
$.ajax({
url: baseUrl + '/api/employee/types',
type: 'GET',
dataType: 'json',
success:function(data){
$(data).each(function(i,v){
$('#editEmployeeType').append(
'<option value="' + v.id + '">'+ v.name + '</option>'
);
});
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
}
/**
* Searches the employee data by its employee code and loads it
* into the form to be edited and updated
*
* @param code string
*/
function loadEmployeeData(code){
let baseUrl = getbaseUrl();
$.ajax({
url: baseUrl + '/api/employee/code/' + code,
type: 'GET',
dataType: 'json',
success:function(data){
$('#editEmployeeFirstName').val(data['firstName']);
$('#editEmployeeMiddleName').val(data['middleName']);
$('#editEmployeeLastName').val(data['lastName']);
$('#editEmployeeBirthDate').val(data['birthDate']);
$('#editEmployeeCode').val(data['code']);
$('#editEmployeeEmail').val(data['email']);
$('#editEmployeePhone').val(data['phone']);
$('#editEmployeeType').val(data['idEmployeeType']);
$('#editEmployeeContractType').val(data['contractType']);
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
}
function updateEmployee(){
let baseUrl = getbaseUrl();
let parameters = {
"firstName":$('#editEmployeeFirstName').val(),
"middleName":$('#editEmployeeMiddleName').val(),
"lastName":$('#editEmployeeLastName').val(),
"birthDate":$('#editEmployeeBirthDate').val(),
"code":$('#editEmployeeCode').val(),
"email":$('#editEmployeeEmail').val(),
"phone":$('#editEmployeePhone').val(),
"idEmployeeType":$('#editEmployeeType').val(),
"contractType":$('#editEmployeeContractType').val()
};
$.ajax({
url: baseUrl + '/api/employee',
type: 'PUT',
dataType: 'json',
data: parameters,
success:function(data){
$('#modalServerResponseSuccess').modal('show');
document.getElementById('serverResponseSuccess').innerHTML = 'The employee ' + data['fullName'] + ' has been updated.';
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
}

View File

@@ -0,0 +1,10 @@
/**
* Returns the entry point url for the system, this url will be used
* to access both the api and the static resources
*
* @returns {string}
*/
function getbaseUrl(){
var url = window.location.href;
return url.substring(0, url.indexOf('/html/'));
}

2
api-payroll/public/js/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,77 @@
/**
* Destorys the session for the current user and redirects
* back to the login form
*/
function logout() {
let baseUrl = getbaseUrl();
$.ajax({
url: baseUrl + '/api/session/logout',
type: 'GET',
dataType: 'json',
success:function(data){
window.location.replace(baseUrl + '/html/login.php');
},
error:function(x,e) {
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalError500').modal('show');
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modal_error_otro').modal('show');
}
},
});
}
/**
* Entry point for loading elements from the navatation var, this functuion
* will filter the junk clicks that have landed in a dropdown menu and pass
* only the ones containing an action to the actual view loader
*/
$('#nevatation-options li a').click(function(){
let view = $(this).data('nav_accion');
if (view != "#" && view != undefined) {
loadView(view);
}
});
/**
* Will fetch the html of the desired view and load it into the landing page
*
* @param requestedView string
*/
function loadView(requestedView){
let baseUrl = getbaseUrl();
$.ajax({
url: baseUrl + '/html/' + requestedView,
type: 'get',
success:function(data){
$("#newViewBody").hide().html(data).show('slow');
},
error:function(x,e) {
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalError500').modal('show');
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modal_error_otro').modal('show');
}
},
});
}

View File

@@ -0,0 +1,47 @@
/**
* Maps the enter key to the login action
*/
$(document).keypress(function(e) {
if(e.which == 13) {
processLogin();
}
});
/**
* Takes the input from the username and password fields and send theem to the backend
* to be validated
*
* The response from the api will contain a status that will determine if the login was
* successful or not and a message that will contain feedback which can be used to
* display errors to the user
*/
function processLogin() {
let baseUrl = getbaseUrl();
let parameters = {
"userName":$('#userName').val(),
"password":$('#password').val()
};
$.ajax({
url: baseUrl + '/api/session/login',
type: 'POST',
dataType: 'json',
data: parameters,
success:function(data){
if(data["status"] == "success"){
window.location.replace(baseUrl + '/html/landing.php');
}else if(data["status"] == "success" || (data["status"] === undefined)){
$('#modalLoginError').modal('show');
document.getElementById('modalLoginErrorBody').innerHTML = "The server didn't respond in time, please try again or refresh this page.";
}
},
error:function(x) {
if (x.status==500){
$('#modalLoginError').modal('show');
document.getElementById('modalLoginErrorBody').innerHTML = "The user or password didnt match, please try again";
}
},
});
}

View File

@@ -0,0 +1,94 @@
/**
* Bootstrapping the starting actions for the module
*/
$(document).ready(function(){
loadEmployeeTypes();
$('.datepicker').datepicker({
format: "yyyy/mm/dd",
autoclose: true
});
});
/**
* Loads the the enmployee types into their select option
*/
function loadEmployeeTypes(){
let baseUrl = getbaseUrl();
$.ajax({
url: baseUrl + '/api/employee/types',
type: 'GET',
dataType: 'json',
success:function(data){
$(data).each(function(i,v){
$('#newEmployeeType').append(
'<option value="' + v.id + '">'+ v.name + '</option>'
);
});
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
}
function saveNewEmployee(){
let baseUrl = getbaseUrl();
let parameters = {
"firstName":$('#newEmployeeFirstName').val(),
"middleName":$('#newEmployeeMiddleName').val(),
"lastName":$('#newEmployeeLastName').val(),
"birthDate":$('#newEmployeeBirthDate').val(),
"email":$('#newEmployeeEmail').val(),
"phone":$('#newEmployeePhone').val(),
"idEmployeeType":$('#newEmployeeType').val(),
"contractType":$('#NewEmpployyContractType').val()
};
$.ajax({
url: baseUrl + '/api/employee',
type: 'POST',
dataType: 'json',
data: parameters,
success:function(data){
$('#modalServerResponseSuccess').modal('show');
document.getElementById('serverResponseSuccess').innerHTML = 'The employee ' + data['fullName'] + ' has been created with the code ' + data['employeeCode'];
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
}

View File

@@ -0,0 +1,359 @@
/**
* Bootstrapping the starting actions for the module
*/
$(document).ready(function(){
let baseUrl = getbaseUrl();
loadEmployeeTypesForWorkDays();
$('.datepicker').datepicker({
format: "yyyy-mm-dd",
autoclose: true
});
// Not to be edited
$("#hidenEmployeeCodeForWorkDays").hide();
// Setting up bloodhound typeahead
let employeesList = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace("name"),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
'cache': false,
url: baseUrl + '/api/employee/find',
replace: function(url, uriEncodedQuery) {
return url + '/' + uriEncodedQuery
},
wildcard: '%QUERY',
filter: function (data) {
return data;
}
}
});
employeesList.initialize();
$("#workDaysSearchEmployee").typeahead({
hint: true,
highlight: true,
minLength: 3
},
{
name: "result",
displayKey: "fullName",
source: employeesList.ttAdapter()
}).bind("typeahead:selected", function(obj, datum, name) {
$(this).data("id", datum.code);
loadEmployeeDataForWorkDays(datum.code);
validateEmployeeCanDoOtherRoles(datum.code);
loadSalaryDetails(datum.code);
$('#hidenEmployeeCodeForWorkDaysCode').val(datum.code); // For future reference
});
});
/**
* Loads the the employee types into their select option
*/
function loadEmployeeTypesForWorkDays(){
let baseUrl = getbaseUrl();
$.ajax({
url: baseUrl + '/api/employee/types',
type: 'GET',
dataType: 'json',
success:function(data){
$(data).each(function(i,v){
$('#workDaysEmployeeRol').append(
'<option value="' + v.id + '">'+ v.name + '</option>'
);
$('#workDaysEmployeePerformedRol').append(
'<option value="' + v.id + '">'+ v.name + '</option>'
);
});
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
}
/**
* Searches the employee data by its employee code and loads it
* into the form to be edited and saved
*
* @param code string
*/
function loadEmployeeDataForWorkDays(code){
let baseUrl = getbaseUrl();
$.ajax({
url: baseUrl + '/api/employee/code/' + code,
type: 'GET',
dataType: 'json',
success:function(data){
let fullName = data['firstName'] + ' ' + data['middleName'] + ' ' + data['lastName'];
$('#workDaysEmployeeName').val(fullName);
$('#workDaysEmployeeRol').val(data['idEmployeeType']);
$('#workDaysEmployeePerformedRol').val(data['idEmployeeType']);
$('#workDaysEmployeeContractType').val(data['contractType']);
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
}
/**
* Based on the employee code determines their type to decide if
* they should be able to cover for other roles or not
*
* @param code string
*/
function validateEmployeeCanDoOtherRoles(code){
let baseUrl = getbaseUrl();
$.ajax({
url: baseUrl + '/api/employee/type/' + code,
type: 'GET',
dataType: 'json',
success:function(data){
if(data == 3){
$("#workDaysEmployeePerformedRol").prop('disabled', false);
}
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
}
function loadSalaryDetails(code){
let baseUrl = getbaseUrl();
$.ajax({
url: baseUrl + '/api/employee/salary/' + code,
type: 'GET',
dataType: 'json',
success:function(data){
$('#workDaysEmployeeSalaryRaw').val(data['raw']);
$('#workDaysEmployeeSalaryTaxes').val(data['taxes']);
$('#workDaysEmployeeSalaryFinal').val(data['real']);
$('#workDaysEmployeeSalaryVouchers').val(data['vouchers']);
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
}
/**
* Bootstraper for the save action
*
* If the search by date function has been used it's then assumed that the
* desired action is to update else the function will attempt to create a new
* record for the worked day
*/
function processSaveActionWorkDay(){
if($('#workDaysSearchByDate').val() === ''){
saveNewWorkDay();
}else {
updateNewWorkDay();
}
}
function saveNewWorkDay(){
let baseUrl = getbaseUrl();
let parameters = {
"code":$('#hidenEmployeeCodeForWorkDaysCode').val(),
"idEmployeeTypePerformed":$('#workDaysEmployeePerformedRol').val(),
"deliveries":$('#workDaysEmployeeDeliveries').val(),
"date":$('#workDaysEmployeeWorkedDay').val(),
};
$.ajax({
url: baseUrl + '/api/employee/workday',
type: 'POST',
dataType: 'json',
data: parameters,
success:function(data){
$('#modalServerResponseSuccess').modal('show');
document.getElementById('serverResponseSuccess').innerHTML = data['message'];
loadSalaryDetails($('#hidenEmployeeCodeForWorkDaysCode').val());
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
}
function updateNewWorkDay(){
let baseUrl = getbaseUrl();
let parameters = {
"code":$('#hidenEmployeeCodeForWorkDaysCode').val(),
"idEmployeeTypePerformed":$('#workDaysEmployeePerformedRol').val(),
"deliveries":$('#workDaysEmployeeDeliveries').val(),
"date":$('#workDaysEmployeeWorkedDay').val(),
};
$.ajax({
url: baseUrl + '/api/employee/workday',
type: 'PUT',
dataType: 'json',
data: parameters,
success:function(data){
$('#modalServerResponseSuccess').modal('show');
document.getElementById('serverResponseSuccess').innerHTML = data['message'];
loadSalaryDetails($('#hidenEmployeeCodeForWorkDaysCode').val());
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
}
/**
* If the search by date field is changed from its default empty status it'll
* load the data of the given work day and enable the update mode
*/
$('#workDaysSearchByDate').on("change", function(data){
let baseUrl = getbaseUrl();
let date = $(this).val();
let code = $('#hidenEmployeeCodeForWorkDaysCode').val();
// The employee hasn't been picked
if (code === ''){
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = 'Please select an employee in the search form first.';
return false; // Exits the function
}
$.ajax({
url: baseUrl + '/api/employee/salary/date/' + date + '/code/' + code,
type: 'GET',
dataType: 'json',
success:function(data){
$('#workDaysEmployeeRol').val(data['idEmployeeType']);
$('#workDaysEmployeeContractType').val(data['contractType']);
$('#workDaysEmployeeWorkedDay').val(date);
$('#workDaysEmployeeDeliveries').val(data['deliveries']);
$('#workDaysEmployeePerformedRol').val(data['idEmployeeTypePerformed']);
},
error:function(x,e) {
let responseText = $.parseJSON(x["responseText"]);
if (x.status==0) {
$('#modalErrorInternetConnection').modal('show');
} else if(x.status==404) {
$('#modalError404').modal('show');
} else if(x.status==500) {
$('#modalServerResponseError').modal('show');
document.getElementById('modalResponseError').innerHTML = responseText['message'];
} else if(e=='parsererror') {
$('#modalErrorParsererror').modal('show');
} else if(e=='timeout'){
$('#modalErrorTimeout').modal('show');
} else {
$('#modalErrorOther').modal('show');
}
},
});
});

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -12,8 +12,6 @@ class SessionApplication{
$this->cryptographyService = $cryptographyService; $this->cryptographyService = $cryptographyService;
$this->pdo = $mysql; $this->pdo = $mysql;
$this->asserts = $asserts; $this->asserts = $asserts;
$this->databaseSelectQueryErrorMessage = 'There was an error inserting the record.';
} }
/** /**
@@ -41,15 +39,18 @@ class SessionApplication{
/** /**
* @param $userName string * @param $userName string
* @return mixed * @return mixed
* @throws Exception
*/ */
function getPassword($userName){ function getPassword($userName){
$this->asserts->userName($userName); $this->asserts->isNotEmpty($userName, "The username can't be empty");
$this->asserts->isString($userName, "The username must be a string.");
$this->asserts->betweenLength($userName, 1, 50, "The username must have a length between 1 and 50 characters.");
$stmt = $this->pdo->prepare("SELECT password FROM users WHERE name = :userName"); $stmt = $this->pdo->prepare("SELECT password FROM users WHERE name = :userName");
$stmt->execute(array(':userName' => $userName)); $stmt->execute(array(':userName' => $userName));
$results = $stmt->fetchAll(); $results = $stmt->fetchAll();
if(!$results){ if(!$results){
exit($this->databaseSelectQueryErrorMessage); throw new Exception('The user or password didnt match, please try again.');
} }
$stmt = null; $stmt = null;
return $results[0]['password']; return $results[0]['password'];
@@ -62,14 +63,18 @@ class SessionApplication{
* @throws Exception * @throws Exception
*/ */
function newSession($userName, $password){ function newSession($userName, $password){
$this->asserts->userName($userName); $this->asserts->isNotEmpty($userName, "The username can't be empty");
$this->asserts->password($password); $this->asserts->isString($userName, "The username must be a string.");
$this->asserts->betweenLength($userName, 1, 50, "The username must have a length between 1 and 50 characters.");
$this->asserts->isNotEmpty($password, "The password can't be empty");
$this->asserts->isString($password, "The password must be a string.");
$this->asserts->betweenLength($password, 1, 50, "The password must have a length between 1 and 50 characters.");
$storedPassword = $this->getPassword($userName); $storedPassword = $this->getPassword($userName);
// If the credentials don't match anything in the the records // If the credentials don't match anything in the the records
if(!isset($storedPassword)){ if(!isset($storedPassword)){
throw new Exception('The user or password didnt match, please try again.'); return false;
} }
// Already has a session // Already has a session
@@ -82,17 +87,40 @@ class SessionApplication{
return true; return true;
} }
else{ else{
return false; throw new Exception('The user or password didnt match, please try again.');
} }
} }
/** /**
* @return string * @param $userName
* @param $password
* @return array
* @throws Exception
*/
function login($userName, $password){
$this->asserts->isNotEmpty($userName, "The username can't be empty");
$this->asserts->isString($userName, "The username must be a string.");
$this->asserts->betweenLength($userName, 1, 50, "The username must have a length between 1 and 50 characters.");
$this->asserts->isNotEmpty($password, "The password can't be empty");
$this->asserts->isString($password, "The password must be a string.");
$this->asserts->betweenLength($password, 1, 50, "The password must have a length between 1 and 50 characters.");
if($this->newSession($userName, $password)){
return array('status' => 'success', 'message' => 'Logged in successfully.');
}
else{
throw new Exception('The user or password didnt match, please try again.');
}
}
/**
* @return array
*/ */
function destroySession(){ function destroySession(){
session_destroy(); session_destroy();
return "Sucessfully logged out."; return array('status' => 'success', 'message' => 'Successfully logged out.');
} }
} }
?> ?>

View File

@@ -24,6 +24,7 @@ $container['mysql'] = function ($c) {
// The database parameters // The database parameters
$host = $mysqlSettings['host']; $host = $mysqlSettings['host'];
$port = $mysqlSettings['port'];
$database = $mysqlSettings['database']; $database = $mysqlSettings['database'];
$user = $mysqlSettings['user']; $user = $mysqlSettings['user'];
$password = $mysqlSettings['password']; $password = $mysqlSettings['password'];
@@ -34,7 +35,7 @@ $container['mysql'] = function ($c) {
$databaseConnectionErrorMessage = $mysqlSettings['databaseConnectionErrorMessage']; $databaseConnectionErrorMessage = $mysqlSettings['databaseConnectionErrorMessage'];
// Initiate the connection // Initiate the connection
$dsn = "mysql:host=$host;dbname=$database;charset=$charset"; $dsn = "mysql:host=$host;port=$port;dbname=$database;charset=$charset";
try { try {
$pdo = new PDO($dsn, $user, $password, $pdoConnectionOptions); $pdo = new PDO($dsn, $user, $password, $pdoConnectionOptions);
} catch (Exception $e) { } catch (Exception $e) {
@@ -69,4 +70,4 @@ $container['employeeApplication'] = function ($c) {
$employeeApplication = new App\Application\EmployeeApplication($employeeSettings, $employeeApplication = new App\Application\EmployeeApplication($employeeSettings,
$c['mysql'], $c['cryptographyService'], $c['asserts']); $c['mysql'], $c['cryptographyService'], $c['asserts']);
return $employeeApplication; return $employeeApplication;
}; };

View File

@@ -22,14 +22,14 @@ $app->get('/api/session', function (Request $request, Response $response, array
$app->post('/api/session/login', function ($request, $response) { $app->post('/api/session/login', function ($request, $response) {
$requestData = $request->getParsedBody(); $requestData = $request->getParsedBody();
$data = $this->sessionApplication->newSession($requestData['userName'], $requestData['password']); $data = $this->sessionApplication->login($requestData['userName'], $requestData['password']);
return $response->withStatus(200) return $response->withStatus(200)
->withHeader('Content-Type', 'application/json') ->withHeader('Content-Type', 'application/json')
->write(json_encode($data)); ->write(json_encode($data));
}); });
$app->post('/api/session/logout', function (Request $request, Response $response, array $args) { $app->get('/api/session/logout', function (Request $request, Response $response, array $args) {
return $response->withStatus(200) return $response->withStatus(200)
->withHeader('Content-Type', 'application/json') ->withHeader('Content-Type', 'application/json')
->write(json_encode($this->sessionApplication->destroySession())); ->write(json_encode($this->sessionApplication->destroySession()));
@@ -41,10 +41,12 @@ $app->get('/api/employee/types', function (Request $request, Response $response,
->write(json_encode($this->employeeApplication->listEmployeeTypes())); ->write(json_encode($this->employeeApplication->listEmployeeTypes()));
}); });
$app->get('/api/employee/all', function (Request $request, Response $response, array $args) { $app->get('/api/employee/find/{partialName}', function (Request $request, Response $response, array $args) {
$partialName = $args['partialName'];
return $response->withStatus(200) return $response->withStatus(200)
->withHeader('Content-Type', 'application/json') ->withHeader('Content-Type', 'application/json')
->write(json_encode($this->employeeApplication->listAllActiveEmployees())); ->write(json_encode($this->employeeApplication->findEmployeeByFullName($partialName)));
}); });
$app->post('/api/employee', function ($request, $response) { $app->post('/api/employee', function ($request, $response) {
@@ -63,12 +65,12 @@ $app->put('/api/employee', function ($request, $response) {
->write(json_encode($this->employeeApplication->updateEmployeeData($requestData))); ->write(json_encode($this->employeeApplication->updateEmployeeData($requestData)));
}); });
$app->DELETE('/api/employee/{idEmployee}', function (Request $request, Response $response, array $args) { $app->DELETE('/api/employee/{code}', function (Request $request, Response $response, array $args) {
$idEmployee = $args['idEmployee']; $code = $args['code'];
return $response->withStatus(200) return $response->withStatus(200)
->withHeader('Content-Type', 'application/json') ->withHeader('Content-Type', 'application/json')
->write(json_encode($this->employeeApplication->disableEmployeeRecord($idEmployee))); ->write(json_encode($this->employeeApplication->disableEmployeeRecord($code)));
}); });
$app->get('/api/employee/type/{code}', function (Request $request, Response $response, array $args) { $app->get('/api/employee/type/{code}', function (Request $request, Response $response, array $args) {
@@ -79,10 +81,51 @@ $app->get('/api/employee/type/{code}', function (Request $request, Response $res
->write(json_encode($this->employeeApplication->getIdEmployeeTypeByCode($code))); ->write(json_encode($this->employeeApplication->getIdEmployeeTypeByCode($code)));
}); });
$app->get('/api/employee/{idEmployee}', function (Request $request, Response $response, array $args) { $app->get('/api/employee/id/{idEmployee}', function (Request $request, Response $response, array $args) {
$idEmployee = $args['idEmployee']; $idEmployee = $args['idEmployee'];
return $response->withStatus(200) return $response->withStatus(200)
->withHeader('Content-Type', 'application/json') ->withHeader('Content-Type', 'application/json')
->write(json_encode($this->employeeApplication->proxyGetEmployeeDataById($idEmployee))); ->write(json_encode($this->employeeApplication->proxyGetEmployeeDataById($idEmployee)));
}); });
$app->get('/api/employee/code/{code}', function (Request $request, Response $response, array $args) {
$code = $args['code'];
return $response->withStatus(200)
->withHeader('Content-Type', 'application/json')
->write(json_encode($this->employeeApplication->getEmployeeDataByCode($code)));
});
$app->post('/api/employee/workday', function ($request, $response) {
$requestData = $request->getParsedBody();
return $response->withStatus(200)
->withHeader('Content-Type', 'application/json')
->write(json_encode($this->employeeApplication->newWorkedDay($requestData)));
});
$app->put('/api/employee/workday', function ($request, $response) {
$requestData = $request->getParsedBody();
return $response->withStatus(200)
->withHeader('Content-Type', 'application/json')
->write(json_encode($this->employeeApplication->updateWorkDay($requestData)));
});
$app->get('/api/employee/salary/{code}', function (Request $request, Response $response, array $args) {
$code = $args['code'];
return $response->withStatus(200)
->withHeader('Content-Type', 'application/json')
->write(json_encode($this->employeeApplication->calculateSalaryByCode($code)));
});
$app->get('/api/employee/salary/date/{date}/code/{code}', function (Request $request, Response $response, array $args) {
$date = $args['date'];
$code = $args['code'];
return $response->withStatus(200)
->withHeader('Content-Type', 'application/json')
->write(json_encode($this->employeeApplication->getDataWorkDayByDateAndCode($date, $code)));
});

View File

@@ -6,78 +6,104 @@ use Respect\Validation\Validator as v;
class Asserts{ class Asserts{
/** /**
* @param $string * @param $string string
* @param $errorMessage string
* @throws Exception * @throws Exception
*/ */
function userName($string){ function isString($string, $errorMessage){
$validateFirstName = v::stringType()->notEmpty()->length(1, 50)->validate($string); $validation = v::stringType()->validate($string);
if(!$validateFirstName){ if(!$validation){
throw new Exception('The user name must be a string between 1 and 50 characters'); throw new Exception($errorMessage);
} }
} }
/** /**
* @param $string * @param $string string
* @param $errorMessage string
* @throws Exception * @throws Exception
*/ */
function password($string){ function isNotEmpty($string, $errorMessage){
$validateFirstName = v::stringType()->notEmpty()->length(1, 50)->validate($string); $validation = v::notEmpty()->validate($string);
if(!$validateFirstName){ if(!$validation){
throw new Exception('The password must be a string between 1 and 50 characters'); throw new Exception($errorMessage);
} }
} }
/** /**
* @param $string * @param $string string
* @param $min integer
* @param $max integer
* @param $errorMessage string
* @throws Exception * @throws Exception
*/ */
function firstName($string){ function betweenLength($string, $min, $max, $errorMessage){
$validateFirstName = v::stringType()->notEmpty()->length(1, 100)->validate($string); $validation = v::length($min, $max)->validate($string);
if(!$validateFirstName){ if(!$validation){
throw new Exception('The first name must be a string between 1 and 100 characters'); throw new Exception($errorMessage);
} }
} }
/** /**
* @param $string * @param $number integer
* @param $errorMessage string
* @throws Exception * @throws Exception
*/ */
function middleName($string){ function higherThanZero($number, $errorMessage){
if(!v::stringType()->notEmpty()->length(1, 100)->validate($string)){ if($number <= 0){
throw new Exception('The middle name must be a string between 1 and 100 characters'); throw new Exception($errorMessage);
} }
} }
/** /**
* @param $string * Compares a string against a regex to determine if it's an email
*
* @param $string string
* @param $errorMessage string
* @throws Exception * @throws Exception
*/ */
function birthDate($string){ function isEmail($string, $errorMessage){
if(!v::date('Y-m-d')->notEmpty()->validate($string)){ if(!filter_var($string, FILTER_VALIDATE_EMAIL)){
throw new Exception('The birth date must be in the yyyy-mm-dd format'); throw new Exception($errorMessage);
} }
} }
/** /**
* @param $string * @param $string string
* @param $array array
* @param $errorMessage string
* @throws Exception * @throws Exception
*/ */
function email($string){ function existInArray($string, $array, $errorMessage){
if(!v::stringType()->notEmpty()->length(1, 100)->validate($string)){ if(!in_array($string, $array)){
throw new Exception('The email must be a string between 1 and 100 characters'); throw new Exception($errorMessage);
} }
} }
/** /**
* @param $string * Compares two dates to dertermine if they have the same month
*
* @param $firstDate date
* @param $secondDate date
* @param $errorMessage string
* @throws Exception * @throws Exception
*/ */
function phone($string){ function datesHaveSameMonth($firstDate, $secondDate, $errorMessage){
if(!v::digit()->notEmpty()->length(10, 10)->validate($string)){ if (date("m",strtotime($firstDate)) != date("m",strtotime($secondDate))){
throw new Exception('The phone must be a numeric value of 10 digits'); throw new Exception($errorMessage);
}
}
/**
* @param $date
* @param $errorMessage
* @throws Exception
*/
function dateIsNotInTheFuture($date, $errorMessage){
if ($date > date('Y-m-d')){
throw new Exception($errorMessage);
} }
} }
} }

View File

@@ -26,7 +26,8 @@ return [
// Datanase settings // Datanase settings
'mysql' => [ 'mysql' => [
'host' => 'localhost', 'host' => 'mysql',
'port' => '3307',
'database' => 'payroll', 'database' => 'payroll',
'user' => 'root', 'user' => 'root',
'password' => '12345678', 'password' => '12345678',
@@ -43,7 +44,20 @@ return [
// Employee settings // Employee settings
'employee' => [ 'employee' => [
'codeLength' => '5', 'codeLength' => '3',
'contractTypes' => array('INTERNO', 'EXTERNO'),
'hoursPerWorkDay' => 8,
'paymentPerHour' => 30,
'bonusPerDelivery' => 5,
'perHourBonusDriver' => 10,
'perHourBonusLoader' => 5,
'perHourBonusAux' => 0,
'baseIsr' => .09,
'extraIsr' => .03,
'taxesAddUp' => true, // If true this will be total/(9 + 3) else they're subtracted separately
'amountForExtraTaxes' => 16000,
'vouchersForAllContractTypes' => false, // Outsourced personal won't get vouchers
'percentOfPaymentForVouchers' => .04,
], ],
], ],
]; ];

1
database/.dockerignore Normal file
View File

@@ -0,0 +1 @@
Dockerfile

7
database/Dockerfile Normal file
View File

@@ -0,0 +1,7 @@
FROM mysql:5.7
# Starting scripts
ADD . /docker-entrypoint-initdb.d
# Config
ADD my.cnf /etc/mysql

View File

@@ -11,7 +11,7 @@ CREATE TABLE IF NOT EXISTS `persons` (
`lastName` varbinary(500) comment 'The last name of the person', `lastName` varbinary(500) comment 'The last name of the person',
`birthDate` DATE NOT NULL DEFAULT '1900-01-01' comment 'Date of birth of the person', `birthDate` DATE NOT NULL DEFAULT '1900-01-01' comment 'Date of birth of the person',
`email` varbinary(500) NOT NULL comment 'The email adress of the person', `email` varbinary(500) NOT NULL comment 'The email adress of the person',
`phone` INT(10) UNSIGNED NOT NULL comment 'The phone number of the person should be the mobile one but leaves room for home ones', `phone` BIGINT(10) UNSIGNED NOT NULL comment 'The phone number of the person should be the mobile one but leaves room for home ones',
`status` ENUM('ACTIVE', 'INACTIVE') NOT NULL DEFAULT 'ACTIVE', `status` ENUM('ACTIVE', 'INACTIVE') NOT NULL DEFAULT 'ACTIVE',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP comment 'The date on which the registry was created', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP comment 'The date on which the registry was created',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment 'The date of the last time the row was modified', `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment 'The date of the last time the row was modified',
@@ -71,5 +71,44 @@ CREATE TABLE IF NOT EXISTS `employees` (
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP comment 'The date on which the registry was created', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP comment 'The date on which the registry was created',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment 'The date of the last time the row was modified', `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment 'The date of the last time the row was modified',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
INDEX `idx_contractType` (`contractType`),
UNIQUE (`code`) UNIQUE (`code`)
); );
DROP TABLE IF EXISTS paymentsPerEmployeePerDay;
CREATE TABLE IF NOT EXISTS `paymentsPerEmployeePerDay` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`idEmployee` INT UNSIGNED NOT NULL comment 'The employee to who this payment will be made',
`date` DATE NOT NULL DEFAULT '1900-01-01' comment 'Date of the worked day',
`baseAmount` DOUBLE(10,2) NOT NULL DEFAULT 0.0 comment 'Amount paid for the hours worked',
`bonusTime` DOUBLE(10,2) NOT NULL DEFAULT 0.0 comment 'Bonus paid for the hours worked',
`deliveries` DOUBLE(10,2) NOT NULL DEFAULT 0.0 comment 'Bonus for the number of deliveries',
`status` ENUM('ACTIVE', 'INACTIVE') NOT NULL DEFAULT 'ACTIVE',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP comment 'The date on which the registry was created',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment 'The date of the last time the row was modified',
PRIMARY KEY (`id`),
FOREIGN KEY (idEmployee) REFERENCES employees(id),
UNIQUE (`idEmployee`, `date`, `status`)
);
DROP TABLE IF EXISTS paymentsPerEmployeePerDayDetail;
CREATE TABLE IF NOT EXISTS `paymentsPerEmployeePerDayDetail` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`idPaymentPerEmployeePerDay` INT UNSIGNED NOT NULL comment 'References the payment for the work day',
`idEmployeeType` INT UNSIGNED NOT NULL comment 'The type of employee',
`idEmployeeTypePerformed` INT UNSIGNED NOT NULL comment 'The employee working for the day as',
`contractType` ENUM('INTERNO', 'EXTERNO') NOT NULL comment 'The type of contract',
`hoursWorked` DOUBLE(10,2) NOT NULL DEFAULT 0.0 comment 'Hours worked for the day',
`paymentPerHour` DOUBLE(10,2) NOT NULL DEFAULT 0.0 comment 'Payment per hour worked',
`bonusPerHour` DOUBLE(10,2) NOT NULL DEFAULT 0.0 comment 'Bonus payment per hour worked',
`deliveries` INT UNSIGNED NOT NULL DEFAULT 0 comment 'Total amount of deliveries for the day',
`paymentPerDelivery` DOUBLE(10,2) NOT NULL DEFAULT 0.0 comment 'Payment for each delivery done',
`status` ENUM('ACTIVE', 'INACTIVE') NOT NULL DEFAULT 'ACTIVE',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP comment 'The date on which the registry was created',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment 'The date of the last time the row was modified',
PRIMARY KEY (`id`),
FOREIGN KEY (idPaymentPerEmployeePerDay) REFERENCES paymentsPerEmployeePerDay(id),
FOREIGN KEY (idEmployeeType) REFERENCES employeeType(id),
FOREIGN KEY (idEmployeeTypePerformed) REFERENCES employeeType(id),
FOREIGN KEY (contractType) REFERENCES employees(contractType)
);

20
database/my.cnf Normal file
View File

@@ -0,0 +1,20 @@
# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
[mysqld]
port = 3307
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

28
docker-compose.yml Normal file
View File

@@ -0,0 +1,28 @@
version: '3'
services:
api:
container_name: payroll_api
build: api-payroll/
ports:
- "8085:80"
volumes:
- ./volumes/apache-logs:/var/log/apache2
depends_on:
- mysql
mysql:
container_name: payroll_mysql
restart: always
build: database
expose:
- "3307"
ports:
- "3307:3307"
volumes:
- ./volumes/mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: '12345678'
MYSQL_USER: 'sloth'
MYSQL_PASS: '12345678'
volumes:
mysql-data:
apache-logs:

View File

@@ -1,25 +0,0 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
# Change these settings to your own preference
indent_style = space
indent_size = 4
max_line_length = 180
# We recommend you to keep these unchanged
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.{ts,tsx,js,jsx,json,css,scss,sql,ejs}]
indent_style = space
indent_size = 2
[*.md]
trim_trailing_whitespace = false

View File

@@ -1 +0,0 @@
node_modules/*

View File

@@ -1,2 +0,0 @@
node_modules
target

View File

@@ -1,12 +0,0 @@
# Prettier configuration
printWidth: 140
singleQuote: true
tabWidth: 2
useTabs: false
# js and ts rules:
arrowParens: avoid
# jsx and tsx rules:
jsxBracketSameLine: false

View File

@@ -1,25 +0,0 @@
{
"generator-jhipster": {
"jhipsterVersion": "5.1.0",
"applicationType": "monolith",
"baseName": "payroll",
"clientFramework": "react",
"useSass": true,
"clientPackageManager": "yarn",
"authenticationType": "session",
"cacheProvider": "no",
"databaseType": "sql",
"devDatabaseType": "mysql",
"prodDatabaseType": "mysql",
"testFrameworks": [],
"jhiPrefix": "jhi",
"otherModules": [
{
"name": "generator-jhipster-docker",
"version": "2.5.0"
}
],
"enableTranslation": false,
"skipServer": true
}
}

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/util/pagination.constants.ts","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/util/pagination.constants.ts","mtime":1533613273281},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["export var ITEMS_PER_PAGE = 20;\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/util/pagination.constants.ts","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/util/pagination.constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,cAAc,GAAG,EAAE,CAAC","sourcesContent":["export const ITEMS_PER_PAGE = 20;\n"]}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/reducers/application-profile.ts","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/reducers/application-profile.ts","mtime":1533613271641},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import * as tslib_1 from \"tslib\";\nimport axios from 'axios';\nimport { SUCCESS } from 'app/shared/reducers/action-type.util';\nexport var ACTION_TYPES = {\n GET_PROFILE: 'applicationProfile/GET_PROFILE'\n};\nvar initialState = {\n ribbonEnv: '',\n inProduction: true,\n isSwaggerEnabled: false\n};\nexport default (function (state, action) {\n if (state === void 0) { state = initialState; }\n switch (action.type) {\n case SUCCESS(ACTION_TYPES.GET_PROFILE):\n var data = action.payload.data;\n return tslib_1.__assign({}, state, { ribbonEnv: data['display-ribbon-on-profiles'], inProduction: data.activeProfiles.includes('prod'), isSwaggerEnabled: data.activeProfiles.includes('swagger') });\n default:\n return state;\n }\n});\nexport var getProfile = function () { return ({\n type: ACTION_TYPES.GET_PROFILE,\n payload: axios.get('management/info')\n}); };\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/reducers/application-profile.ts","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/reducers/application-profile.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAE/D,MAAM,CAAC,IAAM,YAAY,GAAG;IAC1B,WAAW,EAAE,gCAAgC;CAC9C,CAAC;AAEF,IAAM,YAAY,GAAG;IACnB,SAAS,EAAE,EAAE;IACb,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,KAAK;CACxB,CAAC;AAIF,gBAAe,UAAC,KAA6C,EAAE,MAAM;IAArD,sBAAA,EAAA,oBAA6C;IAC3D,QAAQ,MAAM,CAAC,IAAI,EAAE;QACnB,KAAK,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;YAC5B,IAAA,0BAAI,CAAoB;YAChC,4BACK,KAAK,IACR,SAAS,EAAE,IAAI,CAAC,4BAA4B,CAAC,EAC7C,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAClD,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,IACzD;QACJ;YACE,OAAO,KAAK,CAAC;KAChB;AACH,CAAC,EAAC;AAEF,MAAM,CAAC,IAAM,UAAU,GAAG,cAAM,OAAA,CAAC;IAC/B,IAAI,EAAE,YAAY,CAAC,WAAW;IAC9B,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;CACtC,CAAC,EAH8B,CAG9B,CAAC","sourcesContent":["import axios from 'axios';\n\nimport { SUCCESS } from 'app/shared/reducers/action-type.util';\n\nexport const ACTION_TYPES = {\n GET_PROFILE: 'applicationProfile/GET_PROFILE'\n};\n\nconst initialState = {\n ribbonEnv: '',\n inProduction: true,\n isSwaggerEnabled: false\n};\n\nexport type ApplicationProfileState = Readonly<typeof initialState>;\n\nexport default (state: ApplicationProfileState = initialState, action): ApplicationProfileState => {\n switch (action.type) {\n case SUCCESS(ACTION_TYPES.GET_PROFILE):\n const { data } = action.payload;\n return {\n ...state,\n ribbonEnv: data['display-ribbon-on-profiles'],\n inProduction: data.activeProfiles.includes('prod'),\n isSwaggerEnabled: data.activeProfiles.includes('swagger')\n };\n default:\n return state;\n }\n};\n\nexport const getProfile = () => ({\n type: ACTION_TYPES.GET_PROFILE,\n payload: axios.get('management/info')\n});\n"]}]}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/header/menus/index.ts","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/header/menus/index.ts","mtime":1533613273189},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["export * from './account';\nexport * from './admin';\nexport * from './entities';\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/header/menus/index.ts","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/header/menus/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC","sourcesContent":["export * from './account';\nexport * from './admin';\nexport * from './entities';\n"]}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/store.ts","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/store.ts","mtime":1533613271013},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import { createStore, applyMiddleware, compose } from 'redux';\nimport promiseMiddleware from 'redux-promise-middleware';\nimport thunkMiddleware from 'redux-thunk';\nimport reducer from 'app/shared/reducers';\nimport DevTools from './devtools';\nimport errorMiddleware from './error-middleware';\nimport notificationMiddleware from './notification-middleware';\nimport loggerMiddleware from './logger-middleware';\nimport { loadingBarMiddleware } from 'react-redux-loading-bar';\nvar defaultMiddlewares = [\n thunkMiddleware,\n errorMiddleware,\n notificationMiddleware,\n promiseMiddleware(),\n loadingBarMiddleware(),\n loggerMiddleware\n];\nvar composedMiddlewares = function (middlewares) {\n return process.env.NODE_ENV === 'development'\n ? compose(applyMiddleware.apply(void 0, defaultMiddlewares.concat(middlewares)), DevTools.instrument())\n : compose(applyMiddleware.apply(void 0, defaultMiddlewares.concat(middlewares)));\n};\nvar initialize = function (initialState, middlewares) {\n if (middlewares === void 0) { middlewares = []; }\n return createStore(reducer, initialState, composedMiddlewares(middlewares));\n};\nexport default initialize;\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/store.ts","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,iBAAiB,MAAM,0BAA0B,CAAC;AACzD,OAAO,eAAe,MAAM,aAAa,CAAC;AAC1C,OAAO,OAAuB,MAAM,qBAAqB,CAAC;AAC1D,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,sBAAsB,MAAM,2BAA2B,CAAC;AAC/D,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,IAAM,kBAAkB,GAAG;IACzB,eAAe;IACf,eAAe;IACf,sBAAsB;IACtB,iBAAiB,EAAE;IACnB,oBAAoB,EAAE;IACtB,gBAAgB;CACjB,CAAC;AACF,IAAM,mBAAmB,GAAG,UAAA,WAAW;IACrC,OAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;QACpC,CAAC,CAAC,OAAO,CACL,eAAe,eAAI,kBAAkB,QAAK,WAAW,IACrD,QAAQ,CAAC,UAAU,EAAE,CACtB;QACH,CAAC,CAAC,OAAO,CAAC,eAAe,eAAI,kBAAkB,QAAK,WAAW,GAAE;AALnE,CAKmE,CAAC;AAEtE,IAAM,UAAU,GAAG,UAAC,YAAyB,EAAE,WAAgB;IAAhB,4BAAA,EAAA,gBAAgB;IAAK,OAAA,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAApE,CAAoE,CAAC;AAEzI,eAAe,UAAU,CAAC","sourcesContent":["import { createStore, applyMiddleware, compose } from 'redux';\nimport promiseMiddleware from 'redux-promise-middleware';\nimport thunkMiddleware from 'redux-thunk';\nimport reducer, { IRootState } from 'app/shared/reducers';\nimport DevTools from './devtools';\nimport errorMiddleware from './error-middleware';\nimport notificationMiddleware from './notification-middleware';\nimport loggerMiddleware from './logger-middleware';\nimport { loadingBarMiddleware } from 'react-redux-loading-bar';\n\nconst defaultMiddlewares = [\n thunkMiddleware,\n errorMiddleware,\n notificationMiddleware,\n promiseMiddleware(),\n loadingBarMiddleware(),\n loggerMiddleware\n];\nconst composedMiddlewares = middlewares =>\n process.env.NODE_ENV === 'development'\n ? compose(\n applyMiddleware(...defaultMiddlewares, ...middlewares),\n DevTools.instrument()\n )\n : compose(applyMiddleware(...defaultMiddlewares, ...middlewares));\n\nconst initialize = (initialState?: IRootState, middlewares = []) => createStore(reducer, initialState, composedMiddlewares(middlewares));\n\nexport default initialize;\n"]}]}

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/model/user.model.ts","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/model/user.model.ts","mtime":1533613273393},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["export var defaultValue = {\n id: null,\n login: null,\n firstName: null,\n lastName: null,\n email: null,\n activated: false,\n langKey: null,\n authorities: null,\n createdBy: null,\n createdDate: null,\n lastModifiedBy: null,\n lastModifiedDate: null,\n password: null\n};\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/model/user.model.ts","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/model/user.model.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,IAAM,YAAY,GAAoB;IAC3C,EAAE,EAAE,IAAI;IACR,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI;IACtB,QAAQ,EAAE,IAAI;CACf,CAAC","sourcesContent":["export interface IUser {\n id?: any;\n login?: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n activated?: boolean;\n langKey?: string;\n authorities?: any[];\n createdBy?: string;\n createdDate?: Date;\n lastModifiedBy?: string;\n lastModifiedDate?: Date;\n password?: string;\n}\n\nexport const defaultValue: Readonly<IUser> = {\n id: null,\n login: null,\n firstName: null,\n lastName: null,\n email: null,\n activated: false,\n langKey: null,\n authorities: null,\n createdBy: null,\n createdDate: null,\n lastModifiedBy: null,\n lastModifiedDate: null,\n password: null\n};\n"]}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/docs/docs.tsx","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/docs/docs.tsx","mtime":1533613272309},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import React from 'react';\nvar DocsPage = function () { return (React.createElement(\"div\", null,\n React.createElement(\"iframe\", { src: \"../swagger-ui/index.html\", width: \"100%\", height: \"800\", title: \"Swagger UI\", seamless: true, style: { border: 'none' } }))); };\nexport default DocsPage;\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/docs/docs.tsx","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/docs/docs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,IAAM,QAAQ,GAAG,cAAM,OAAA,CACrB;IACE,gCAAQ,GAAG,EAAC,0BAA0B,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,YAAY,EAAC,QAAQ,QAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAI,CACtH,CACP,EAJsB,CAItB,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import React from 'react';\n\nconst DocsPage = () => (\n <div>\n <iframe src=\"../swagger-ui/index.html\" width=\"100%\" height=\"800\" title=\"Swagger UI\" seamless style={{ border: 'none' }} />\n </div>\n);\n\nexport default DocsPage;\n"]}]}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/account/index.tsx","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/account/index.tsx","mtime":1533613271665},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import React from 'react';\nimport ErrorBoundaryRoute from 'app/shared/error/error-boundary-route';\nimport Settings from './settings/settings';\nimport Password from './password/password';\nimport Sessions from './sessions/sessions';\nvar Routes = function (_a) {\n var match = _a.match;\n return (React.createElement(\"div\", null,\n React.createElement(ErrorBoundaryRoute, { path: match.url + \"/settings\", component: Settings }),\n React.createElement(ErrorBoundaryRoute, { path: match.url + \"/password\", component: Password }),\n React.createElement(ErrorBoundaryRoute, { path: match.url + \"/sessions\", component: Sessions })));\n};\nexport default Routes;\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/account/index.tsx","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/account/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,kBAAkB,MAAM,uCAAuC,CAAC;AAEvE,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAE3C,IAAM,MAAM,GAAG,UAAC,EAAS;QAAP,gBAAK;IAAO,OAAA,CAC5B;QACE,oBAAC,kBAAkB,IAAC,IAAI,EAAK,KAAK,CAAC,GAAG,cAAW,EAAE,SAAS,EAAE,QAAQ,GAAI;QAC1E,oBAAC,kBAAkB,IAAC,IAAI,EAAK,KAAK,CAAC,GAAG,cAAW,EAAE,SAAS,EAAE,QAAQ,GAAI;QAC1E,oBAAC,kBAAkB,IAAC,IAAI,EAAK,KAAK,CAAC,GAAG,cAAW,EAAE,SAAS,EAAE,QAAQ,GAAI,CACtE,CACP;AAN6B,CAM7B,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import React from 'react';\n\nimport ErrorBoundaryRoute from 'app/shared/error/error-boundary-route';\n\nimport Settings from './settings/settings';\nimport Password from './password/password';\nimport Sessions from './sessions/sessions';\n\nconst Routes = ({ match }) => (\n <div>\n <ErrorBoundaryRoute path={`${match.url}/settings`} component={Settings} />\n <ErrorBoundaryRoute path={`${match.url}/password`} component={Password} />\n <ErrorBoundaryRoute path={`${match.url}/sessions`} component={Sessions} />\n </div>\n);\n\nexport default Routes;\n"]}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/account/activate/activate.reducer.ts","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/account/activate/activate.reducer.ts","mtime":1533613271985},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import * as tslib_1 from \"tslib\";\nimport axios from 'axios';\nimport { REQUEST, SUCCESS, FAILURE } from 'app/shared/reducers/action-type.util';\nexport var ACTION_TYPES = {\n ACTIVATE_ACCOUNT: 'activate/ACTIVATE_ACCOUNT',\n RESET: 'activate/RESET'\n};\nvar initialState = {\n activationSuccess: false,\n activationFailure: false\n};\n// Reducer\nexport default (function (state, action) {\n if (state === void 0) { state = initialState; }\n switch (action.type) {\n case REQUEST(ACTION_TYPES.ACTIVATE_ACCOUNT):\n return tslib_1.__assign({}, state);\n case FAILURE(ACTION_TYPES.ACTIVATE_ACCOUNT):\n return tslib_1.__assign({}, state, { activationFailure: true });\n case SUCCESS(ACTION_TYPES.ACTIVATE_ACCOUNT):\n return tslib_1.__assign({}, state, { activationSuccess: true });\n case ACTION_TYPES.RESET:\n return tslib_1.__assign({}, initialState);\n default:\n return state;\n }\n});\n// Actions\nexport var activateAction = function (key) { return ({\n type: ACTION_TYPES.ACTIVATE_ACCOUNT,\n payload: axios.get('api/activate?key=' + key)\n}); };\nexport var reset = function () { return ({\n type: ACTION_TYPES.RESET\n}); };\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/account/activate/activate.reducer.ts","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/account/activate/activate.reducer.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAEjF,MAAM,CAAC,IAAM,YAAY,GAAG;IAC1B,gBAAgB,EAAE,2BAA2B;IAC7C,KAAK,EAAE,gBAAgB;CACxB,CAAC;AAEF,IAAM,YAAY,GAAG;IACnB,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,KAAK;CACzB,CAAC;AAIF,UAAU;AACV,gBAAe,UAAC,KAAmC,EAAE,MAAM;IAA3C,sBAAA,EAAA,oBAAmC;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE;QACnB,KAAK,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC;YACzC,4BACK,KAAK,EACR;QACJ,KAAK,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC;YACzC,4BACK,KAAK,IACR,iBAAiB,EAAE,IAAI,IACvB;QACJ,KAAK,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC;YACzC,4BACK,KAAK,IACR,iBAAiB,EAAE,IAAI,IACvB;QACJ,KAAK,YAAY,CAAC,KAAK;YACrB,4BACK,YAAY,EACf;QACJ;YACE,OAAO,KAAK,CAAC;KAChB;AACH,CAAC,EAAC;AAEF,UAAU;AACV,MAAM,CAAC,IAAM,cAAc,GAAG,UAAA,GAAG,IAAI,OAAA,CAAC;IACpC,IAAI,EAAE,YAAY,CAAC,gBAAgB;IACnC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC;CAC9C,CAAC,EAHmC,CAGnC,CAAC;AAEH,MAAM,CAAC,IAAM,KAAK,GAAG,cAAM,OAAA,CAAC;IAC1B,IAAI,EAAE,YAAY,CAAC,KAAK;CACzB,CAAC,EAFyB,CAEzB,CAAC","sourcesContent":["import axios from 'axios';\n\nimport { REQUEST, SUCCESS, FAILURE } from 'app/shared/reducers/action-type.util';\n\nexport const ACTION_TYPES = {\n ACTIVATE_ACCOUNT: 'activate/ACTIVATE_ACCOUNT',\n RESET: 'activate/RESET'\n};\n\nconst initialState = {\n activationSuccess: false,\n activationFailure: false\n};\n\nexport type ActivateState = Readonly<typeof initialState>;\n\n// Reducer\nexport default (state: ActivateState = initialState, action): ActivateState => {\n switch (action.type) {\n case REQUEST(ACTION_TYPES.ACTIVATE_ACCOUNT):\n return {\n ...state\n };\n case FAILURE(ACTION_TYPES.ACTIVATE_ACCOUNT):\n return {\n ...state,\n activationFailure: true\n };\n case SUCCESS(ACTION_TYPES.ACTIVATE_ACCOUNT):\n return {\n ...state,\n activationSuccess: true\n };\n case ACTION_TYPES.RESET:\n return {\n ...initialState\n };\n default:\n return state;\n }\n};\n\n// Actions\nexport const activateAction = key => ({\n type: ACTION_TYPES.ACTIVATE_ACCOUNT,\n payload: axios.get('api/activate?key=' + key)\n});\n\nexport const reset = () => ({\n type: ACTION_TYPES.RESET\n});\n"]}]}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/axios-interceptor.ts","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/axios-interceptor.ts","mtime":1533613270825},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import axios from 'axios';\nimport { SERVER_API_URL } from 'app/config/constants';\nvar TIMEOUT = 1000000; // 10000\nvar setupAxiosInterceptors = function (onUnauthenticated) {\n var onRequestSuccess = function (config) {\n config.timeout = TIMEOUT;\n config.url = \"\" + SERVER_API_URL + config.url;\n return config;\n };\n var onResponseSuccess = function (response) { return response; };\n var onResponseError = function (err) {\n var status = err.status || err.response.status;\n if (status === 403 || status === 401) {\n onUnauthenticated();\n }\n return Promise.reject(err);\n };\n axios.interceptors.request.use(onRequestSuccess);\n axios.interceptors.response.use(onResponseSuccess, onResponseError);\n};\nexport default setupAxiosInterceptors;\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/axios-interceptor.ts","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/axios-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,IAAM,OAAO,GAAG,OAAO,CAAC,CAAC,QAAQ;AACjC,IAAM,sBAAsB,GAAG,UAAA,iBAAiB;IAC9C,IAAM,gBAAgB,GAAG,UAAA,MAAM;QAC7B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,MAAM,CAAC,GAAG,GAAG,KAAG,cAAc,GAAG,MAAM,CAAC,GAAK,CAAC;QAC9C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,IAAM,iBAAiB,GAAG,UAAA,QAAQ,IAAI,OAAA,QAAQ,EAAR,CAAQ,CAAC;IAC/C,IAAM,eAAe,GAAG,UAAA,GAAG;QACzB,IAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE;YACpC,iBAAiB,EAAE,CAAC;SACrB;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACjD,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC","sourcesContent":["import axios from 'axios';\nimport { getBasePath, Storage } from 'react-jhipster';\n\nimport { SERVER_API_URL } from 'app/config/constants';\n\nconst TIMEOUT = 1000000; // 10000\nconst setupAxiosInterceptors = onUnauthenticated => {\n const onRequestSuccess = config => {\n config.timeout = TIMEOUT;\n config.url = `${SERVER_API_URL}${config.url}`;\n return config;\n };\n const onResponseSuccess = response => response;\n const onResponseError = err => {\n const status = err.status || err.response.status;\n if (status === 403 || status === 401) {\n onUnauthenticated();\n }\n return Promise.reject(err);\n };\n axios.interceptors.request.use(onRequestSuccess);\n axios.interceptors.response.use(onResponseSuccess, onResponseError);\n};\n\nexport default setupAxiosInterceptors;\n"]}]}

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/logger-middleware.ts","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/logger-middleware.ts","mtime":1533613270897},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["export default (function () { return function (next) { return function (action) {\n if (process.env.NODE_ENV !== 'production') {\n var type = action.type, payload = action.payload, meta = action.meta;\n console.groupCollapsed(type);\n // tslint:disable-next-line\n console.log('Payload:', payload);\n // tslint:disable-next-line\n console.log('Meta:', meta);\n console.groupEnd();\n }\n return next(action);\n}; }; });\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/logger-middleware.ts","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/logger-middleware.ts"],"names":[],"mappings":"AAAA,gBAAe,cAAM,OAAA,UAAA,IAAI,IAAI,OAAA,UAAA,MAAM;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;QACjC,IAAA,kBAAI,EAAE,wBAAO,EAAE,kBAAI,CAAY;QAEvC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,2BAA2B;QAC3B,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACjC,2BAA2B;QAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,QAAQ,EAAE,CAAC;KACpB;IAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC,EAb4B,CAa5B,EAboB,CAapB,EAAC","sourcesContent":["export default () => next => action => {\n if (process.env.NODE_ENV !== 'production') {\n const { type, payload, meta } = action;\n\n console.groupCollapsed(type);\n // tslint:disable-next-line\n console.log('Payload:', payload);\n // tslint:disable-next-line\n console.log('Meta:', meta);\n console.groupEnd();\n }\n\n return next(action);\n};\n"]}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/error/error-boundary-route.tsx","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/error/error-boundary-route.tsx","mtime":1533613273381},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import * as tslib_1 from \"tslib\";\nimport React from 'react';\nimport { Route } from 'react-router-dom';\nimport ErrorBoundary from 'app/shared/error/error-boundary';\nexport var ErrorBoundaryRoute = function (_a) {\n var Component = _a.component, rest = tslib_1.__rest(_a, [\"component\"]);\n var encloseInErrorBoundary = function (props) { return (React.createElement(ErrorBoundary, null,\n React.createElement(Component, tslib_1.__assign({}, props)))); };\n if (!Component)\n throw new Error(\"A component needs to be specified for path \" + rest.path);\n return React.createElement(Route, tslib_1.__assign({}, rest, { render: encloseInErrorBoundary }));\n};\nexport default ErrorBoundaryRoute;\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/error/error-boundary-route.tsx","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/error/error-boundary-route.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAc,MAAM,kBAAkB,CAAC;AACrD,OAAO,aAAa,MAAM,iCAAiC,CAAC;AAE5D,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,EAA6C;IAA3C,IAAA,wBAAoB,EAAE,wCAAO;IAChE,IAAM,sBAAsB,GAAG,UAAA,KAAK,IAAI,OAAA,CACtC,oBAAC,aAAa;QACZ,oBAAC,SAAS,uBAAK,KAAK,EAAI,CACV,CACjB,EAJuC,CAIvC,CAAC;IAEF,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,gDAA+C,IAAY,CAAC,IAAM,CAAC,CAAC;IAEpG,OAAO,oBAAC,KAAK,uBAAK,IAAI,IAAE,MAAM,EAAE,sBAAsB,IAAI,CAAC;AAC7D,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import React from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport ErrorBoundary from 'app/shared/error/error-boundary';\n\nexport const ErrorBoundaryRoute = ({ component: Component, ...rest }: RouteProps) => {\n const encloseInErrorBoundary = props => (\n <ErrorBoundary>\n <Component {...props} />\n </ErrorBoundary>\n );\n\n if (!Component) throw new Error(`A component needs to be specified for path ${(rest as any).path}`);\n\n return <Route {...rest} render={encloseInErrorBoundary} />;\n};\n\nexport default ErrorBoundaryRoute;\n"]}]}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/header/menus/entities.tsx","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/header/menus/entities.tsx","mtime":1533613273229},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import React from 'react';\nimport { NavDropdown } from '../header-components';\nexport var EntitiesMenu = function (props) { return (\n// tslint:disable-next-line:jsx-self-close\nReact.createElement(NavDropdown, { icon: \"th-list\", name: \"Entities\", id: \"entity-menu\" })); };\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/header/menus/entities.tsx","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/header/menus/entities.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,IAAM,YAAY,GAAG,UAAA,KAAK,IAAI,OAAA;AACnC,0CAA0C;AAC1C,oBAAC,WAAW,IAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,UAAU,EAAC,EAAE,EAAC,aAAa,GAE9C,CACf,EALoC,CAKpC,CAAC","sourcesContent":["import React from 'react';\nimport { DropdownItem } from 'reactstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { NavLink as Link } from 'react-router-dom';\nimport { NavDropdown } from '../header-components';\n\nexport const EntitiesMenu = props => (\n // tslint:disable-next-line:jsx-self-close\n <NavDropdown icon=\"th-list\" name=\"Entities\" id=\"entity-menu\">\n {/* jhipster-needle-add-entity-to-menu - JHipster will add entities to the menu here */}\n </NavDropdown>\n);\n"]}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/reducers/action-type.util.ts","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/reducers/action-type.util.ts","mtime":1533613271581},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["/**\n * Appends REQUEST asyc action type\n */\nexport var REQUEST = function (actionType) { return actionType + \"_PENDING\"; };\n/**\n * Appends SUCCESS asyc action type\n */\nexport var SUCCESS = function (actionType) { return actionType + \"_FULFILLED\"; };\n/**\n * Appends FAILURE asyc action type\n */\nexport var FAILURE = function (actionType) { return actionType + \"_REJECTED\"; };\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/reducers/action-type.util.ts","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/reducers/action-type.util.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,IAAM,OAAO,GAAG,UAAA,UAAU,IAAI,OAAG,UAAU,aAAU,EAAvB,CAAuB,CAAC;AAE7D;;GAEG;AAEH,MAAM,CAAC,IAAM,OAAO,GAAG,UAAA,UAAU,IAAI,OAAG,UAAU,eAAY,EAAzB,CAAyB,CAAC;AAE/D;;GAEG;AAEH,MAAM,CAAC,IAAM,OAAO,GAAG,UAAA,UAAU,IAAI,OAAG,UAAU,cAAW,EAAxB,CAAwB,CAAC","sourcesContent":["/**\n * Appends REQUEST asyc action type\n */\n\nexport const REQUEST = actionType => `${actionType}_PENDING`;\n\n/**\n * Appends SUCCESS asyc action type\n */\n\nexport const SUCCESS = actionType => `${actionType}_FULFILLED`;\n\n/**\n * Appends FAILURE asyc action type\n */\n\nexport const FAILURE = actionType => `${actionType}_REJECTED`;\n"]}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/entities/index.tsx","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/entities/index.tsx","mtime":1533613271345},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import React from 'react';\nimport { Switch } from 'react-router-dom';\n/* jhipster-needle-add-route-import - JHipster will add routes here */\nvar Routes = function (_a) {\n var match = _a.match;\n return (React.createElement(\"div\", null,\n React.createElement(Switch, null)));\n};\nexport default Routes;\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/entities/index.tsx","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/entities/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK1C,sEAAsE;AAEtE,IAAM,MAAM,GAAG,UAAC,EAAS;QAAP,gBAAK;IAAO,OAAA,CAC5B;QACE,oBAAC,MAAM,OAGE,CACL,CACP;AAP6B,CAO7B,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import React from 'react';\nimport { Switch } from 'react-router-dom';\n\n// tslint:disable-next-line:no-unused-variable\nimport ErrorBoundaryRoute from 'app/shared/error/error-boundary-route';\n\n/* jhipster-needle-add-route-import - JHipster will add routes here */\n\nconst Routes = ({ match }) => (\n <div>\n <Switch>\n {/* prettier-ignore */}\n {/* jhipster-needle-add-route-path - JHipster will routes here */}\n </Switch>\n </div>\n);\n\nexport default Routes;\n"]}]}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/user-management/index.tsx","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/user-management/index.tsx","mtime":1533613272877},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import React from 'react';\nimport { Switch } from 'react-router-dom';\nimport ErrorBoundaryRoute from 'app/shared/error/error-boundary-route';\nimport UserManagement from './user-management';\nimport UserManagementDetail from './user-management-detail';\nimport UserManagementUpdate from './user-management-update';\nimport UserManagementDeleteDialog from './user-management-delete-dialog';\nvar Routes = function (_a) {\n var match = _a.match;\n return (React.createElement(React.Fragment, null,\n React.createElement(Switch, null,\n React.createElement(ErrorBoundaryRoute, { exact: true, path: match.url + \"/new\", component: UserManagementUpdate }),\n React.createElement(ErrorBoundaryRoute, { exact: true, path: match.url + \"/:login/edit\", component: UserManagementUpdate }),\n React.createElement(ErrorBoundaryRoute, { exact: true, path: match.url + \"/:login\", component: UserManagementDetail }),\n React.createElement(ErrorBoundaryRoute, { path: match.url, component: UserManagement })),\n React.createElement(ErrorBoundaryRoute, { path: match.url + \"/:login/delete\", component: UserManagementDeleteDialog })));\n};\nexport default Routes;\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/user-management/index.tsx","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/user-management/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,kBAAkB,MAAM,uCAAuC,CAAC;AACvE,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,oBAAoB,MAAM,0BAA0B,CAAC;AAC5D,OAAO,oBAAoB,MAAM,0BAA0B,CAAC;AAC5D,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,IAAM,MAAM,GAAG,UAAC,EAAS;QAAP,gBAAK;IAAO,OAAA,CAC5B;QACE,oBAAC,MAAM;YACL,oBAAC,kBAAkB,IAAC,KAAK,QAAC,IAAI,EAAK,KAAK,CAAC,GAAG,SAAM,EAAE,SAAS,EAAE,oBAAoB,GAAI;YACvF,oBAAC,kBAAkB,IAAC,KAAK,QAAC,IAAI,EAAK,KAAK,CAAC,GAAG,iBAAc,EAAE,SAAS,EAAE,oBAAoB,GAAI;YAC/F,oBAAC,kBAAkB,IAAC,KAAK,QAAC,IAAI,EAAK,KAAK,CAAC,GAAG,YAAS,EAAE,SAAS,EAAE,oBAAoB,GAAI;YAC1F,oBAAC,kBAAkB,IAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,GAAI,CAC3D;QACT,oBAAC,kBAAkB,IAAC,IAAI,EAAK,KAAK,CAAC,GAAG,mBAAgB,EAAE,SAAS,EAAE,0BAA0B,GAAI,CAChG,CACJ;AAV6B,CAU7B,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import React from 'react';\nimport { Switch } from 'react-router-dom';\n\nimport ErrorBoundaryRoute from 'app/shared/error/error-boundary-route';\nimport UserManagement from './user-management';\nimport UserManagementDetail from './user-management-detail';\nimport UserManagementUpdate from './user-management-update';\nimport UserManagementDeleteDialog from './user-management-delete-dialog';\n\nconst Routes = ({ match }) => (\n <>\n <Switch>\n <ErrorBoundaryRoute exact path={`${match.url}/new`} component={UserManagementUpdate} />\n <ErrorBoundaryRoute exact path={`${match.url}/:login/edit`} component={UserManagementUpdate} />\n <ErrorBoundaryRoute exact path={`${match.url}/:login`} component={UserManagementDetail} />\n <ErrorBoundaryRoute path={match.url} component={UserManagement} />\n </Switch>\n <ErrorBoundaryRoute path={`${match.url}/:login/delete`} component={UserManagementDeleteDialog} />\n </>\n);\n\nexport default Routes;\n"]}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/devtools.tsx","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/devtools.tsx","mtime":1533613270845},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import React from 'react';\nimport { createDevTools } from 'redux-devtools';\nimport LogMonitor from 'redux-devtools-log-monitor';\nimport DockMonitor from 'redux-devtools-dock-monitor';\n// You can toggle visibility of devTools with ctrl + H\n// and change their position with ctrl + Q\nexport default createDevTools(React.createElement(DockMonitor, { toggleVisibilityKey: \"ctrl-h\", changePositionKey: \"ctrl-q\", defaultIsVisible: false },\n React.createElement(LogMonitor, null)));\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/devtools.tsx","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/config/devtools.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,WAAW,MAAM,6BAA6B,CAAC;AACtD,sDAAsD;AACtD,0CAA0C;AAC1C,eAAe,cAAc,CAC3B,oBAAC,WAAW,IAAC,mBAAmB,EAAC,QAAQ,EAAC,iBAAiB,EAAC,QAAQ,EAAC,gBAAgB,EAAE,KAAK;IAC1F,oBAAC,UAAU,OAAG,CACF,CACf,CAAC","sourcesContent":["import React from 'react';\nimport { createDevTools } from 'redux-devtools';\nimport LogMonitor from 'redux-devtools-log-monitor';\nimport DockMonitor from 'redux-devtools-dock-monitor';\n// You can toggle visibility of devTools with ctrl + H\n// and change their position with ctrl + Q\nexport default createDevTools(\n <DockMonitor toggleVisibilityKey=\"ctrl-h\" changePositionKey=\"ctrl-q\" defaultIsVisible={false}>\n <LogMonitor />\n </DockMonitor>\n);\n"]}]}

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/error/error-boundary.tsx","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/error/error-boundary.tsx","mtime":1533613273369},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import * as tslib_1 from \"tslib\";\nimport React from 'react';\nvar ErrorBoundary = /** @class */ (function (_super) {\n tslib_1.__extends(ErrorBoundary, _super);\n function ErrorBoundary() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { error: undefined, errorInfo: undefined };\n return _this;\n }\n ErrorBoundary.prototype.componentDidCatch = function (error, errorInfo) {\n this.setState({\n error: error,\n errorInfo: errorInfo\n });\n };\n ErrorBoundary.prototype.render = function () {\n var _a = this.state, error = _a.error, errorInfo = _a.errorInfo;\n if (errorInfo) {\n var errorDetails = process.env.NODE_ENV === 'development' ? (React.createElement(\"details\", { className: \"preserve-space\" },\n error && error.toString(),\n React.createElement(\"br\", null),\n errorInfo.componentStack)) : (undefined);\n return (React.createElement(\"div\", null,\n React.createElement(\"h2\", { className: \"error\" }, \"An unexpected error has occurred.\"),\n errorDetails));\n }\n return this.props.children;\n };\n return ErrorBoundary;\n}(React.Component));\nexport default ErrorBoundary;\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/error/error-boundary.tsx","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/error/error-boundary.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B;IAA4B,yCAAyD;IAArF;QAAA,qEAgCC;QA/BU,WAAK,GAAwB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;;IA+BnF,CAAC;IA7BC,yCAAiB,GAAjB,UAAkB,KAAK,EAAE,SAAS;QAChC,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK,OAAA;YACL,SAAS,WAAA;SACV,CAAC,CAAC;IACL,CAAC;IAED,8BAAM,GAAN;QACQ,IAAA,eAAiC,EAA/B,gBAAK,EAAE,wBAAS,CAAgB;QACxC,IAAI,SAAS,EAAE;YACb,IAAM,YAAY,GAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,CACvC,iCAAS,SAAS,EAAC,gBAAgB;gBAChC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAC1B,+BAAM;gBACL,SAAS,CAAC,cAAc,CACjB,CACX,CAAC,CAAC,CAAC,CACF,SAAS,CACV,CAAC;YACJ,OAAO,CACL;gBACE,4BAAI,SAAS,EAAC,OAAO,wCAAuC;gBAC3D,YAAY,CACT,CACP,CAAC;SACH;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;IACH,oBAAC;AAAD,CAAC,AAhCD,CAA4B,KAAK,CAAC,SAAS,GAgC1C;AAED,eAAe,aAAa,CAAC","sourcesContent":["import React from 'react';\n\ninterface IErrorBoundaryProps {\n readonly children: JSX.Element | JSX.Element[];\n}\n\ninterface IErrorBoundaryState {\n readonly error: any;\n readonly errorInfo: any;\n}\n\nclass ErrorBoundary extends React.Component<IErrorBoundaryProps, IErrorBoundaryState> {\n readonly state: IErrorBoundaryState = { error: undefined, errorInfo: undefined };\n\n componentDidCatch(error, errorInfo) {\n this.setState({\n error,\n errorInfo\n });\n }\n\n render() {\n const { error, errorInfo } = this.state;\n if (errorInfo) {\n const errorDetails =\n process.env.NODE_ENV === 'development' ? (\n <details className=\"preserve-space\">\n {error && error.toString()}\n <br />\n {errorInfo.componentStack}\n </details>\n ) : (\n undefined\n );\n return (\n <div>\n <h2 className=\"error\">An unexpected error has occurred.</h2>\n {errorDetails}\n </div>\n );\n }\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n"]}]}

View File

@@ -1 +0,0 @@
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/footer/footer.tsx","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/footer/footer.tsx","mtime":1533613273125},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import './footer.scss';\nimport React from 'react';\nimport { Col, Row } from 'reactstrap';\nvar Footer = function (props) { return (React.createElement(\"div\", { className: \"footer page-content\" },\n React.createElement(Row, null,\n React.createElement(Col, { md: \"12\" },\n React.createElement(\"p\", null, \"Your footer\"))))); };\nexport default Footer;\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/footer/footer.tsx","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/shared/layout/footer/footer.tsx"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,IAAM,MAAM,GAAG,UAAA,KAAK,IAAI,OAAA,CACtB,6BAAK,SAAS,EAAC,qBAAqB;IAClC,oBAAC,GAAG;QACF,oBAAC,GAAG,IAAC,EAAE,EAAC,IAAI;YACV,6CAAkB,CACd,CACF,CACF,CACP,EARuB,CAQvB,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import './footer.scss';\n\nimport React from 'react';\n\nimport { Col, Row } from 'reactstrap';\n\nconst Footer = props => (\n <div className=\"footer page-content\">\n <Row>\n <Col md=\"12\">\n <p>Your footer</p>\n </Col>\n </Row>\n </div>\n);\n\nexport default Footer;\n"]}]}

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More