/******************************************************************************* * Copyright (c) 2012 Dmitry Tikhomirov. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Dmitry Tikhomirov - initial API and implementation ******************************************************************************/ package org.opensheet.mvc; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.apache.commons.collections.map.LinkedMap; import org.hibernate.Hibernate; import org.opensheet.server.dao.AssignmentDAO; import org.opensheet.server.dao.DepartmentDAO; import org.opensheet.server.dao.ReportDAO; import org.opensheet.shared.model.Assignment; import org.opensheet.shared.model.Department; import org.opensheet.shared.model.Hour; import org.opensheet.shared.model.User; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping("/quickdepartmentreportbyassignmentandbyuser.htm") public class QuickDepartmentReportByAssignmentAndByUserController { Logger logger = LoggerFactory.getLogger(ReportDepartmentAssignmentController.class); @Autowired private ReportDAO reportDAO; @Autowired private AssignmentDAO assignmentDAO; @Autowired private DepartmentDAO departmentDAO; @SuppressWarnings("deprecation") @RequestMapping(method = RequestMethod.GET) protected ModelAndView handleRequestInternal( @RequestParam("s_year") Integer s_year, @RequestParam("s_month") Integer s_month, @RequestParam("s_day") Integer s_day, @RequestParam("e_year") Integer e_year, @RequestParam("e_month") Integer e_month, @RequestParam("e_day") Integer e_day, @RequestParam("department") Integer departmentId ) throws Exception { Date start = new Date(); Date end = new Date(); start.setYear(s_year); start.setMonth(s_month); start.setDate(s_day); end.setYear(e_year); end.setMonth(e_month); end.setDate(e_day); Department department = departmentDAO.getDepartmentById(departmentId); List<User> users = departmentDAO.getUsers(department); Map<Integer,Assignment> assignments = new HashMap<Integer,Assignment>(); Map<Integer,Integer> usersRates = new HashMap<Integer,Integer>(); Map<Integer,Map<Integer,List<Hour>>> mapByType = new LinkedHashMap<Integer,Map<Integer,List<Hour>>>(); Map<String,List<Hour>> hourMap = reportDAO.getHourAndUsernameAndAssignmentnameByDepartmentOnPeriod(department, start, end); for(Map.Entry<String,List<Hour>> kv: hourMap.entrySet()){ List<Hour> list = kv.getValue(); for(Hour h: list){ Assignment a = assignmentDAO.getAssignmentById(h.getAssignment().getId()); assignments.put(a.getId(), a); if(mapByType.containsKey(a.getType())){ if(mapByType.get(a.getType()).containsKey(a.getId())){ mapByType.get(a.getType()).get(a.getId()).add(h); }else{ List<Hour> temp = new ArrayList<Hour>(); temp.add(h); mapByType.get(a.getType()).put(a.getId(),temp); } }else{ List<Hour> temp = new ArrayList<Hour>(); temp.add(h); Map<Integer,List<Hour>> map = new LinkedHashMap<Integer,List<Hour>>(); map.put(a.getId(), temp); mapByType.put(a.getType(), map); } } } for(User user: users){ if(user.getStatus() == true){ if(!hourMap.containsKey(user.getSecondName() + " " + user.getFirstName())){ hourMap.put(user.getSecondName() + " " + user.getFirstName(), new ArrayList<Hour>()); } } System.out.println("& " + user.getFullName() + " " + user.getId()); usersRates.put(user.getId(),user.getUserRate().getInternalRate()); } ModelAndView model = new ModelAndView("quickdepartmentreportbyassignmentandbyuserview"); model.addObject("hourMap", hourMap); model.addObject("mapByType",mapByType); model.addObject("Assignments",assignments); model.addObject("UsersRates", usersRates); return model; } }