[add] Worked day modified through api
This commit is contained in:
parent
ca80abc389
commit
b233346795
@ -431,6 +431,7 @@ class EmployeeApplication{
|
|||||||
/**
|
/**
|
||||||
* @param $requestData object
|
* @param $requestData object
|
||||||
* @return array
|
* @return array
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
function updateEmployeeData($requestData){
|
function updateEmployeeData($requestData){
|
||||||
// Getting and validating the data
|
// Getting and validating the data
|
||||||
@ -596,6 +597,39 @@ class EmployeeApplication{
|
|||||||
return $matches;
|
return $matches;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $idEmployee integer
|
||||||
|
* @param $date date
|
||||||
|
* @return integer
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
function findIdPaymentPerDayByEmployeeAndDate($idEmployee, $date){
|
||||||
|
$this->asserts->isNotEmpty($idEmployee, "The code can't be empty.");
|
||||||
|
$this->asserts->higherThanZero($idEmployee, "idEmployee must be higher than 0");
|
||||||
|
|
||||||
|
$this->asserts->isNotEmpty($date, "The code can't be empty.");
|
||||||
|
$this->asserts->dateIsNotInTheFuture($date, "The date can't be in the future.");
|
||||||
|
|
||||||
|
$stmt = $this->pdo->prepare("SELECT
|
||||||
|
COALESCE((SELECT
|
||||||
|
id
|
||||||
|
FROM
|
||||||
|
paymentsPerEmployeePerDay
|
||||||
|
WHERE
|
||||||
|
date = :date AND idEmployee = :idEmployee),
|
||||||
|
0) AS id;
|
||||||
|
");
|
||||||
|
|
||||||
|
$stmt->execute(array(':date' => $date, ':idEmployee' => $idEmployee));
|
||||||
|
$results = $stmt->fetchAll();
|
||||||
|
if(!$results){
|
||||||
|
throw new Exception("The registry of the worked day could not be found.");
|
||||||
|
}
|
||||||
|
$stmt = null;
|
||||||
|
|
||||||
|
return $results[0]['id'];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper to determine if the date has already been saved as a worked day for
|
* Helper to determine if the date has already been saved as a worked day for
|
||||||
* an employee, so long as it's currently active in the database
|
* an employee, so long as it's currently active in the database
|
||||||
@ -625,7 +659,7 @@ class EmployeeApplication{
|
|||||||
$stmt->execute(array(':date' => $date, ':idEmployee' => $idEmployee));
|
$stmt->execute(array(':date' => $date, ':idEmployee' => $idEmployee));
|
||||||
$results = $stmt->fetchAll();
|
$results = $stmt->fetchAll();
|
||||||
if(!$results){
|
if(!$results){
|
||||||
throw new Exception('Unable to determine the usage of date for the worked days.');
|
throw new Exception('Unable to find the date of the worked days.');
|
||||||
}
|
}
|
||||||
$stmt = null;
|
$stmt = null;
|
||||||
|
|
||||||
@ -670,6 +704,66 @@ class EmployeeApplication{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes the status in the detail table for the registry of worked days so
|
||||||
|
* that it behaves as if deleted
|
||||||
|
* @param $idEmployee
|
||||||
|
* @param $date
|
||||||
|
*/
|
||||||
|
function dissablePaymentPerDayDetailsByEmployeeAndDate($idEmployee, $date){
|
||||||
|
$this->asserts->higherThanZero($idEmployee, "idEmployee must be higher than 0");
|
||||||
|
$this->asserts->isNotEmpty($date, "The worked date cannot be empty.");
|
||||||
|
$this->asserts->dateIsNotInTheFuture($date, "The date can't be in the future.");
|
||||||
|
|
||||||
|
try {
|
||||||
|
$stmt = $this->pdo->prepare("UPDATE paymentsPerEmployeePerDayDetail a
|
||||||
|
INNER JOIN
|
||||||
|
paymentsPerEmployeePerDay b ON b.id = a.idPaymentPerEmployeePerDay
|
||||||
|
SET
|
||||||
|
a.status = 'INACTIVE'
|
||||||
|
WHERE
|
||||||
|
b.date = :date AND b.idEmployee = :idEmployee");
|
||||||
|
$this->pdo->beginTransaction();
|
||||||
|
$stmt->execute(array(':date' => $date, ':idEmployee' => $idEmployee));
|
||||||
|
$this->pdo->commit();
|
||||||
|
|
||||||
|
$stmt = null;
|
||||||
|
} catch( PDOExecption $e ) {
|
||||||
|
$this->pdo->rollback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $id integer - references paymentsPerEmployeePerDay
|
||||||
|
* @param $baseAmount double
|
||||||
|
* @param $bonusTime double
|
||||||
|
* @param $deliveries double
|
||||||
|
*/
|
||||||
|
function updateWorkedDayPayments($id, $baseAmount, $bonusTime, $deliveries){
|
||||||
|
$this->asserts->higherThanZero($id, "id payment must be higher than 0");
|
||||||
|
$this->asserts->higherThanZero($baseAmount, "baseAmount must be higher than 0");
|
||||||
|
$this->asserts->higherThanZero($bonusTime, "bonusTime must be higher than 0");
|
||||||
|
$this->asserts->higherThanZero($deliveries, "deliveries must be higher than 0");
|
||||||
|
|
||||||
|
try {
|
||||||
|
$stmt = $this->pdo->prepare("UPDATE paymentsPerEmployeePerDay
|
||||||
|
SET
|
||||||
|
baseAmount = :baseAmount,
|
||||||
|
bonusTime = :bonusTime,
|
||||||
|
deliveries = :deliveries
|
||||||
|
WHERE
|
||||||
|
id = :id");
|
||||||
|
$this->pdo->beginTransaction();
|
||||||
|
$stmt->execute(array(':baseAmount' => $baseAmount, ':bonusTime' => $bonusTime, ':deliveries' => $deliveries,
|
||||||
|
':id' => $id));
|
||||||
|
$this->pdo->commit();
|
||||||
|
|
||||||
|
$stmt = null;
|
||||||
|
} catch( PDOExecption $e ) {
|
||||||
|
$this->pdo->rollback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes the data from the front end for the work day, this coulld be
|
* Takes the data from the front end for the work day, this coulld be
|
||||||
* for an update or a creation of a new registry
|
* for an update or a creation of a new registry
|
||||||
@ -702,10 +796,6 @@ class EmployeeApplication{
|
|||||||
$this->asserts->isNotEmpty($date, "The worked date cannot be empty.");
|
$this->asserts->isNotEmpty($date, "The worked date cannot be empty.");
|
||||||
$this->asserts->dateIsNotInTheFuture($date, "The date can't be in the future.");
|
$this->asserts->dateIsNotInTheFuture($date, "The date can't be in the future.");
|
||||||
|
|
||||||
if($this->checkDateNotUsedWorkDayPerEmployee($idEmployee, $date) > 0){
|
|
||||||
throw new Exception("This date has already been saved as a worked day.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// The emplpoyee can't take that rol
|
// The emplpoyee can't take that rol
|
||||||
if($idEmployeeType != 3 and $idEmployeeType != $idEmployeeTypePerformed){
|
if($idEmployeeType != 3 and $idEmployeeType != $idEmployeeTypePerformed){
|
||||||
throw new Exception("The performed rol can't be done by this type of employee.");
|
throw new Exception("The performed rol can't be done by this type of employee.");
|
||||||
@ -763,6 +853,10 @@ class EmployeeApplication{
|
|||||||
function newWorkedDay($requestData){
|
function newWorkedDay($requestData){
|
||||||
$data = $this->validateDataForStorageWorkDay($requestData);
|
$data = $this->validateDataForStorageWorkDay($requestData);
|
||||||
|
|
||||||
|
if($this->checkDateNotUsedWorkDayPerEmployee($data['idEmployee'], $data['date']) > 0){
|
||||||
|
throw new Exception("This date has already been saved as a worked day.");
|
||||||
|
}
|
||||||
|
|
||||||
$idPaymentPerEmployeePerDay = $this->saveWorkedDay($data['idEmployee'], $data['date'],
|
$idPaymentPerEmployeePerDay = $this->saveWorkedDay($data['idEmployee'], $data['date'],
|
||||||
$data['baseAmountPaid'], $data['bonusTime'], $data['bonusDeliveries']);
|
$data['baseAmountPaid'], $data['bonusTime'], $data['bonusDeliveries']);
|
||||||
|
|
||||||
@ -773,6 +867,29 @@ class EmployeeApplication{
|
|||||||
return array('status' => 'success', 'message' => 'The worked day has been saved.', 'data' => $requestData);
|
return array('status' => 'success', 'message' => 'The worked day has been saved.', 'data' => $requestData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper method to update a worked day for an employee
|
||||||
|
*
|
||||||
|
* @param $requestData object
|
||||||
|
* @return array
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
function updateWorkDay($requestData){
|
||||||
|
$data = $this->validateDataForStorageWorkDay($requestData);
|
||||||
|
|
||||||
|
$this->dissablePaymentPerDayDetailsByEmployeeAndDate($data['idEmployee'], $data['date']);
|
||||||
|
|
||||||
|
$idPaymentPerEmployeePerDay = $this->findIdPaymentPerDayByEmployeeAndDate($data['idEmployee'], $data['date']);
|
||||||
|
|
||||||
|
$this->updateWorkedDayPayments($idPaymentPerEmployeePerDay, $data['baseAmountPaid'], $data['bonusTime'], $data['bonusDeliveries']);
|
||||||
|
|
||||||
|
$this->storeWorkDayDetails($idPaymentPerEmployeePerDay, $data['idEmployeeType'],
|
||||||
|
$data['idEmployeeTypePerformed'], $data['contractType'], $data['hoursPerWorkDay'],
|
||||||
|
$data['paymentPerHour'], $data['perHourBonus'], $data['deliveries'], $data['bonusPerDelivery']);
|
||||||
|
|
||||||
|
return array('status' => 'success', 'message' => 'The worked day has been updated.', 'data' => $requestData);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The number of days the employee has worked for a given year and month only
|
* The number of days the employee has worked for a given year and month only
|
||||||
* taking into accout the active ones
|
* taking into accout the active ones
|
||||||
|
@ -105,6 +105,14 @@ $app->post('/api/employee/workday', function ($request, $response) {
|
|||||||
->write(json_encode($this->employeeApplication->newWorkedDay($requestData)));
|
->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) {
|
$app->get('/api/employee/salary/{code}', function (Request $request, Response $response, array $args) {
|
||||||
$code = $args['code'];
|
$code = $args['code'];
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user