com.inkubator.hrm.web.personalia.ScheduleApprovalFormController.java Source code

Java tutorial

Introduction

Here is the source code for com.inkubator.hrm.web.personalia.ScheduleApprovalFormController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.inkubator.hrm.web.personalia;

import ch.lambdaj.Lambda;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.inkubator.common.CommonUtilConstant;
import com.inkubator.common.util.DateTimeUtil;
import com.inkubator.common.util.JsonConverter;
import com.inkubator.exception.BussinessException;
import com.inkubator.hrm.HRMConstant;
import com.inkubator.hrm.entity.ApprovalActivity;
import com.inkubator.hrm.entity.EmpData;
import com.inkubator.hrm.entity.WtGroupWorking;
import com.inkubator.hrm.service.ApprovalActivityService;
import com.inkubator.hrm.service.EmpDataService;
import com.inkubator.hrm.service.TempJadwalKaryawanService;
import com.inkubator.hrm.service.WtGroupWorkingService;
import com.inkubator.securitycore.util.UserInfoUtil;
import com.inkubator.webcore.controller.BaseController;
import com.inkubator.webcore.util.FacesUtil;
import com.inkubator.webcore.util.MessagesResourceUtil;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import org.apache.commons.lang3.StringUtils;
import org.primefaces.context.RequestContext;
import org.primefaces.json.JSONObject;

/**
 *
 * @author Deni Husni FR
 */
@ManagedBean(name = "scheduleApprovalFormController")
@ViewScoped
public class ScheduleApprovalFormController extends BaseController {

    private ApprovalActivity selectedApprovalActivity;
    @ManagedProperty(value = "#{tempJadwalKaryawanService}")
    private TempJadwalKaryawanService tempJadwalKaryawanService;
    @ManagedProperty(value = "#{approvalActivityService}")
    private ApprovalActivityService approvalActivityService;
    @ManagedProperty(value = "#{wtGroupWorkingService}")
    private WtGroupWorkingService wtGroupWorkingService;
    @ManagedProperty(value = "#{empDataService}")
    private EmpDataService empDataService;
    private Date beginScheduleDate;
    private Date endScheduleDate;
    private List<EmpData> dataToshow = new ArrayList<>();
    private WtGroupWorking selectedWtGroupWorking;
    private List<EmpData> dataToSave = new ArrayList<>();
    private String comment;
    private Boolean isWaitingApproval;
    private Boolean isApprover;
    private Boolean isRequester;

    @PostConstruct
    @Override
    public void initialization() {
        try {
            super.initialization();
            String id = FacesUtil.getRequestParameter("execution");
            selectedApprovalActivity = approvalActivityService.getEntiyByPK(Long.parseLong(id.substring(1)));
            isWaitingApproval = selectedApprovalActivity
                    .getApprovalStatus() == HRMConstant.APPROVAL_STATUS_WAITING_APPROVAL;
            isApprover = StringUtils.equals(UserInfoUtil.getUserName(), selectedApprovalActivity.getApprovedBy());
            isRequester = StringUtils.equals(UserInfoUtil.getUserName(), selectedApprovalActivity.getRequestBy());

            JSONObject jSONObject = new JSONObject(selectedApprovalActivity.getPendingData());
            long workingGroupId = jSONObject.getLong("groupWorkingId");
            String listEmp = jSONObject.getString("listEmpId");
            TypeToken<List<Long>> token = new TypeToken<List<Long>>() {
            };
            Gson gson = new GsonBuilder().create();
            List<Long> dataEmpId = gson.fromJson(listEmp, token.getType());
            dataToshow = empDataService.getEmpDataByListId(dataEmpId);

            Date createDate = new SimpleDateFormat("dd-MM-yyyy").parse(jSONObject.getString("createDate"));
            selectedWtGroupWorking = wtGroupWorkingService.getEntiyByPK(workingGroupId);
            Date startDate = selectedWtGroupWorking.getBeginTime();
            Date endDate = selectedWtGroupWorking.getEndTime();
            int numberOfDay = DateTimeUtil.getTotalDayDifference(startDate, endDate);
            int totalDateDif = DateTimeUtil.getTotalDayDifference(startDate, createDate) + 1;
            int num = numberOfDay + 1;
            int hasilBagi = (totalDateDif) / (num);
            Date tanggalAkhirJadwal = DateTimeUtil.getDateFrom(startDate, (hasilBagi * num) - 1,
                    CommonUtilConstant.DATE_FORMAT_DAY);
            if (new SimpleDateFormat("ddMMyyyy").format(tanggalAkhirJadwal)
                    .equals(new SimpleDateFormat("ddMMyyyy").format(new Date()))) {
                beginScheduleDate = DateTimeUtil.getDateFrom(startDate, (hasilBagi * num) - num,
                        CommonUtilConstant.DATE_FORMAT_DAY);
            } else {
                beginScheduleDate = DateTimeUtil.getDateFrom(startDate, (hasilBagi * num),
                        CommonUtilConstant.DATE_FORMAT_DAY);
            }
            endScheduleDate = DateTimeUtil.getDateFrom(beginScheduleDate, numberOfDay,
                    CommonUtilConstant.DATE_FORMAT_DAY);

        } catch (Exception ex) {
            LOGGER.error("Error", ex);

        }
    }

    @PreDestroy
    public void cleanAndExit() {
        selectedApprovalActivity = null;
        approvalActivityService = null;
        tempJadwalKaryawanService = null;
        wtGroupWorkingService = null;
        empDataService = null;
        beginScheduleDate = null;
        endScheduleDate = null;
        dataToshow = null;
        selectedWtGroupWorking = null;
        dataToSave = null;
        comment = null;
        isWaitingApproval = null;
        isApprover = null;
        isRequester = null;
    }

