Commit a24bcc7e authored by cq990612's avatar cq990612

优化代码结构

parent 604a7266
...@@ -54,7 +54,10 @@ public enum BASE_RESP_CODE_ENUM { ...@@ -54,7 +54,10 @@ public enum BASE_RESP_CODE_ENUM {
MANAGER_NOT_PROJECT("632","该管理没有可管理的项目"), MANAGER_NOT_PROJECT("632","该管理没有可管理的项目"),
DEPT_NOT_FOUND("633", "部门信息未找到"), DEPT_NOT_FOUND("633", "部门信息未找到"),
DATE_IS_ERROR("634","时间不匹配"), DATE_IS_ERROR("634","时间不匹配"),
CENTRE_NOT_FOUND("635","中心信息未找到"); CENTRE_NOT_FOUND("635","中心信息未找到"),
TIME_NOT_IS_NULL("636","工时不能为0")
;
/** /**
* 错误编码 * 错误编码
*/ */
......
...@@ -17,6 +17,8 @@ import lombok.experimental.Accessors; ...@@ -17,6 +17,8 @@ import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@ApiModel(value="ProjectDto", description="项目id和项目名实体类") @ApiModel(value="ProjectDto", description="项目id和项目名实体类")
public class ProjectDto { public class ProjectDto {
@ApiModelProperty(name = "id",value = "主键id") @ApiModelProperty(name = "id",value = "主键id")
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Integer id; private Integer id;
...@@ -24,15 +26,15 @@ public class ProjectDto { ...@@ -24,15 +26,15 @@ public class ProjectDto {
@ApiModelProperty(name = "projectName",value = "项目名称") @ApiModelProperty(name = "projectName",value = "项目名称")
private String projectName; private String projectName;
@ApiModelProperty(name = "type",value = "1:项目,2:商机")
private Integer type;
@ApiModelProperty(name = "managerId", value = "项目经理id") @ApiModelProperty(name = "managerId", value = "项目经理id")
private Integer managerId; private Integer managerId;
@ApiModelProperty(name = "managerName", value = "项目经理") @ApiModelProperty(name = "managerName", value = "项目经理姓名")
private String managerName; private String managerName;
@ApiModelProperty
private String deptManagerName;
} }
package cn.wisenergy.model.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.List;
/**
* @Authotr:陈奇
* @QQ1799796883
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="ProjectInfoDto", description="可填报的项目")
public class ProjectInfoDto {
@ApiModelProperty(name = "type",value = "1:项目,2:商机")
private Integer type;
@ApiModelProperty(name = "typeName",value = "类型名称")
private String typeName;
@ApiModelProperty(name = "deptManagerName",value = "部门经理姓名")
private String deptManagerName;
private List<ProjectDto> projectDto;
}
package cn.wisenergy.model.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Authotr:陈奇
* @QQ1799796883
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="ProjectManagerDto", description="可审批的项目")
public class ProjectManagerDto {
@ApiModelProperty(name = "id",value = "主键id")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(name = "projectName",value = "项目名称")
private String projectName;
@ApiModelProperty(name = "type",value = "1:项目,2:商机")
private Integer type;
@ApiModelProperty(name = "typeName",value = "类型名称")
private String typeName;
}
package cn.wisenergy.model.dto;
import lombok.Data;
import java.util.List;
/**
* @Authotr:陈奇
* @QQ1799796883
*/
@Data
public class ProjectsDto {
private List<ProjectInfoDto> projectInfoDto;
private List<ProjectManagerDto> projectManagerDto;
}
...@@ -42,7 +42,7 @@ public interface WorkTimeOrderService { ...@@ -42,7 +42,7 @@ public interface WorkTimeOrderService {
* @param workDay 工作日 * @param workDay 工作日
* @return dto * @return dto
*/ */
List<WorkTimeOrderDto> getByDayToDto(Integer userId, Date workDay); List<WorkTimeOrder> getByDayToDto(Integer userId, Date workDay);
/** /**
* 功能:工时填报 * 功能:工时填报
...@@ -114,5 +114,9 @@ public interface WorkTimeOrderService { ...@@ -114,5 +114,9 @@ public interface WorkTimeOrderService {
* @param userId * @param userId
* @return * @return
*/ */
List<ProjectDto> getProjectDto(Integer userId); ProjectsDto getProjectDto(Integer userId);
List<WorkTimeOrderDto> wtoToWtod(List<WorkTimeOrder> workTimeOrders);
} }
...@@ -68,7 +68,7 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService { ...@@ -68,7 +68,7 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
/** /**
* 功能; 获取某日被驳回说明 * 功能; 获取某日填报情况
* *
* @param userId 用户id * @param userId 用户id
* @param workDay 某日 * @param workDay 某日
...@@ -76,7 +76,7 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService { ...@@ -76,7 +76,7 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
*/ */
@Override @Override
public List<WorkTimeOrder> getByDay(Integer userId, Date workDay) { public List<WorkTimeOrder> getByDay(Integer userId, Date workDay) {
log.info("WorkTimeOrderServiceImpl[]getDayRejectReason[]input.param.userId:{},workDay:{}" + userId, workDay); log.info("WorkTimeOrderServiceImpl[]getByDay[]input.param.userId:{},workDay:{}" + userId, workDay);
if (null == userId || null == workDay) { if (null == userId || null == workDay) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL); throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
} }
...@@ -137,13 +137,13 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService { ...@@ -137,13 +137,13 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
* @return dto * @return dto
*/ */
@Override @Override
public List<WorkTimeOrderDto> getByDayToDto(Integer userId, Date workDay) { public List<WorkTimeOrder> getByDayToDto(Integer userId, Date workDay) {
log.info("WorkTimeOrderServiceImpl[]getByDayToDto[]input.param.userId:{},workDay:{}" + userId, workDay); log.info("WorkTimeOrderServiceImpl[]getByDayToDto[]input.param.userId:{},workDay:{}" + userId, workDay);
List<WorkTimeOrder> workTimeOrders = getByDay(userId, workDay); List<WorkTimeOrder> workTimeOrders = getByDay(userId, workDay);
if (CollectionUtils.isEmpty(workTimeOrders)) { if (CollectionUtils.isEmpty(workTimeOrders)) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.WORK_ORDER_INFO_IS_NULL); throw new BaseCustomException(BASE_RESP_CODE_ENUM.WORK_ORDER_INFO_IS_NULL);
} }
return wtoToWtod(workTimeOrders); return workTimeOrders;
} }
/** /**
...@@ -185,13 +185,15 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService { ...@@ -185,13 +185,15 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
List<WorkTimeOrderDto> workTimeOrders = dto.getWorkTimeOrders(); List<WorkTimeOrderDto> workTimeOrders = dto.getWorkTimeOrders();
// 判断是否超过8小时 // 判断是否超过8小时
int count = 0; int count = 0;
List<WorkTimeOrderDto> byDayToDto = getByDayToDto(workTimeOrders.get(0).getUserId(), workTimeOrders.get(0).getWorkDay()); List<WorkTimeOrder> byDayToDto = getByDayToDto(workTimeOrders.get(0).getUserId(), workTimeOrders.get(0).getWorkDay());
for (WorkTimeOrderDto orderDto : byDayToDto) {
for (WorkTimeOrder orderDto : byDayToDto) {
if (2 == orderDto.getStatus() || 5 == orderDto.getStatus()) if (2 == orderDto.getStatus() || 5 == orderDto.getStatus())
count += orderDto.getWorkTime(); count += orderDto.getWorkTime();
} }
timeNotEight(count, workTimeOrders);
// 判断是否超过8小时
timeNotEight(count, workTimeOrders);
// 更新数据 // 更新数据
reSubmit(workTimeOrders); reSubmit(workTimeOrders);
...@@ -239,10 +241,15 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService { ...@@ -239,10 +241,15 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
if (1 == user.getLevel()) { if (1 == user.getLevel()) {
QueryWrapper<WorkTimeOrder> wrapper = new QueryWrapper<>(); QueryWrapper<WorkTimeOrder> wrapper = new QueryWrapper<>();
projectId = projectId == null ? workProjectService.getByManagerId(userId).get(0).getId() : projectId; projectId = projectId == null ? workProjectService.getByManagerId(userId).get(0).getId() : projectId;
// wrapper.eq("dept_id", user.getDeptId());
wrapper.in("status", 1, 4); wrapper.in("status", 1, 4);
wrapper.eq("project_id", projectId); wrapper.eq("project_id", projectId);
wrapper.orderByDesc("work_day"); wrapper.orderByDesc("work_day");
List<WorkTimeOrder> workTimeOrders = workTimeOrderMapper.selectList(wrapper); List<WorkTimeOrder> workTimeOrders = workTimeOrderMapper.selectList(wrapper);
if (CollectionUtils.isEmpty(workTimeOrders)) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.WORK_ORDER_END);
}
return getDto(workTimeOrders); return getDto(workTimeOrders);
} }
// 部门经理 // 部门经理
...@@ -391,28 +398,87 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService { ...@@ -391,28 +398,87 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
* @return * @return
*/ */
@Override @Override
public List<ProjectDto> getProjectDto(Integer userId) { public ProjectsDto getProjectDto(Integer userId) {
log.info("WorkOrderServiceImpl[]getProjectDto[]input.param.id:{}" + userId); log.info("WorkOrderServiceImpl[]getProjectDto[]input.param.id:{}" + userId);
if (null == userId) { if (null == userId) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL); throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
} }
List<Integer> ids = workUserProjectService.getProjectIdByUserId(userId); ProjectsDto projectsDto = new ProjectsDto();
List<ProjectDto> list = workProjectService.getNameById(ids); WorkUser user = workUserService.getById(userId);
for (ProjectDto projectDto : list) { // 1.获取可填报的项目
projectDto.setManagerName(workUserService.getById(projectDto.getManagerId()).getName()); projectsDto.setProjectInfoDto(getProjectInfoDto(userId));
} // 2.获取可审批的项目
Integer deptId = workUserDeptService.getDeptIdByUserId(userId); List<ProjectManagerDto> projectManagerDtos = new ArrayList<>();
List<Integer> idsByDeptId = workUserDeptService.getUserIdsByDeptId(deptId); if (1 == user.getLevel()) {
WorkUser workUser = workUserService.getDeptManagerByIds(idsByDeptId); List<ProjectDto> projectDtos = workProjectService.getByManagerId(userId);
list.add(new ProjectDto().setType(5).setProjectName(getTypeName(5))); ProjectManagerDto projectManagerDto ;
list.add(new ProjectDto().setType(6).setProjectName(getTypeName(6))); for (ProjectDto projectDto : projectDtos) {
list.add(new ProjectDto().setType(7).setProjectName(getTypeName(7))); projectManagerDto = new ProjectManagerDto();
list.forEach(index -> index.setDeptManagerName(workUser.getName())); BeanUtils.copyProperties(projectDto, projectManagerDto);
return list; projectManagerDtos.add(projectManagerDto);
}
}
if (2 == user.getLevel()) {
ProjectManagerDto projectManagerDto = new ProjectManagerDto();
for (int i = 5; i <8 ; i++) {
projectManagerDto.setType(i).setTypeName(getTypeName(i));
projectManagerDtos.add(projectManagerDto);
}
}
projectsDto.setProjectManagerDto(projectManagerDtos);
return projectsDto;
}
// 获取可以填报的数据
private List<ProjectInfoDto> getProjectInfoDto(Integer userId) {
List<Integer> projectIds = workUserProjectService.getProjectIdByUserId(userId);
// 1.获取当前用户的部门管理
String deptManagerName = workUserService.getById(workDeptService.getById(workUserService.getById(userId).getDeptId()).getDeptManagerId()).getName();
// 2.获取可填报的类型
List<ProjectInfoDto> projectList = new ArrayList<>();
ProjectInfoDto projectInfoDto1 = new ProjectInfoDto().setType(1).setTypeName(getTypeName(1)).setDeptManagerName(deptManagerName);
ProjectInfoDto projectInfoDto2 = new ProjectInfoDto().setType(2).setTypeName(getTypeName(2)).setDeptManagerName(deptManagerName);
List<ProjectDto> projectDto1 = new ArrayList<>();
List<ProjectDto> projectDto2 = new ArrayList<>();
WorkProject workProject ;
for (Integer projectId : projectIds) {
workProject = workProjectService.getById(projectId);
if (1 == workProject.getType()) {
projectDto1.add(projectToProjectDto(workProject));
}
if (2 == workProject.getType()) {
projectDto2.add(projectToProjectDto(workProject));
}
}
projectInfoDto1.setProjectDto(projectDto1);
projectInfoDto2.setProjectDto(projectDto2);
projectList.add(projectInfoDto1);
projectList.add(projectInfoDto2);
projectList.add(new ProjectInfoDto().setType(3).setTypeName(getTypeName(3)).setDeptManagerName(deptManagerName));
projectList.add(new ProjectInfoDto().setType(4).setTypeName(getTypeName(4)).setDeptManagerName(deptManagerName));
projectList.add(new ProjectInfoDto().setType(5).setTypeName(getTypeName(5)).setDeptManagerName(deptManagerName));
projectList.add(new ProjectInfoDto().setType(6).setTypeName(getTypeName(6)).setDeptManagerName(deptManagerName));
projectList.add(new ProjectInfoDto().setType(7).setTypeName(getTypeName(7)).setDeptManagerName(deptManagerName));
return projectList;
}
// project转ProjectDto
private ProjectDto projectToProjectDto(WorkProject workProject) {
ProjectDto projectDto = new ProjectDto();
BeanUtils.copyProperties(workProject,projectDto);
// 获取项目管理
projectDto.setManagerName(workUserService.getById(workProject.getManagerId()).getName());
return projectDto;
} }
// workTimeOrder TO WorkTimeOrderDto // workTimeOrder TO WorkTimeOrderDto
private List<WorkTimeOrderDto> wtoToWtod(List<WorkTimeOrder> workTimeOrders) { public List<WorkTimeOrderDto> wtoToWtod(List<WorkTimeOrder> workTimeOrders) {
List<WorkTimeOrderDto> dtos = new ArrayList<>(); List<WorkTimeOrderDto> dtos = new ArrayList<>();
for (WorkTimeOrder workTimeOrder : workTimeOrders) { for (WorkTimeOrder workTimeOrder : workTimeOrders) {
WorkTimeOrderDto dto = new WorkTimeOrderDto(); WorkTimeOrderDto dto = new WorkTimeOrderDto();
...@@ -458,12 +524,17 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService { ...@@ -458,12 +524,17 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
if (null == dto.getDes()) { if (null == dto.getDes()) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.DES_NOT_NULL); throw new BaseCustomException(BASE_RESP_CODE_ENUM.DES_NOT_NULL);
} }
if (null == dto.getWorkDay()) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
if (thanDate(dto.getWorkDay())) { if (thanDate(dto.getWorkDay())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.WORK_TIME_OVER_NOW_DAY); throw new BaseCustomException(BASE_RESP_CODE_ENUM.WORK_TIME_OVER_NOW_DAY);
} }
if (null == dto.getWorkDay() || null == dto.getWorkTime()) { if (0 == dto.getWorkTime()) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL); throw new BaseCustomException(BASE_RESP_CODE_ENUM.TIME_NOT_IS_NULL);
} }
// 2、默认设置超过系统默认3天(包括驳回3天)未填报的工时将不能填报 // 2、默认设置超过系统默认3天(包括驳回3天)未填报的工时将不能填报
if (date.getTime() - dto.getWorkDay().getTime() > submitTime * 24 * 60 * 60 * 1000) { if (date.getTime() - dto.getWorkDay().getTime() > submitTime * 24 * 60 * 60 * 1000) {
...@@ -485,6 +556,12 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService { ...@@ -485,6 +556,12 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
//3.每天工时累加不得超过八小时 //3.每天工时累加不得超过八小时
private void timeNotEight(int count, List<WorkTimeOrderDto> list) { private void timeNotEight(int count, List<WorkTimeOrderDto> list) {
for (WorkTimeOrderDto workOrder : list) { for (WorkTimeOrderDto workOrder : list) {
if (null == workOrder.getWorkDay() ) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
if (0 == workOrder.getWorkTime()) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.TIME_NOT_IS_NULL);
}
count = count + workOrder.getWorkTime(); count = count + workOrder.getWorkTime();
if (count > 8) { if (count > 8) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.WORK_TIME_NOT_OVER_EIGHT); throw new BaseCustomException(BASE_RESP_CODE_ENUM.WORK_TIME_NOT_OVER_EIGHT);
......
...@@ -56,7 +56,4 @@ public class WorkCollectController extends BaseController { ...@@ -56,7 +56,4 @@ public class WorkCollectController extends BaseController {
} }
} }
...@@ -5,10 +5,7 @@ import cn.wisenergy.common.utils.exception.CustomException; ...@@ -5,10 +5,7 @@ import cn.wisenergy.common.utils.exception.CustomException;
import cn.wisenergy.common.utils.exception.RESP_CODE_ENUM; import cn.wisenergy.common.utils.exception.RESP_CODE_ENUM;
import cn.wisenergy.common.utils.exception.Result; import cn.wisenergy.common.utils.exception.Result;
import cn.wisenergy.model.app.WorkTimeOrder; import cn.wisenergy.model.app.WorkTimeOrder;
import cn.wisenergy.model.dto.AppletsPendApprovalDto; import cn.wisenergy.model.dto.*;
import cn.wisenergy.model.dto.CreateWorkOrderDto;
import cn.wisenergy.model.dto.ProjectDto;
import cn.wisenergy.model.dto.WorkTimeOrderDto;
import cn.wisenergy.service.*; import cn.wisenergy.service.*;
import cn.wisenergy.web.admin.controller.common.BaseController; import cn.wisenergy.web.admin.controller.common.BaseController;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
...@@ -61,8 +58,8 @@ public class WorkTimeOrderController extends BaseController { ...@@ -61,8 +58,8 @@ public class WorkTimeOrderController extends BaseController {
throw new CustomException(RESP_CODE_ENUM.INPUT_PARAM_IS_NULL); throw new CustomException(RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
} }
Date date = DateUtil.convertStrToDate(workDay, "yyyy-MM-dd"); Date date = DateUtil.convertStrToDate(workDay, "yyyy-MM-dd");
List<WorkTimeOrderDto> dtos = workTimeOrderService.getByDayToDto(userId, date); List<WorkTimeOrder> dtos = workTimeOrderService.getByDayToDto(userId, date);
return getResult(dtos); return getResult(workTimeOrderService.wtoToWtod(dtos));
} }
@ApiOperation(value = "工时填报", notes = "工时填报", httpMethod = "POST") @ApiOperation(value = "工时填报", notes = "工时填报", httpMethod = "POST")
...@@ -125,16 +122,16 @@ public class WorkTimeOrderController extends BaseController { ...@@ -125,16 +122,16 @@ public class WorkTimeOrderController extends BaseController {
} }
@ApiOperation(value = "查询用户的所有项目和部门经理", notes = "查询用户的所有项目和部门经理", httpMethod = "GET") @ApiOperation(value = "查询当前用户可填报和可审批的项目", notes = "查询当前用户可填报和可审批的项目", httpMethod = "GET")
@ApiImplicitParam(name = "userId", value = "用户id", dataType = "int", required = true) @ApiImplicitParam(name = "userId", value = "用户id", dataType = "int", required = true)
@GetMapping(value = "/getProject") @GetMapping(value = "/getProject")
public Result<List<ProjectDto>> getProjectByUserId(Integer userId) { public Result<ProjectsDto> getProjectByUserId(Integer userId) {
log.info("WorkTimeOrderController[]getProjectByUserId[]input.param.userId:{}" + userId); log.info("WorkTimeOrderController[]getProjectByUserId[]input.param.userId:{}" + userId);
if (null == userId) { if (null == userId) {
throw new CustomException(RESP_CODE_ENUM.INPUT_PARAM_IS_NULL); throw new CustomException(RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
} }
List<ProjectDto> list = workTimeOrderService.getProjectDto(userId); ProjectsDto projectDto = workTimeOrderService.getProjectDto(userId);
return getResult(list); return getResult(projectDto);
} }
@ApiOperation(value = "单个或批量审批", notes = "单个或批量审批", httpMethod = "GET") @ApiOperation(value = "单个或批量审批", notes = "单个或批量审批", httpMethod = "GET")
...@@ -154,7 +151,7 @@ public class WorkTimeOrderController extends BaseController { ...@@ -154,7 +151,7 @@ public class WorkTimeOrderController extends BaseController {
System.out.println(lists); System.out.println(lists);
Boolean aBoolean = workTimeOrderService.examineByIds(reviewerId, lists); Boolean aBoolean = workTimeOrderService.examineByIds(reviewerId, lists);
return getResult(aBoolean); return getResult(aBoolean);
// return null;
} }
@ApiOperation(value = "工单驳回", notes = "工单驳回", httpMethod = "PUT") @ApiOperation(value = "工单驳回", notes = "工单驳回", httpMethod = "PUT")
...@@ -185,4 +182,6 @@ public class WorkTimeOrderController extends BaseController { ...@@ -185,4 +182,6 @@ public class WorkTimeOrderController extends BaseController {
return getResult(workTimeOrderDtos); return getResult(workTimeOrderDtos);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment