use of com.axelor.auth.db.User in project axelor-open-suite by axelor.
the class WkfDisplayServiceImpl method addActiveNodes.
private void addActiveNodes(List<Map<String, Object>> statusList, WkfInstance wkfInstance, String klassName) {
HistoryService historyService = engineService.getEngine().getHistoryService();
List<HistoricActivityInstance> activeNodes = historyService.createHistoricActivityInstanceQuery().processInstanceId(wkfInstance.getInstanceId()).unfinished().list();
if (activeNodes.isEmpty()) {
List<String> terminatedNodeIds = getTerminatedActivityIds(wkfInstance.getInstanceId());
if (!terminatedNodeIds.isEmpty()) {
activeNodes = historyService.createHistoricActivityInstanceQuery().activityId(terminatedNodeIds.get(0)).processInstanceId(wkfInstance.getInstanceId()).list();
}
}
User activeUser = AuthUtils.getUser();
for (HistoricActivityInstance node : activeNodes) {
boolean valid = isValidNode(node.getActivityId(), wkfInstance.getWkfProcess(), klassName);
if (!valid) {
continue;
}
String title = node.getActivityName();
if (title == null) {
title = node.getActivityId();
}
String color = wkfInstance.getWkfProcess().getWkfModel().getWkfStatusColor();
if (color == null) {
color = "green";
}
Map<String, Object> statusMap = new HashMap<>();
statusMap.put("name", node.getActivityId());
statusMap.put("title", title);
statusMap.put("color", color);
if (!activeUser.getNoHelp()) {
WkfTaskConfig config = wkfTaskConfigRepository.all().filter("self.name = ? and self.wkfModel.id = ?", node.getActivityId(), wkfInstance.getWkfProcess().getWkfModel().getId()).fetchOne();
if (config != null) {
statusMap.put("help", config.getHelpText());
}
}
statusList.add(statusMap);
}
}
use of com.axelor.auth.db.User in project axelor-open-suite by axelor.
the class ImportUser method importUser.
// Returns the contents of the file in a byte array.
public Object importUser(Object bean, Map<String, Object> values) throws IOException {
assert bean instanceof User;
User user = (User) bean;
authService.encrypt(user);
final Path path = (Path) values.get("__path__");
String fileName = (String) values.get("picture_fileName");
if (Strings.isNullOrEmpty((fileName))) {
return bean;
}
final File image = path.resolve(fileName).toFile();
// Create the byte array to hold the data
byte[] bytes = new byte[(int) image.length()];
// Read in the bytes
int offset = 0;
int numRead = 0;
InputStream is = new FileInputStream(image);
try {
while (offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
offset += numRead;
}
user.setImage(bytes);
} finally {
is.close();
}
return bean;
}
use of com.axelor.auth.db.User in project axelor-open-suite by axelor.
the class HumanResourceMobileController method getLeaveReason.
/*
* This method is used in mobile application.
* It was in LeaveServiceImpl
* @param request
* @param response
*
* POST /open-suite-webapp/ws/action/com.axelor.apps.hr.mobile.HumanResourceMobileController:getLeaveReason
* Content-Type: application/json
*
* URL: com.axelor.apps.hr.mobile.HumanResourceMobileController:getLeaveReason
* fields: no field
*
* payload:
* { "data": {
* "action": "com.axelor.apps.hr.mobile.HumanResourceMobileController:getLeaveReason"
* } }
*/
@Transactional
public void getLeaveReason(ActionRequest request, ActionResponse response) {
try {
User user = AuthUtils.getUser();
List<Map<String, String>> dataList = new ArrayList<>();
if (user == null || user.getEmployee() == null) {
List<LeaveReason> leaveReasonList = Beans.get(LeaveReasonRepository.class).all().fetch();
for (LeaveReason leaveReason : leaveReasonList) {
if (leaveReason.getUnitSelect() == LeaveReasonRepository.UNIT_SELECT_DAYS) {
Map<String, String> map = new HashMap<>();
map.put("name", leaveReason.getName());
map.put("id", leaveReason.getId().toString());
dataList.add(map);
}
}
} else if (user.getEmployee() != null) {
List<LeaveLine> leaveLineList = Beans.get(LeaveLineRepository.class).all().filter("self.employee = ?1", user.getEmployee()).order("name").fetch();
String tmpName = "";
for (LeaveLine leaveLine : leaveLineList) {
String name = leaveLine.getName();
if (tmpName != name) {
Map<String, String> map = new HashMap<>();
map.put("name", leaveLine.getName());
map.put("id", leaveLine.getLeaveReason().getId().toString());
map.put("quantity", leaveLine.getQuantity().toString());
dataList.add(map);
}
tmpName = name;
}
}
response.setData(dataList);
response.setTotal(dataList.size());
} catch (Exception e) {
response.setStatus(-1);
response.setError(e.getMessage());
}
}
use of com.axelor.auth.db.User in project axelor-open-suite by axelor.
the class HumanResourceMobileController method removeLines.
/**
* This method is used in mobile application. It was in ExpenseController
*
* @param request
* @param response
* @throws AxelorException
* <p>POST
* /open-suite-webapp/ws/action/com.axelor.apps.hr.mobile.HumanResourceMobileController:removeLines
* Content-Type: application/json
* <p>URL: com.axelor.apps.hr.mobile.HumanResourceMobileController:removeLines no field
* <p>payload: { "data": { "action":
* "com.axelor.apps.hr.mobile.HumanResourceMobileController:removeLines" } }
*/
@Transactional
public void removeLines(ActionRequest request, ActionResponse response) {
User user = AuthUtils.getUser();
try {
if (user == null) {
return;
}
Expense expense = Beans.get(ExpenseRepository.class).all().filter("self.statusSelect = ?1 AND self.user.id = ?2", ExpenseRepository.STATUS_DRAFT, user.getId()).order("-id").fetchOne();
if (expense == null) {
return;
}
List<ExpenseLine> expenseLineList = Beans.get(ExpenseService.class).getExpenseLineList(expense);
if (expenseLineList != null && !expenseLineList.isEmpty()) {
Iterator<ExpenseLine> expenseLineIter = expenseLineList.iterator();
while (expenseLineIter.hasNext()) {
ExpenseLine generalExpenseLine = expenseLineIter.next();
if (generalExpenseLine.getKilometricExpense() != null && (expense.getKilometricExpenseLineList() != null && !expense.getKilometricExpenseLineList().contains(generalExpenseLine) || expense.getKilometricExpenseLineList() == null)) {
expenseLineIter.remove();
}
}
}
response.setValue("expenseLineList", expenseLineList);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.auth.db.User in project axelor-open-suite by axelor.
the class HumanResourceMobileController method insertKMExpenses.
/**
* This method is used in mobile application. It was in ExpenseController
*
* @param request
* @param response
* @throws AxelorException
* <p>POST
* /open-suite-webapp/ws/action/com.axelor.apps.hr.mobile.HumanResourceMobileController:insertKMExpenses
* Content-Type: application/json
* <p>URL: com.axelor.apps.hr.mobile.HumanResourceMobileController:insertKMExpenses fields:
* kmNumber, locationFrom, locationTo, allowanceTypeSelect, comments, date, projectTask,
* kilometricAllowParam
* <p>payload: { "data": { "action":
* "com.axelor.apps.hr.mobile.HumanResourceMobileController:insertKMExpenses", "kmNumber":
* 350.00, "locationFrom": "Paris", "locationTo": "Marseille", "allowanceTypeSelect": 1,
* "comments": "no", "date": "2018-02-22", "expenseProduct": 43 } }
*/
@Transactional(rollbackOn = { Exception.class })
public void insertKMExpenses(ActionRequest request, ActionResponse response) throws AxelorException {
User user = AuthUtils.getUser();
if (user != null) {
ExpenseService expenseService = Beans.get(ExpenseService.class);
Expense expense = expenseService.getOrCreateExpense(user);
ExpenseLine expenseLine = new ExpenseLine();
expenseLine.setDistance(new BigDecimal(request.getData().get("kmNumber").toString()));
expenseLine.setFromCity(request.getData().get("locationFrom").toString());
expenseLine.setToCity(request.getData().get("locationTo").toString());
expenseLine.setKilometricTypeSelect(new Integer(request.getData().get("allowanceTypeSelect").toString()));
expenseLine.setComments(request.getData().get("comments").toString());
expenseLine.setExpenseDate(LocalDate.parse(request.getData().get("date").toString()));
expenseLine.setProject(Beans.get(ProjectRepository.class).find(Long.valueOf(request.getData().get("projectTask").toString())));
HRConfigService hrConfigService = Beans.get(HRConfigService.class);
HRConfig hrConfig = hrConfigService.getHRConfig(expense.getCompany());
Product expenseProduct = hrConfigService.getKilometricExpenseProduct(hrConfig);
expenseLine.setExpenseProduct(expenseProduct);
Employee employee = user.getEmployee();
if (employee != null && !EmployeeHRRepository.isEmployeeFormerNewOrArchived(employee)) {
KilometricAllowParamRepository kilometricAllowParamRepo = Beans.get(KilometricAllowParamRepository.class);
expenseLine.setKilometricAllowParam(kilometricAllowParamRepo.find(Long.valueOf(request.getData().get("kilometricAllowParam").toString())));
expenseLine.setTotalAmount(Beans.get(KilometricService.class).computeKilometricExpense(expenseLine, employee));
expenseLine.setUntaxedAmount(expenseLine.getTotalAmount());
}
expense.addKilometricExpenseLineListItem(expenseLine);
Beans.get(ExpenseRepository.class).save(expense);
response.setValue("id", expenseLine.getId());
}
}
Aggregations