| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| import java.sql.Timestamp |
| import org.apache.ofbiz.base.util.UtilDateTime |
| import org.apache.ofbiz.base.util.UtilMisc |
| import org.apache.ofbiz.base.util.UtilValidate |
| |
| String startParam = parameters.startTime |
| Timestamp start = null |
| if (UtilValidate.isNotEmpty(startParam)) { |
| start = new Timestamp(Long.parseLong(startParam)) |
| } |
| if (start == null) { |
| start = UtilDateTime.getMonthStart(nowTimestamp, timeZone, locale) |
| } else { |
| start = UtilDateTime.getMonthStart(start, timeZone, locale) |
| } |
| tempCal = UtilDateTime.toCalendar(start, timeZone, locale) |
| numDays = tempCal.getActualMaximum(Calendar.DAY_OF_MONTH) |
| prev = UtilDateTime.getMonthStart(start, -1, timeZone, locale) |
| context.prevMillis = new Long(prev.getTime()).toString() |
| next = UtilDateTime.getDayStart(start, numDays+1, timeZone, locale) |
| context.nextMillis = new Long(next.getTime()).toString() |
| end = UtilDateTime.getMonthEnd(start, timeZone, locale) |
| //Find out what date to get from |
| getFrom = null |
| prevMonthDays = tempCal.get(Calendar.DAY_OF_WEEK) - tempCal.getFirstDayOfWeek() |
| if (prevMonthDays < 0) prevMonthDays += 7 |
| tempCal.add(Calendar.DATE, -prevMonthDays) |
| numDays += prevMonthDays |
| getFrom = new Timestamp(tempCal.getTimeInMillis()) |
| firstWeekNum = tempCal.get(Calendar.WEEK_OF_YEAR) |
| context.put("firstWeekNum", firstWeekNum) |
| // also get days until the end of the week at the end of the month |
| lastWeekCal = UtilDateTime.toCalendar(end, timeZone, locale) |
| monthEndDay = lastWeekCal.get(Calendar.DAY_OF_WEEK) |
| getTo = UtilDateTime.getWeekEnd(end, timeZone, locale) |
| lastWeekCal = UtilDateTime.toCalendar(getTo, timeZone, locale) |
| followingMonthDays = lastWeekCal.get(Calendar.DAY_OF_WEEK) - monthEndDay |
| if (followingMonthDays < 0) { |
| followingMonthDays += 7 |
| } |
| numDays += followingMonthDays |
| Map serviceCtx = dispatcher.getDispatchContext().makeValidContext("getWorkEffortEventsByPeriod", "IN", parameters) |
| serviceCtx.putAll(UtilMisc.toMap("userLogin", userLogin, "start", getFrom, "calendarType", "VOID", "numPeriods", numDays, "periodType", Calendar.DATE, "locale", locale, "timeZone", timeZone)) |
| if (context.entityExprList) { |
| serviceCtx.entityExprList = entityExprList |
| } |
| result = runService('getWorkEffortEventsByPeriod', serviceCtx) |
| context.put("periods",result.get("periods")) |
| context.put("maxConcurrentEntries", result.get("maxConcurrentEntries")) |
| context.put("start", start) |
| context.put("end", end) |
| context.put("prev", prev) |
| context.put("next", next) |