Search in sources :

Example 46 with User

use of com.axelor.auth.db.User in project axelor-open-suite by axelor.

the class HumanResourceMobileController method insertLeave.

/*
   * 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:insertLeave
   * Content-Type: application/json
   *
   * URL: com.axelor.apps.hr.mobile.HumanResourceMobileController:insertLeave
   * fields: leaveReason, fromDateT, startOn, toDateT, endOn, comment
   *
   * payload:
   * { "data": {
   * 		"action": "com.axelor.apps.hr.mobile.HumanResourceMobileController:insertLeave",
   * 		"leaveReason": 10,
   * 		"fromDateT": "2018-02-22T10:30:00",
   * 		"startOn": 1,
   * 		"toDateT": "2018-02-24T:19:30:00",
   *	 	"endOn": 1,
   * 		"comment": "no"
   * } }
   */
@Transactional(rollbackOn = { Exception.class })
public void insertLeave(ActionRequest request, ActionResponse response) throws AxelorException {
    AppBaseService appBaseService = Beans.get(AppBaseService.class);
    User user = AuthUtils.getUser();
    Map<String, Object> requestData = request.getData();
    LeaveReason leaveReason = Beans.get(LeaveReasonRepository.class).find(Long.valueOf(requestData.get("leaveReason").toString()));
    Employee employee = user.getEmployee();
    if (employee == null) {
        throw new AxelorException(TraceBackRepository.CATEGORY_CONFIGURATION_ERROR, I18n.get(IExceptionMessage.LEAVE_USER_EMPLOYEE), user.getName());
    }
    if (leaveReason != null) {
        LeaveRequest leave = new LeaveRequest();
        leave.setUser(user);
        Company company = null;
        if (employee.getMainEmploymentContract() != null) {
            company = employee.getMainEmploymentContract().getPayCompany();
        }
        leave.setCompany(company);
        LeaveLine leaveLine = Beans.get(LeaveLineRepository.class).all().filter("self.employee = ?1 AND self.leaveReason = ?2", employee, leaveReason).fetchOne();
        if (leaveLine == null) {
            throw new AxelorException(TraceBackRepository.CATEGORY_CONFIGURATION_ERROR, I18n.get(IExceptionMessage.LEAVE_LINE), employee.getName(), leaveReason.getName());
        }
        leave.setLeaveReason(leaveReason);
        leave.setRequestDate(appBaseService.getTodayDate(company));
        if (requestData.get("fromDateT") != null) {
            leave.setFromDateT(LocalDateTime.parse(requestData.get("fromDateT").toString(), DateTimeFormatter.ISO_LOCAL_DATE_TIME));
        }
        leave.setStartOnSelect(new Integer(requestData.get("startOn").toString()));
        if (requestData.get("toDateT") != null) {
            leave.setToDateT(LocalDateTime.parse(requestData.get("toDateT").toString(), DateTimeFormatter.ISO_LOCAL_DATE_TIME));
        }
        leave.setEndOnSelect(new Integer(requestData.get("endOn").toString()));
        leave.setDuration(Beans.get(LeaveService.class).computeDuration(leave));
        leave.setStatusSelect(LeaveRequestRepository.STATUS_AWAITING_VALIDATION);
        if (requestData.get("comments") != null) {
            leave.setComments(requestData.get("comments").toString());
        }
        leave = Beans.get(LeaveRequestRepository.class).save(leave);
        response.setTotal(1);
        response.setValue("id", leave.getId());
    }
}
Also used : AxelorException(com.axelor.exception.AxelorException) LeaveReasonRepository(com.axelor.apps.hr.db.repo.LeaveReasonRepository) Company(com.axelor.apps.base.db.Company) User(com.axelor.auth.db.User) LeaveReason(com.axelor.apps.hr.db.LeaveReason) LeaveRequest(com.axelor.apps.hr.db.LeaveRequest) Employee(com.axelor.apps.hr.db.Employee) AppBaseService(com.axelor.apps.base.service.app.AppBaseService) LeaveLine(com.axelor.apps.hr.db.LeaveLine) LeaveLineRepository(com.axelor.apps.hr.db.repo.LeaveLineRepository) Transactional(com.google.inject.persist.Transactional)

Example 47 with User

use of com.axelor.auth.db.User in project axelor-open-suite by axelor.

the class HumanResourceMobileController method getKilometricAllowParam.

/*
   * This method is used in mobile application.
   * @param request
   * @param response
   *
   * POST /open-suite-webapp/ws/action/com.axelor.apps.hr.mobile.HumanResourceMobileController:getKilometricAllowParam
   * Content-Type: application/json
   *
   * URL: com.axelor.apps.hr.mobile.HumanResourceMobileController:getKilometricAllowParam
   * fields: no field
   *
   * payload:
   * { "data": {
   * 		"action": "com.axelor.apps.hr.mobile.HumanResourceMobileController:getKilometricAllowParam"
   * } }
   */
@Transactional
public void getKilometricAllowParam(ActionRequest request, ActionResponse response) {
    List<Map<String, String>> dataList = new ArrayList<>();
    try {
        User user = AuthUtils.getUser();
        List<EmployeeVehicle> employeeVehicleList = Beans.get(EmployeeVehicleRepository.class).all().filter("self.employee = ?1", user.getEmployee()).fetch();
        // Not sorted by default ?
        employeeVehicleList.sort((employeeVehicle1, employeeVehicle2) -> employeeVehicle1.getKilometricAllowParam().getCode().compareTo(employeeVehicle2.getKilometricAllowParam().getCode()));
        for (EmployeeVehicle employeeVehicle : employeeVehicleList) {
            Map<String, String> map = new HashMap<>();
            map.put("name", employeeVehicle.getKilometricAllowParam().getName());
            map.put("id", employeeVehicle.getKilometricAllowParam().getId().toString());
            dataList.add(map);
        }
        response.setData(dataList);
    } catch (Exception e) {
        response.setStatus(-1);
        response.setError(e.getMessage());
    }
}
Also used : User(com.axelor.auth.db.User) EmployeeVehicleRepository(com.axelor.apps.hr.db.repo.EmployeeVehicleRepository) HashMap(java.util.HashMap) EmployeeVehicle(com.axelor.apps.hr.db.EmployeeVehicle) ArrayList(java.util.ArrayList) Map(java.util.Map) HashMap(java.util.HashMap) AxelorException(com.axelor.exception.AxelorException) Transactional(com.google.inject.persist.Transactional)

Example 48 with User

use of com.axelor.auth.db.User in project axelor-open-suite by axelor.

the class HumanResourceMobileController method insertOrUpdateTSLine.

/*
   * This method is used in mobile application.
   * It was in TimesheetServiceImpl
   * @param request
   * @param response
   *
   * POST /open-suite-webapp/ws/action/com.axelor.apps.hr.mobile.HumanResourceMobileController:insertOrUpdateTSLine
   * Content-Type: application/json
   *
   * URL: com.axelor.apps.hr.mobile.HumanResourceMobileController:insertOrUpdateTSLine
   * fields: (id,) project, activity, date, duration, comments
   *
   * payload:
   * { "data": {
   * 		"action": "com.axelor.apps.hr.mobile.HumanResourceMobileController:insertOrUpdateTSLine",
   *        "id": 1,
   * 		"project": 1,
   * 		"activity": 2,
   * 		"date": "2018-02-22",
   * 		"duration": 10,
   * 		"comments": "no"
   * } }
   */
