function updatestatusAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(TRUE); $formvalues = $this->_getAllParams(); debugMessage($formvalues); $session = SessionWrapper::getInstance(); $this->_translate = Zend_Registry::get("translate"); $formvalues['id'] = $id = $formvalues['id']; $formvalues['dateapproved'] = date("Y-m-d H:i:s", strtotime('now')); $formvalues['approvedbyid'] = $session->getVar('userid'); // debugMessage($formvalues); $leave = new Leave(); $leave->populate($id); $leave->setStatus($formvalues['status']); $leave->setDateApproved(DEFAULT_DATETIME); $leave->setApprovedByID($session->getVar('userid')); if (!isArrayKeyAnEmptyString('reason', $formvalues)) { $leave->setReason("<br/>Rejected with remarks: " . $formvalues['reason']); } try { $leave->save(); $leave->afterApprove($formvalues['status']); $session->setVar(SUCCESS_MESSAGE, $this->_translate->translate($formvalues[SUCCESS_MESSAGE])); } catch (Exception $e) { // debugMessage('error '.$e->getMessage()); $session->setVar(ERROR_MESSAGE, $e->getMessage()); } // exit(); $this->_helper->redirector->gotoUrl(decode($formvalues[URL_SUCCESS])); }
/** * Show the form for creating a new resource. * * @return Response */ public function create() { if (Session::token() == Input::get('_token')) { $response = array('status' => 'fail', 'msg' => 'unauthorized Action'); } try { $month = Input::get('qter'); if ($month <= 3 && $month >= 1) { $q = Leave::whereBetween('date', array('2016-01-01', '2016-03-31'))->where('agent_ID', '=', Input::get('agent'))->count(); } else { if ($month <= 4 && $month >= 6) { $q = Leave::whereBetween('date', array('2016-04-01', '2016-06-30'))->where('agent_ID', '=', Input::get('agent'))->count(); } else { if ($month <= 7 && $month >= 9) { $q = Leave::whereBetween('date', array('2016-07-01', '2016-09-30'))->where('agent_ID', '=', Input::get('agent'))->count(); } else { if ($month <= 10 && $month >= 12) { $q = Leave::whereBetween('date', array('2016-10-01', '2016-12-31'))->where('agent_ID', '=', Input::get('agent'))->count(); } } } } $fullyBooked = Leave::where('date', '=', Input::get('date'))->count(); $agent = Leave::where('date', '=', Input::get('date'))->where('agent_ID', '=', Input::get('agent'))->count(); $monthMax = Leave::where('date', 'like', Input::get('month') . '%')->where('agent_ID', '=', Input::get('agent'))->count(); $maxLeave = Leave::where('agent_ID', '=', Input::get('agent'))->count(); if ($fullyBooked >= 1) { $response = array('status' => 'Error', 'msg' => 'Sorry!! This day is fully Booked..Please select another day'); } else { if ($agent >= 1) { $response = array('status' => 'Error', 'msg' => 'You have already booked this day!!'); } else { if ($q >= 5) { $response = array('status' => 'Error', 'msg' => 'You\'re Not allowed to go for more than 5 days leave in three months.. please see your Team lead in case you want an extra leave for this quota'); } else { if ($monthMax >= 5) { $response = array('status' => 'Error', 'msg' => 'Sorry! You can only take 5 leave days in a month!!'); } else { if ($maxLeave >= 21) { $response = array('status' => 'Error', 'msg' => 'Sorry! You have exhausted your leave days for this Year(21 max allowed)'); } else { $leave = new Leave(); $leave->date = Input::get('date'); $leave->agent_ID = Input::get('agent'); $leave->save(); $response = array('status' => 'success', 'msg' => 'leave day successfully booked'); } } } } } } catch (\Illuminate\Database\Eloquent\MassAssignmentException $e) { $response = array('status' => 'Error', 'msg' => 'mass assignment not allowed!!'); } catch (Illuminate\Database\QueryException $e) { $response = array('status' => 'Error', 'msg' => $e); } return Response::json($response); }
public function changeLeaveStatus(Leave $leave, $entitlementChanges, $removeLinkedEntitlements = false) { $conn = Doctrine_Manager::connection(); $conn->beginTransaction(); try { if ($removeLinkedEntitlements) { $leaveId = $leave->getId(); $stmt = $conn->prepare("UPDATE ohrm_leave_leave_entitlement le LEFT JOIN ohrm_leave_entitlement e " . "on e.id = le.entitlement_id " . "SET e.days_used = IF(e.days_used<le.length_days,0,e.days_used - le.length_days) " . "WHERE le.leave_id = ?"); $stmt->execute(array($leaveId)); Doctrine_Query::create()->delete()->from('LeaveLeaveEntitlement l')->where('l.leave_id = ?', $leaveId)->execute(); } $leave->save(); if (isset($entitlementChanges['change'])) { // TODO: Need to update days_used here // Also need to check if we need to delete all entitlements or only have changes $changes = $entitlementChanges['change']; foreach ($changes as $leaveId => $change) { $updateSql = ''; $idList = ''; $separator = ''; foreach ($change as $entitlementId => $length) { $idList .= $separator . $entitlementId; $updateSql .= sprintf(' WHEN e.id = %d THEN e.days_used + %f', $entitlementId, $length); $separator = ','; $entitlementAssignment = Doctrine_Query::create()->from('LeaveLeaveEntitlement l')->where('l.leave_id = ?', $leaveId)->andWhere('l.entitlement_id = ?', $entitlementId)->fetchOne(); if ($entitlementAssignment === false) { $entitlementAssignment = new LeaveLeaveEntitlement(); $entitlementAssignment->setLeaveId($leaveId); $entitlementAssignment->setEntitlementId($entitlementId); $entitlementAssignment->setLengthDays($length); } else { $entitlementAssignment->setLengthDays($entitlementAssignment->getLengthDays() + $length); } $entitlementAssignment->save(); } if ($updateSql != '') { $query = "UPDATE ohrm_leave_entitlement e " . "SET e.days_used = CASE " . $updateSql . " END " . sprintf(" WHERE e.id IN (%s)", $idList); $conn->execute($query); } } } $conn->commit(); return true; } catch (DaoException $e) { $conn->rollback(); throw new DaoException($e->getMessage(), 0, $e); } }