    public ApprovalActivity getSelectedApprovalActivity() {
        return selectedApprovalActivity;
    }

    public void setSelectedApprovalActivity(ApprovalActivity selectedApprovalActivity) {
        this.selectedApprovalActivity = selectedApprovalActivity;
    }

    public void setApprovalActivityService(ApprovalActivityService approvalActivityService) {
        this.approvalActivityService = approvalActivityService;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    public void setTempJadwalKaryawanService(TempJadwalKaryawanService tempJadwalKaryawanService) {
        this.tempJadwalKaryawanService = tempJadwalKaryawanService;
    }

    public void setEmpDataService(EmpDataService empDataService) {
        this.empDataService = empDataService;
    }

    public Date getBeginScheduleDate() {
        return beginScheduleDate;
    }

    public void setBeginScheduleDate(Date beginScheduleDate) {
        this.beginScheduleDate = beginScheduleDate;
    }

    public Date getEndScheduleDate() {
        return endScheduleDate;
    }

    public void setEndScheduleDate(Date endScheduleDate) {
        this.endScheduleDate = endScheduleDate;
    }

    public List<EmpData> getDataToshow() {
        return dataToshow;
    }

    public void setDataToshow(List<EmpData> dataToshow) {
        this.dataToshow = dataToshow;
    }

    public List<EmpData> getDataToSave() {
        return dataToSave;
    }

    public void setDataToSave(List<EmpData> dataToSave) {
        this.dataToSave = dataToSave;
    }

    public void setWtGroupWorkingService(WtGroupWorkingService wtGroupWorkingService) {
        this.wtGroupWorkingService = wtGroupWorkingService;
    }

    public WtGroupWorking getSelectedWtGroupWorking() {
        return selectedWtGroupWorking;
    }

    public void setSelectedWtGroupWorking(WtGroupWorking selectedWtGroupWorking) {
        this.selectedWtGroupWorking = selectedWtGroupWorking;
    }

    public Boolean getIsWaitingApproval() {
        return isWaitingApproval;
    }

    public void setIsWaitingApproval(Boolean isWaitingApproval) {
        this.isWaitingApproval = isWaitingApproval;
    }

    public Boolean getIsApprover() {
        return isApprover;
    }

    public void setIsApprover(Boolean isApprover) {
        this.isApprover = isApprover;
    }

    public Boolean getIsRequester() {
        return isRequester;
    }

    public void setIsRequester(Boolean isRequester) {
        this.isRequester = isRequester;
    }

    public String doBack() {
        return "/protected/home.htm?faces-redirect=true";
    }

    public String doApproved() {
        try {
            List<Long> listEmpId = Lambda.extract(dataToSave, Lambda.on(EmpData.class).getId());
            String dataToJson = JsonConverter.getJson(listEmpId.toArray(new Long[listEmpId.size()]),
                    "dd-MMMM-yyyy");

            JsonObject jsonObject = (JsonObject) JsonConverter
                    .getClassFromJson(selectedApprovalActivity.getPendingData(), JsonObject.class, "dd-MMMM-yyyy");
            jsonObject.addProperty("listEmpId", dataToJson);

            tempJadwalKaryawanService.approved(selectedApprovalActivity.getId(), jsonObject.toString(), comment);
            MessagesResourceUtil.setMessagesFlas(FacesMessage.SEVERITY_INFO, "global.approval_info",
                    "global.approved_successfully",
                    FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString());
            return "/protected/home.htm?faces-redirect=true";
        } catch (BussinessException ex) {
            MessagesResourceUtil.setMessages(FacesMessage.SEVERITY_ERROR, "global.error", ex.getErrorKeyMessage(),
                    FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString());
        } catch (Exception e) {
            LOGGER.error("Error when approved process ", e);
        }
        return null;
    }

    public String doRejected() {
        try {
            tempJadwalKaryawanService.rejected(selectedApprovalActivity.getId(), comment);
            MessagesResourceUtil.setMessagesFlas(FacesMessage.SEVERITY_INFO, "global.approval_info",
                    "global.rejected_successfully",
                    FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString());
            return "/protected/home.htm?faces-redirect=true";
        } catch (BussinessException ex) {
            MessagesResourceUtil.setMessages(FacesMessage.SEVERITY_ERROR, "global.error", ex.getErrorKeyMessage(),
                    FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString());
        } catch (Exception e) {
            LOGGER.error("Error when rejected process ", e);
        }
        return null;
    }

    public String doCancelled() {
        try {
            tempJadwalKaryawanService.cancelled(selectedApprovalActivity.getId(), comment);
            MessagesResourceUtil.setMessagesFlas(FacesMessage.SEVERITY_INFO, "global.approval_info",
                    "global.cancelled_successfully",
                    FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString());
            return "/protected/home.htm?faces-redirect=true";
        } catch (BussinessException ex) {
            MessagesResourceUtil.setMessages(FacesMessage.SEVERITY_ERROR, "global.error", ex.getErrorKeyMessage(),
                    FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString());
        } catch (Exception e) {
            LOGGER.error("Error when rejected process ", e);
        }
        return null;
    }

    public void doDetail() {
        List<String> values = new ArrayList<>();
        values.add(String.valueOf(selectedApprovalActivity.getId()));
        Map<String, List<String>> dataToSend = new HashMap<>();
        dataToSend.put("id", values);
        Map<String, Object> options = new HashMap<>();
        options.put("modal", false);
        options.put("draggable", true);
        options.put("resizable", false);
        options.put("contentWidth", 800);
        options.put("contentHeight", 500);
        RequestContext.getCurrentInstance().openDialog("schedule_shift_detail", options, dataToSend);

    }

}