Commit b4c21519 by xuwenhao

12.20教师电子档案修改

parent 60d7fc3a
......@@ -108,7 +108,6 @@ public class SchoolXacademicWorksController extends BaseController
/**
* 获取论文著作详细信息
*/
// @PreAuthorize("@ss.hasPermi('system:works:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
......
package yangtz.cs.liu.campus.controller.schoolNewTeacherDzdn;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.service.ISysDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -21,6 +26,8 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolXcomprehensiveHonors;
import yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.ISchoolXcomprehensiveHonorsService;
import yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.ISchoolXteachingAchievementsService;
import yangtz.cs.liu.campus.vo.fudao.FudaoTeacherVo;
import yangtz.cs.liu.campus.vo.schoolNewTeacherDzdn.SchoolXcomprehensiveHonorsVo;
/**
......@@ -35,6 +42,10 @@ public class SchoolXcomprehensiveHonorsController extends BaseController
{
@Autowired
private ISchoolXcomprehensiveHonorsService schoolXcomprehensiveHonorsService;
@Autowired
private ISchoolXteachingAchievementsService schoolXteachingAchievementsService;
@Autowired
private ISysDeptService sysDeptService;
/**
* 查询综合荣誉列表
......@@ -43,11 +54,53 @@ public class SchoolXcomprehensiveHonorsController extends BaseController
@GetMapping("/list")
public TableDataInfo list(SchoolXcomprehensiveHonorsVo schoolXcomprehensiveHonorsVo)
{
//查询审核中的数据
//过滤未提交的数据
schoolXcomprehensiveHonorsVo.setAuditState("0");
startPage();
List<SchoolXcomprehensiveHonorsVo> list = schoolXcomprehensiveHonorsService.selectSchoolXcomprehensiveHonorsList(schoolXcomprehensiveHonorsVo);
return getDataTable(list);
//获取当前登陆人信息
SysUser user = SecurityUtils.getLoginUser().getUser();
//获取当前登陆人的角色信息
List<SysRole> roles = user.getRoles();
if (user.isAdmin()) {
startPage();
List<SchoolXcomprehensiveHonorsVo> list = schoolXcomprehensiveHonorsService.selectSchoolXcomprehensiveHonorsList(schoolXcomprehensiveHonorsVo);
return getDataTable(list);
}
for (SysRole role : roles) {
if (role.getRoleKey().equals("zhry_admin")){
startPage();
List<SchoolXcomprehensiveHonorsVo> list = schoolXcomprehensiveHonorsService.selectSchoolXcomprehensiveHonorsList(schoolXcomprehensiveHonorsVo);
return getDataTable(list);
}else if (role.getRoleKey().equals("jsdnzj_admin")){
//教师电子档案中级管理员只能查看本部门及部门以下的数据
Long deptId = null;
//根据用户部门id查询用户部门信息
SysDept sysDept = sysDeptService.selectDeptById(user.getDeptId());
//判断用户部门属于科室还是级部
//查询所有级部id
List<Long> jbDeptIds = schoolXteachingAchievementsService.getJbDeptId();
//查询所有科室id
List<Long> ksDeptIds = schoolXteachingAchievementsService.getKsDeptId();
for (Long jbDeptId : jbDeptIds) {
if (sysDept.getAncestors().contains(jbDeptId.toString())){
deptId = jbDeptId;
}
}
for (Long ksDeptId : ksDeptIds) {
if (sysDept.getAncestors().contains(ksDeptId.toString())){
deptId = ksDeptId;
}
}
//查询本部门下所有教师的id
List<Long> deptUserIds = schoolXteachingAchievementsService.getUserIdsByDeptId(deptId);
if (deptUserIds.size() > 0){
schoolXcomprehensiveHonorsVo.setUserIds(deptUserIds);
}
startPage();
List<SchoolXcomprehensiveHonorsVo> list = schoolXcomprehensiveHonorsService.selectSchoolXcomprehensiveHonorsList(schoolXcomprehensiveHonorsVo);
return getDataTable(list);
}
}
return getDataTable(new ArrayList<>());
}
/**
......@@ -107,7 +160,6 @@ public class SchoolXcomprehensiveHonorsController extends BaseController
/**
* 获取综合荣誉详细信息
*/
// @PreAuthorize("@ss.hasPermi('system:honors:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
......
......@@ -107,7 +107,6 @@ public class SchoolXlectureAwardsController extends BaseController
/**
* 获取讲课获奖详细信息
*/
// @PreAuthorize("@ss.hasPermi('system:awards:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
......
......@@ -59,7 +59,7 @@ public class SchoolXprojectResearchController extends BaseController {
}
/**
* 导出课题研究列表
* 导出课题研究列表(个人)
*/
// @PreAuthorize("@ss.hasPermi('system:research:exportGr')")
@Log(title = "课题研究", businessType = BusinessType.EXPORT)
......@@ -102,7 +102,6 @@ public class SchoolXprojectResearchController extends BaseController {
/**
* 获取课题研究详细信息
*/
// @PreAuthorize("@ss.hasPermi('system:research:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
......
......@@ -39,7 +39,7 @@ public class SchoolXteacherAwardsController extends BaseController
/**
* 查询教师获奖列表
*/
// @PreAuthorize("@ss.hasPermi('system:awards:list')")
// @PreAuthorize("@ss.hasPermi('school:teacherAwards:list')")
@GetMapping("/list")
public TableDataInfo list(SchoolXteacherAwardsVo schoolXteacherAwardsVo)
{
......@@ -53,7 +53,7 @@ public class SchoolXteacherAwardsController extends BaseController
/**
* 查询教师获奖列表(个人)
*/
// @PreAuthorize("@ss.hasPermi('system:awards:listGr')")
// @PreAuthorize("@ss.hasPermi('school:teacherAwards:listGr')")
@GetMapping("/listGr")
public TableDataInfo listGr(SchoolXteacherAwardsVo schoolXteacherAwardsVo)
{
......@@ -66,7 +66,7 @@ public class SchoolXteacherAwardsController extends BaseController
/**
* 导出教师获奖列表(个人)
*/
// @PreAuthorize("@ss.hasPermi('system:awards:exportGr')")
// @PreAuthorize("@ss.hasPermi('school:teacherAwards:exportGr')")
@Log(title = "教师获奖", businessType = BusinessType.EXPORT)
@PostMapping("/exportGr")
public void exportGr(HttpServletResponse response, SchoolXteacherAwardsVo schoolXteacherAwardsVo)
......@@ -86,7 +86,7 @@ public class SchoolXteacherAwardsController extends BaseController
/**
* 导出教师获奖列表
*/
// @PreAuthorize("@ss.hasPermi('system:awards:export')")
// @PreAuthorize("@ss.hasPermi('school:teacherAwards:export')")
@Log(title = "教师获奖", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, SchoolXteacherAwardsVo schoolXteacherAwardsVo)
......@@ -107,7 +107,6 @@ public class SchoolXteacherAwardsController extends BaseController
/**
* 获取教师获奖详细信息
*/
// @PreAuthorize("@ss.hasPermi('system:awards:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
......@@ -117,7 +116,7 @@ public class SchoolXteacherAwardsController extends BaseController
/**
* 新增教师获奖
*/
// @PreAuthorize("@ss.hasPermi('system:awards:add')")
// @PreAuthorize("@ss.hasPermi('school:teacherAwards:add')")
@Log(title = "教师获奖", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SchoolXteacherAwards schoolXteacherAwards)
......@@ -128,7 +127,7 @@ public class SchoolXteacherAwardsController extends BaseController
/**
* 修改教师获奖
*/
// @PreAuthorize("@ss.hasPermi('system:awards:edit')")
// @PreAuthorize("@ss.hasPermi('school:teacherAwards:edit')")
@Log(title = "教师获奖", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SchoolXteacherAwards schoolXteacherAwards)
......@@ -139,7 +138,7 @@ public class SchoolXteacherAwardsController extends BaseController
/**
* 删除教师获奖
*/
// @PreAuthorize("@ss.hasPermi('system:awards:remove')")
// @PreAuthorize("@ss.hasPermi('school:teacherAwards:remove')")
@Log(title = "教师获奖", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
......@@ -150,7 +149,7 @@ public class SchoolXteacherAwardsController extends BaseController
/**
* 审核
*/
// @PreAuthorize("@ss.hasPermi('system:awards:audit')")
// @PreAuthorize("@ss.hasPermi('school:teacherAwards:audit')")
@PostMapping("/audit")
public AjaxResult audit(@RequestBody SchoolXteacherAwards schoolXteacherAwards){
return toAjax(schoolXteacherAwardsService.audit(schoolXteacherAwards));
......
......@@ -41,8 +41,6 @@ public class SchoolXteachingAchievementsController extends BaseController
{
@Autowired
private ISchoolXteachingAchievementsService schoolXteachingAchievementsService;
@Autowired
private ISysDictDataService sysDictDataService;
/**
* 查询教学成绩列表
......@@ -101,7 +99,6 @@ public class SchoolXteachingAchievementsController extends BaseController
/**
* 获取教学成绩详细信息
*/
// @PreAuthorize("@ss.hasPermi('system:achievements:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
......
......@@ -35,7 +35,7 @@ public class SchoolAnnualAssessment {
private String idCard;
/** 考核结果(1优秀、2合格、3不定等次、4不予考核、5不合格) */
@Excel(name = "考核结果", readConverterExp = "1=优秀,2=合格,3=不定等次,4=不予考核,5=不合格", combo = {"优秀","合格","不定等次","不予考核","不合格"})
@Excel(name = "考核结果")
private String checkResult;
/** 备注 */
......
......@@ -2,6 +2,7 @@ package yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.core.domain.entity.SysUser;
import org.apache.ibatis.annotations.Param;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolXteachingAchievements;
import yangtz.cs.liu.campus.vo.schoolNewTeacherDzdn.SchoolXteachingAchievementsVo;
......@@ -66,4 +67,23 @@ public interface SchoolXteachingAchievementsMapper extends BaseMapper<SchoolXtea
List<Map<String, Object>> getUserList(SysUser sysUser);
/**
* 查询本部门下所有教师id
* @param deptId
* @return
*/
List<Long> getUserIdsByDeptId(@Param("deptId") Long deptId);
/**
* 查询所有级部id
* @return
*/
List<Long> getJbDeptId();
/**
* 查询所有科室id
* @return
*/
List<Long> getKsDeptId();
}
......@@ -165,14 +165,19 @@ public class SchoolAnnualAssessmentServiceImpl extends ServiceImpl<SchoolAnnualA
}
}
}
String checkResult1 = "";
//判断考核结果是否输入正确
for (SysDictData sysDictData : checkResult) {
if (!schoolAnnualAssessment.getCheckResult().equals(sysDictData.getDictValue())){
failureNum++;
failureMsg.append("<br/>" + failureNum + "、考核结果输入错误,请您重新输入! ");
break;
if (schoolAnnualAssessment.getCheckResult().equals(sysDictData.getDictLabel())){
checkResult1 = sysDictData.getDictValue();
}
}
if (StringUtils.isEmpty(checkResult1)){
failureNum++;
failureMsg.append("<br/>" + failureNum + "、考核结果输入错误,请您重新输入! ");
}else {
schoolAnnualAssessment.setCheckResult(checkResult1);
}
}
}
if (failureNum > 0) {
......@@ -188,9 +193,22 @@ public class SchoolAnnualAssessmentServiceImpl extends ServiceImpl<SchoolAnnualA
*/
@Override
public String importData(List<SchoolAnnualAssessment> list) {
//判断数据是否为更新或新增
//查询年度考核所有数据
List<SchoolAnnualAssessment> schoolAnnualAssessmentList = schoolAnnualAssessmentMapper.selectSchoolAnnualAssessmentList(new SchoolAnnualAssessment());
for (SchoolAnnualAssessment schoolAnnualAssessment : list) {
//根据年度、姓名、身份证、去查询是否有记录,有则更新,无则新增
for (SchoolAnnualAssessment annualAssessment : schoolAnnualAssessmentList) {
if (schoolAnnualAssessment.getYear().equals(annualAssessment.getYear()) &&
schoolAnnualAssessment.getName().equals(annualAssessment.getName()) &&
schoolAnnualAssessment.getIdCard().equals(annualAssessment.getIdCard())){
schoolAnnualAssessment.setId(annualAssessment.getId());
}
}
}
StringBuilder successMsg = new StringBuilder();
//批量导入年度考核数据
boolean b = saveBatch(list);
boolean b = saveOrUpdateBatch(list);
if (!b){
throw new ServiceException("导入失败");
}
......
......@@ -84,11 +84,16 @@ public class SchoolXteachingAchievementsServiceImpl extends ServiceImpl<SchoolXt
{
//根据身份证号查询用户,是否存在
SchoolTeacher schoolTeacher = schoolTeacherMapper.selectTeacher(schoolXteachingAchievements.getIdCard());
if (StringUtils.isNull(schoolTeacher)){
throw new ServiceException("用户不存在,请重新输入!");
} else if (!schoolTeacher.getTeacherName().contains(schoolXteachingAchievements.getUserName())){
throw new ServiceException("姓名和身份证姓名不匹配,请重新输入!");
if (StringUtils.isNotNull(schoolTeacher)){
schoolXteachingAchievements.setUserId(schoolTeacher.getId());
}else {
schoolXteachingAchievements.setUserId(null);
}
// if (StringUtils.isNull(schoolTeacher)){
// throw new ServiceException("用户不存在,请重新输入!");
// } else if (!schoolTeacher.getTeacherName().contains(schoolXteachingAchievements.getUserName())){
// throw new ServiceException("姓名和身份证姓名不匹配,请重新输入!");
// }
schoolXteachingAchievements.setUserId(schoolTeacher.getId());
//判断班级是否正确
String className = schoolXteachingAchievements.getClassName();
......@@ -122,12 +127,16 @@ public class SchoolXteachingAchievementsServiceImpl extends ServiceImpl<SchoolXt
{
//根据身份证号查询用户,是否存在
SchoolTeacher schoolTeacher = schoolTeacherMapper.selectTeacher(schoolXteachingAchievements.getIdCard());
if (StringUtils.isNull(schoolTeacher)){
throw new ServiceException("用户不存在,请重新输入!");
} else if (!schoolTeacher.getTeacherName().contains(schoolXteachingAchievements.getUserName())){
throw new ServiceException("姓名和身份证姓名不匹配,请重新输入!");
if (StringUtils.isNotNull(schoolTeacher)){
schoolXteachingAchievements.setUserId(schoolTeacher.getId());
}else {
schoolXteachingAchievements.setUserId(null);
}
schoolXteachingAchievements.setUserId(schoolTeacher.getId());
// if (StringUtils.isNull(schoolTeacher)){
// throw new ServiceException("用户不存在,请重新输入!");
// } else if (!schoolTeacher.getTeacherName().contains(schoolXteachingAchievements.getUserName())){
// throw new ServiceException("姓名和身份证姓名不匹配,请重新输入!");
// }
//判断班级是否正确
String className = schoolXteachingAchievements.getClassName();
//将所有中文逗号替换成英文逗号
......@@ -271,6 +280,9 @@ public class SchoolXteachingAchievementsServiceImpl extends ServiceImpl<SchoolXt
} else if (StringUtils.isNull(schoolXteachingAchievements.getAssessmentScore())){
failureNum++;
failureMsg.append("<br/>" + failureNum + "、考核分为空,请您重新输入! ");
} else if (schoolXteachingAchievements.getIdCard().length() != 18 && schoolXteachingAchievements.getIdCard().length() != 15){
failureNum++;
failureMsg.append("<br/>" + failureNum + "、身份证号输入错误,请您重新输入! ");
} else {
//判断学年输入是否正确
String schoolYear = schoolXteachingAchievements.getSchoolYear();
......@@ -369,17 +381,22 @@ public class SchoolXteachingAchievementsServiceImpl extends ServiceImpl<SchoolXt
failureMsg.append("<br/>" + failureNum + "、考核分输入错误,请您重新输入! ");
}
//校验身份证
if(schoolXteachingAchievements.getIdCard().length() == 18){
//校验前十七位是否为数字
for (int i = 0; i < 17; i++) {
if (!Character.isDigit(schoolXteachingAchievements.getIdCard().charAt(i))){
failureNum++;
failureMsg.append("<br/>" + failureNum + "、身份证号输入错误,请您重新输入! ");
break;
}
}
}
//根据身份证号查询用户,是否存在
SchoolTeacher schoolTeacher = schoolTeacherMapper.selectTeacher(schoolXteachingAchievements.getIdCard());
if (StringUtils.isNull(schoolTeacher)){
failureNum++;
failureMsg.append("<br/>" + failureNum + "、姓名为" + schoolXteachingAchievements.getUserName() + "的用户不存在,请您重新输入! ");
} else if (!schoolTeacher.getTeacherName().contains(schoolXteachingAchievements.getUserName())){
//判断输入的姓名与身份证查出来的用户名是否匹配
failureNum++;
failureMsg.append("<br/>" + failureNum + "、姓名为" + schoolXteachingAchievements.getUserName() + "的用户不存在,请您重新输入! ");
if (StringUtils.isNotNull(schoolTeacher)){
schoolXteachingAchievements.setUserId(schoolTeacher.getId());
}
schoolXteachingAchievements.setUserId(schoolTeacher.getId());
}
}
if (failureNum > 0) {
......@@ -404,4 +421,32 @@ public class SchoolXteachingAchievementsServiceImpl extends ServiceImpl<SchoolXt
successMsg.insert(0, "恭喜您,数据已导入成功!");
return successMsg.toString();
}
/**
* 查询本部门下所有教师id
* @param deptId
* @return
*/
@Override
public List<Long> getUserIdsByDeptId(Long deptId) {
return schoolXteachingAchievementsMapper.getUserIdsByDeptId(deptId);
}
/**
* 查询所有级部id
* @return
*/
@Override
public List<Long> getJbDeptId() {
return schoolXteachingAchievementsMapper.getJbDeptId();
}
/**
* 查询所有科室id
* @return
*/
@Override
public List<Long> getKsDeptId() {
return schoolXteachingAchievementsMapper.getKsDeptId();
}
}
......@@ -90,4 +90,23 @@ public interface ISchoolXteachingAchievementsService extends IService<SchoolXtea
* @return
*/
String importData(List<SchoolXteachingAchievements> list);
/**
* 查询本部门下所有教师id
* @param deptId
* @return
*/
List<Long> getUserIdsByDeptId(Long deptId);
/**
* 查询所有级部id
* @return
*/
List<Long> getJbDeptId();
/**
* 查询科室id
* @return
*/
List<Long> getKsDeptId();
}
......@@ -7,6 +7,7 @@ import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class FudaoStudentVo {
......@@ -46,6 +47,9 @@ public class FudaoStudentVo {
@Excel(name = "比赛名称")
private String resultname;
/** 获奖人id集合 */
private List<Long> userids;
//获奖人id
private Long userid;
......
......@@ -7,6 +7,7 @@ import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class FudaoTeacherVo {
......@@ -44,6 +45,9 @@ public class FudaoTeacherVo {
@Excel(name = "比赛名称")
private String competitionname;
/** 获奖人id集合 */
private List<Long> userids;
//获奖人id
private Long userid;
......
......@@ -7,6 +7,7 @@ import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class SchoolXcomprehensiveHonorsVo
......@@ -43,6 +44,9 @@ public class SchoolXcomprehensiveHonorsVo
@Excel(name = "综合荣誉-成果名称")
private String resultName;
/** 获奖人id集合 */
private List<Long> userIds;
/** 获奖人id */
private Long userId;
......
......@@ -44,6 +44,12 @@
<if test="username != null and username != ''"> and user_name like concat('%', #{username}, '%')</if>
<if test="org != null and org != ''"> and org like concat('%', #{org}, '%')</if>
<if test="awardtime != null"> and award_time = #{awardtime}</if>
<if test="userids != null">
and user_id in
<foreach item="userid" collection="userids" open="(" separator="," close=")">
#{userid}
</foreach>
</if>
<if test="startTime != null and endTime != null "> and award_time BETWEEN #{startTime} AND #{endTime}</if>
</where>
order by create_time DESC
......
......@@ -43,6 +43,12 @@
<if test="username != null and username != ''"> and user_name like concat('%', #{username}, '%')</if>
<if test="org != null and org != ''"> and org like concat('%', #{org}, '%')</if>
<if test="awardtime != null"> and award_time = #{awardtime}</if>
<if test="userids != null">
and user_id in
<foreach item="userid" collection="userids" open="(" separator="," close=")">
#{userid}
</foreach>
</if>
<if test="startTime != null and endTime != null "> and award_time BETWEEN #{startTime} AND #{endTime}</if>
</where>
order by create_time DESC
......
......@@ -48,6 +48,12 @@
<if test="pictureUrl != null and pictureUrl != ''"> and picture_url = #{pictureUrl}</if>
<if test="auditState != null and auditState != ''"> and audit_state != #{auditState}</if>
<if test="startTime != null and endTime != null "> and award_time BETWEEN #{startTime} AND #{endTime}</if>
<if test="userIds != null">
and user_id in
<foreach item="userId" collection="userIds" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
</where>
order by create_time DESC
</select>
......
......@@ -155,4 +155,26 @@
AND user_name like concat('%', #{userName}, '%')
</if>
</select>
<select id="getUserIdsByDeptId" parameterType="Long" resultType="Long">
SELECT
u.user_id
FROM
sys_user u
LEFT JOIN sys_dept d ON u.dept_id = d.dept_id
WHERE
u.del_flag = '0'
AND (
u.dept_id = #{deptId}
OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set( #{deptId}, ancestors ) ))
OR #{deptId} IN ( SELECT ud.dept_id FROM sys_user_dept ud WHERE ud.user_id = u.user_id )
</select>
<select id="getJbDeptId" resultType="Long">
SELECT dept_id,dept_name FROM sys_dept WHERE del_flag = '0' AND dept_name like concat('%', "级部", '%') AND parent_id = 100
</select>
<select id="getKsDeptId" resultType="Long">
SELECT dept_id,dept_name FROM sys_dept WHERE del_flag = '0' AND parent_id = 154
</select>
</mapper>
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