package com.opentravelsoft.service.product;
import java.util.ArrayList;
import java.util.List;
import com.opentravelsoft.util.LabelValueBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.opentravelsoft.EbizException;
import com.opentravelsoft.common.TeamType;
import com.opentravelsoft.entity.City;
import com.opentravelsoft.entity.Destination;
import com.opentravelsoft.entity.Line;
import com.opentravelsoft.entity.LineDescription;
import com.opentravelsoft.entity.LinePrice;
import com.opentravelsoft.entity.LineSchedule;
import com.opentravelsoft.entity.PortalCategory;
import com.opentravelsoft.entity.LineVisa;
import com.opentravelsoft.entity.Team;
import com.opentravelsoft.providers.CityDao;
import com.opentravelsoft.providers.DestinationDao;
import com.opentravelsoft.providers.ListDao;
import com.opentravelsoft.providers.SequenceDao;
import com.opentravelsoft.providers.TeamDao;
import com.opentravelsoft.providers.product.LineDao;
import com.opentravelsoft.providers.product.LinePriceDao;
import com.opentravelsoft.providers.product.LineScheduleDao;
import com.opentravelsoft.providers.product.LineTraitDao;
import com.opentravelsoft.providers.product.LineVisaDao;
import com.opentravelsoft.util.PaginationSupport;
@Service("RouteService")
public class LineServiceImpl implements LineService {
@Autowired
private LineDao lineDao;
@Autowired
private CityDao cityDao;
@Autowired
private ListDao listDao;
@Autowired
private SequenceDao sequenceDao;
@Autowired
private DestinationDao destinationDao;
@Autowired
private LineTraitDao lineTraitDao;
@Autowired
private LineScheduleDao lineScheduleDao;
@Autowired
private LineVisaDao lineVisaDao;
@Autowired
private LinePriceDao linePriceDao;
@Autowired
private TeamDao teamDao;
public PaginationSupport findLineList(int teamId, String lineName,
String isActive, int userId, String kenDestination, int fromRecord,
int pageSize) {
return lineDao.findLineList(teamId, lineName, isActive, userId,
kenDestination, fromRecord, pageSize);
}
public List<City> getCity() {
return cityDao.getLineOutCity();
}
public List<Destination> getDestination() {
return destinationDao.getAllDestination();
}
public List<LabelValueBean> getVehicle() {
return listDao.getList("Vehicle");
}
public List<PortalCategory> getWebNavigation() {
return lineDao.getWebNavigation();
}
public List<Team> getTeamList(int userId, TeamType type) {
return teamDao.getTeam(userId, type);
}
public List<Team> getOperatorTeams() {
return teamDao.getTeamList(TeamType.Operator);
}
public String txInsertLine(Line line) {
String lineNo = sequenceDao.getComputerNo("T", line.getModifiedBy());
line.setLineNo(lineNo);
lineDao.save(line);
return lineNo;
}
public int txModifyLine(Line line) {
return lineDao.updateLine(line);
}
public String txDuplicateRoute(String lineNo, String newRouteName,
String copyFeature, String copySchedule, String copyPrice,
String copyDestination, String copySight, String copyVisa, int userId)
throws EbizException {
String newLineNo = sequenceDao.getComputerNo("T", userId);
int result = lineDao.duplicateRoute(lineNo, newLineNo, newRouteName,
copyFeature, copySchedule, copyPrice, copyDestination, copySight,
copyVisa, userId);
if (result >= 0)
return newLineNo;
else {
throw new EbizException("");
}
}
public int txDeleteLine(String lineNo) {
return lineDao.cancelLine(lineNo);
}
public List<LineSchedule> getLineSchedule(String lineNo) {
return lineScheduleDao.getLineSchedule(lineNo);
}
public Line getLine(String lineNo) {
return lineDao.get(lineNo);
}
public List<LabelValueBean> getNote(String lineNo, String type) {
List<LineDescription> list = lineTraitDao.getLineTrait(lineNo, type);
List<LabelValueBean> ret = new ArrayList<LabelValueBean>();
int idx = 1;
for (LineDescription obj : list) {
ret.add(new LabelValueBean(String.valueOf(idx++), obj.getDescription()));
}
return ret;
}
public List<LinePrice> getPriceNotice(String lineNo) {
return linePriceDao.getLinePrice(lineNo, null, null);
}
public List<LineDescription> getFeatures(String lineNo, String type) {
return lineTraitDao.getLineTrait(lineNo, type);
}
public List<LineVisa> getVisaList(String lineNo) {
return lineVisaDao.getVisaList(lineNo);
}
public Line roGetRouteInfo(String lineNo) {
Line route = lineDao.get(lineNo);
route.setSchedule(lineScheduleDao.getLineSchedule(lineNo));
return route;
}
}