@Transactional
public void insertOrUpdateTSLine(ActionRequest request, ActionResponse response) {
    // insert TimesheetLine
    try {
        Map<String, Object> requestData = request.getData();
        User user = AuthUtils.getUser();
        Project project = Beans.get(ProjectRepository.class).find(new Long(request.getData().get("project").toString()));
        Product product = Beans.get(ProductRepository.class).find(new Long(request.getData().get("activity").toString()));
        LocalDate date = LocalDate.parse(request.getData().get("date").toString(), DateTimeFormatter.ISO_DATE);
        TimesheetRepository timesheetRepository = Beans.get(TimesheetRepository.class);
        TimesheetService timesheetService = Beans.get(TimesheetService.class);
        TimesheetLineService timesheetLineService = Beans.get(TimesheetLineService.class);
        if (user != null) {
            Timesheet timesheet = timesheetRepository.all().filter("self.statusSelect = 1 AND self.user.id = ?1", user.getId()).order("-id").fetchOne();
            if (timesheet == null) {
                timesheet = timesheetService.createTimesheet(user, date, date);
            }
            BigDecimal hours = new BigDecimal(request.getData().get("duration").toString());
            TimesheetLine line;
            Object idO = requestData.get("id");
            if (idO != null) {
                line = timesheetLineService.updateTimesheetLine(Beans.get(TimesheetLineRepository.class).find(Long.valueOf(idO.toString())), project, product, user, date, timesheet, hours, request.getData().get("comments").toString());
            } else {
                line = timesheetLineService.createTimesheetLine(project, product, user, date, timesheet, hours, request.getData().get("comments").toString());
            }
            // convert hours to what is defined in timeLoggingPreferenceSelect
            BigDecimal duration = timesheetLineService.computeHoursDuration(timesheet, hours, false);
            line.setDuration(duration);
            timesheet.addTimesheetLineListItem(line);
            timesheetRepository.save(timesheet);
            response.setTotal(1);
            HashMap<String, Object> data = new HashMap<>();
            data.put("id", line.getId());
            response.setData(data);
        }
    } catch (Exception e) {
        TraceBackService.trace(e);
    }
}
Also used : User(com.axelor.auth.db.User) ProjectRepository(com.axelor.apps.project.db.repo.ProjectRepository) TimesheetLine(com.axelor.apps.hr.db.TimesheetLine) HashMap(java.util.HashMap) ProductRepository(com.axelor.apps.base.db.repo.ProductRepository) Timesheet(com.axelor.apps.hr.db.Timesheet) Product(com.axelor.apps.base.db.Product) TimesheetService(com.axelor.apps.hr.service.timesheet.TimesheetService) LocalDate(java.time.LocalDate) BigDecimal(java.math.BigDecimal) AxelorException(com.axelor.exception.AxelorException) Project(com.axelor.apps.project.db.Project) TimesheetLineRepository(com.axelor.apps.hr.db.repo.TimesheetLineRepository) TimesheetRepository(com.axelor.apps.hr.db.repo.TimesheetRepository) TimesheetLineService(com.axelor.apps.hr.service.timesheet.TimesheetLineService) Transactional(com.google.inject.persist.Transactional)

Example 49 with User

use of com.axelor.auth.db.User in project axelor-open-suite by axelor.

the class ICalendarController method showMyEvents.

public void showMyEvents(ActionRequest request, ActionResponse response) {
    User user = AuthUtils.getUser();
    response.setView(ActionView.define(I18n.get("My events")).model(ICalendarEvent.class.getName()).add("calendar", "calendar-event-all").add("grid", "calendar-event-grid").add("form", "calendar-event-form").domain("self.user.id = :_userId" + " OR self.calendar.user.id = :_userId" + " OR :_userId IN (SELECT attendee.user FROM self.attendees attendee)" + " OR self.organizer.user.id = :_userId" + " OR :_userId IN (SELECT setting.sharedWith FROM self.calendar.sharingSettingList setting WHERE setting.visible = TRUE)").context("_userId", user.getId()).map());
}
Also used : User(com.axelor.auth.db.User)

Example 50 with User

use of com.axelor.auth.db.User in project axelor-open-suite by axelor.

the class PartnerController method printClientSituation.

/* Fonction appeler par le bouton imprimer
   *
   * @param request
   * @param response
   * @return
   */
public void printClientSituation(ActionRequest request, ActionResponse response) throws AxelorException {
    Partner partner = request.getContext().asType(Partner.class);
    User user = AuthUtils.getUser();
    String name = I18n.get("Customer Situation");
    String fileLink = ReportFactory.createReport(IReport.CLIENT_SITUATION, name + "-${date}").addParam("Locale", ReportSettings.getPrintingLocale(partner)).addParam("Timezone", getTimezone(user)).addParam("UserId", user.getId()).addParam("PartnerId", partner.getId()).addParam("PartnerPic", partner.getPicture() != null ? MetaFiles.getPath(partner.getPicture()).toString() : "").generate().getFileLink();
    LOG.debug("Printing " + name);
    response.setView(ActionView.define(name).add("html", fileLink).map());
}
Also used : User(com.axelor.auth.db.User) Partner(com.axelor.apps.base.db.Partner)

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