package com.floreantpos.util;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.floreantpos.model.Shift;
import com.floreantpos.model.dao.ShiftDAO;
public class ShiftUtil {
private static final Calendar calendar = Calendar.getInstance();
private static final Calendar calendar2 = Calendar.getInstance();
private static final NumberFormat format = new DecimalFormat("00");
static {
calendar.clear();
}
/**
* For shift, we only care for hour and minute, not date.
*
* @param shiftTime
* @return
*/
public static Date formatShiftTime(Date shiftTime) {
calendar.clear();
calendar2.setTime(shiftTime);
calendar.set(Calendar.HOUR, calendar2.get(Calendar.HOUR));
calendar.set(Calendar.MINUTE, calendar2.get(Calendar.MINUTE));
calendar.set(Calendar.AM_PM, calendar2.get(Calendar.AM_PM));
return calendar.getTime();
}
public static Date buildShiftStartTime(int startHour, int startMin, int startAmPm, int endHour, int endMin, int endAmPm) {
startHour = startHour == 12 ? 0 : startHour;
calendar.clear();
calendar.set(Calendar.HOUR, startHour);
calendar.set(Calendar.MINUTE, startMin);
calendar.set(Calendar.AM_PM, startAmPm);
return calendar.getTime();
}
public static Date buildShiftEndTime(int startHour, int startMin, int startAmPm, int endHour, int endMin, int endAmPm) {
endHour = endHour == 12 ? 0 : endHour;
calendar.clear();
calendar.set(Calendar.HOUR, endHour);
calendar.set(Calendar.MINUTE, endMin);
calendar.set(Calendar.AM_PM, endAmPm);
if(startAmPm == Calendar.PM && endAmPm == Calendar.AM) {
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
return calendar.getTime();
}
public static String buildShiftTimeRepresentation(Date shiftTime) {
calendar.setTime(shiftTime);
String s = "";
s = format.format(calendar.get(Calendar.HOUR) == 0 ? 12 : calendar.get(Calendar.HOUR));
s += ":" + format.format(calendar.get(Calendar.MINUTE));
s += calendar.get(Calendar.AM_PM) == Calendar.AM ? " AM" : " PM";
return s;
}
public static String getDateRepresentation(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MMM-dd hh:mm:ss a");
return formatter.format(date);
}
public static Shift getCurrentShift() {
Calendar calendar = Calendar.getInstance();
Calendar calendar2 = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.HOUR, calendar2.get(Calendar.HOUR));
calendar.set(Calendar.MINUTE, calendar2.get(Calendar.MINUTE));
calendar.set(Calendar.AM_PM, calendar2.get(Calendar.AM_PM));
Date currentTime = calendar.getTime();
ShiftDAO shiftDAO = new ShiftDAO();
List<Shift> shifts = shiftDAO.findAll();
for (Shift shift : shifts) {
Date startTime = new Date(shift.getStartTime().getTime());
Date endTime = new Date(shift.getEndTime().getTime());
if(currentTime.after(startTime) && currentTime.before(endTime)) {
return shift;
}
}
calendar.add(Calendar.DATE, 1);
currentTime = calendar.getTime();
for (Shift shift : shifts) {
Date startTime = new Date(shift.getStartTime().getTime());
Date endTime = new Date(shift.getEndTime().getTime());
if(currentTime.after(startTime) && currentTime.before(endTime)) {
return shift;
}
}
return null;
}
}