Search in sources :

Example 96 with User

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);
    }
}
Also used : User(com.axelor.auth.db.User) HashMap(java.util.HashMap) HistoryService(org.camunda.bpm.engine.HistoryService) WkfTaskConfig(com.axelor.apps.bpm.db.WkfTaskConfig) HistoricActivityInstance(org.camunda.bpm.engine.history.HistoricActivityInstance)

Example 97 with User

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;
}
Also used : Path(java.nio.file.Path) User(com.axelor.auth.db.User) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) File(java.io.File) FileInputStream(java.io.FileInputStream)

Example 98 with User

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());
    }
}
Also used : User(com.axelor.auth.db.User) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) LeaveReason(com.axelor.apps.hr.db.LeaveReason) AxelorException(com.axelor.exception.AxelorException) LeaveLine(com.axelor.apps.hr.db.LeaveLine) List(java.util.List) ArrayList(java.util.ArrayList) Map(java.util.Map) HashMap(java.util.HashMap) LeaveLineRepository(com.axelor.apps.hr.db.repo.LeaveLineRepository) Transactional(com.google.inject.persist.Transactional)

Example 99 with User

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);
    }
}
Also used : User(com.axelor.auth.db.User) Expense(com.axelor.apps.hr.db.Expense) ExpenseService(com.axelor.apps.hr.service.expense.ExpenseService) ExpenseLine(com.axelor.apps.hr.db.ExpenseLine) AxelorException(com.axelor.exception.AxelorException) Transactional(com.google.inject.persist.Transactional)

Example 100 with User

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());
    }
}
Also used : User(com.axelor.auth.db.User) Employee(com.axelor.apps.hr.db.Employee) HRConfig(com.axelor.apps.hr.db.HRConfig) Expense(com.axelor.apps.hr.db.Expense) KilometricAllowParamRepository(com.axelor.apps.hr.db.repo.KilometricAllowParamRepository) ExpenseRepository(com.axelor.apps.hr.db.repo.ExpenseRepository) ExpenseService(com.axelor.apps.hr.service.expense.ExpenseService) HRConfigService(com.axelor.apps.hr.service.config.HRConfigService) Product(com.axelor.apps.base.db.Product) ExpenseLine(com.axelor.apps.hr.db.ExpenseLine) BigDecimal(java.math.BigDecimal) Transactional(com.google.inject.persist.Transactional)

Aggregations

User (com.axelor.auth.db.User)157 AxelorException (com.axelor.exception.AxelorException)35 Employee (com.axelor.apps.hr.db.Employee)28 ArrayList (java.util.ArrayList)25 HashMap (java.util.HashMap)25 Transactional (com.google.inject.persist.Transactional)24 LocalDate (java.time.LocalDate)23 Filter (com.axelor.rpc.filter.Filter)22 BigDecimal (java.math.BigDecimal)22 ClientViewService (com.axelor.apps.portal.service.ClientViewService)20 ActionViewBuilder (com.axelor.meta.schema.actions.ActionView.ActionViewBuilder)17 List (java.util.List)17 Map (java.util.Map)16 TimesheetLine (com.axelor.apps.hr.db.TimesheetLine)12 LocalDateTime (java.time.LocalDateTime)12 Company (com.axelor.apps.base.db.Company)11 Partner (com.axelor.apps.base.db.Partner)11 Beans (com.axelor.inject.Beans)11 Inject (com.google.inject.Inject)11 Product (com.axelor.apps.base.db.Product)9