package com.yonge.cooleshow.teacher.controller;

import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
import com.yonge.cooleshow.auth.api.entity.SysUser;
import com.yonge.cooleshow.biz.dal.entity.Subject;
import com.yonge.cooleshow.biz.dal.entity.Teacher;
import com.yonge.cooleshow.biz.dal.service.SubjectService;
import com.yonge.cooleshow.biz.dal.service.TeacherService;
import com.yonge.cooleshow.biz.dal.wrapper.SubjectWrapper;
import com.yonge.cooleshow.common.controller.BaseController;
import com.yonge.cooleshow.common.entity.HttpResponseResult;
import com.yonge.toolset.base.page.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RequestMapping("${app-config.url.teacher:}/subject")
@Api(tags = "声部服务")
@RestController
public class SubjectController extends BaseController {

	@Autowired
	private SubjectService subjectService;
	
    @Autowired
    private SysUserFeignService sysUserFeignService;
    
    @Autowired
    private TeacherService teacherService;

	@ApiOperation(value = "根据声部编号查询声部")
	@GetMapping("/get/{id}")
	public Object get(@ApiParam(value = "声部编号", required = true) @PathVariable("id") Long id) {
		return succeed(subjectService.get(id));
	}

	@ApiOperation(value = "分页查询声部列表")
	@PostMapping("/queryPage")
	@PreAuthorize("@pcs.hasPermissions('subject/queryPage')")
	public HttpResponseResult<PageInfo<SubjectWrapper.Subject>> queryPage(@RequestBody SubjectWrapper.SubjectQuery query) {
		query.setParentSubjectId(0);
		return succeed(subjectService.selectPage(query));
	}

	@ApiOperation(value = "获取声部")
	@GetMapping("/subjectSelect")
    public HttpResponseResult<List<Subject>> subjectSelect(
			@ApiParam(value = "类型 PRACTICE 趣纠课 LIVE 直播课 VIDEO 视频课 PIANO_ROOM 琴房 MUSIC 曲目 ") String type){
		
		String userExtSubjectIds = null;
        
        SysUser sysUser = sysUserFeignService.queryUserInfo();
        if (sysUser != null && sysUser.getId() != null) {
        	Teacher teacher = teacherService.getById(sysUser.getId());
        	if(teacher != null && teacher.getDefaultSubject() != null){
        		userExtSubjectIds = teacher.getDefaultSubject().toString();
        	}
        }
        
        List<Subject> subjectSelect = subjectService.subjectSelect(type, userExtSubjectIds);
		subjectService.convertSubSubject(subjectSelect);
        return succeed(subjectSelect);
    }
}
