import React, {Component} from 'react';
import {Link} from "react-router-dom";
import axios from 'axios';
import {getImageUrl, trigger, on, off} from 'educoder';
import { Tooltip, message,Popover} from 'antd';
import CoursesListType from '../coursesPublic/CoursesListType';
import AccountProfile from"../../user/AccountProfile";
import Addcourses from '../coursesPublic/Addcourses';
import '../css/Courses.css';
import Modals from "../../modals/Modals";
import Guide from './CoursesGuide';
import AddStudentModal from '../members/modal/AddStudentModal'
import AddTeacherModal from '../members/modal/AddTeacherModal'

// 点击按钮复制功能
// function jsCopy(){
//   var e = document.getElementById("copy_invite_code");
//   e.select();
//   document.execCommand("Copy");
//   codesuccess()
// }

// 点击按钮复制功能
function jsCopy() {
    var e = document.getElementById("copy_invite_code");
    e.select();
    document.execCommand("Copy");
    codesuccess()
}

function codesuccess() {
    message.success('复制成功');
};

class CoursesBanner extends Component {
    constructor(props) {
        super(props)
        this.state = {
            show: false,
            Addcoursestypes: false,
            modalsType: false,
            modalsTopval: "",
            loadtype: false,
            metype: 0,
            modalsBottomval: "",
            antIcon:false,
            coursedata:undefined,
            is_guide:false
        }
    }
    componentDidMount() {

			this.onloadupdatabanner()
      on('updatabanner', this.updatabanner)
    }
    componentWillUnmount() {
      off('updatabanner', this.updatabanner)
    }
    

	onloadupdatabanner=()=>{
		this.updatabanner()
	}
  updatabanner=()=>{
      let courseId = this.props.match.params.coursesId;
      let url = "/courses/" + courseId + "/top_banner.json"
      axios.get(url).then((result) => {
      	if( result!=undefined){
					let data = result.data;
            this.setState({
              coursedata: data,

            })
				}else{
					this.onloadupdatabanner()
				}
      })
  }
    showeditmenu = () => {
        this.setState({
            show: true,
        })
    }

    hideeditmenu = () => {
        this.setState({
            show: false
        })
    }

    tojoinclass = (val) => {
			if(this.props.current_user&&this.props.current_user.profile_completed===false){
				this.setState({
					AccountProfiletype:true
				})
				return
			}

        if (val === 1) {
            this.setState({
                Addcoursestypes: true,
            })
        } else {
            this.setState({
                Addcoursestypes: false,
            })
        }


    }
    showActionPoll=(i,s,ss)=>{
        this.setState({
            modalsType: true,
            modalsTopval: s,
            loadtype: false,
            metype: i,
            modalsBottomval: ss,
        })
    }
    ActionPoll = (i) => {
        let {coursedata}=this.state;
        var s = "";
        var ss = "";
        if (i === 1) {
            s = "课堂删除后数据将无法恢复,是否确定删除?";
            this.showActionPoll(i,s)
        }
        if (i === 2) {
            s = "您确定要设置为私有?";
            this.showActionPoll(i,s)
        }
        if (i === 3) {
            s = "设为公开后,非课堂成员也可以访问查看";
					  ss =  "是否确认设为公开?";
            this.showActionPoll(i,s,ss)
        }

			if(i===4){
            if(coursedata.code_halt === true){
                var url = `/courses/${this.props.match.params.coursesId}/set_invite_code_halt.json`
                axios.post(url, {}).then((result) => {
                    try {
                        if (result.data.status === 0){
                            this.updatabanner()
                        }
                    } catch (e) {

                    }

                })
            }else{
                s = "邀请码停用后,用户不能主动加入该课堂了";
                ss =  "您是否确认停用?";
                this.showActionPoll(i,s,ss)
            }
            }
        if (i ===5) {
            s = "复制将在后台执行,作业、资源、试卷都将复制到新课堂平台";
            ss = "将为你创建一个新的同名课堂,请问是否继续?";
            this.showActionPoll(i,s,ss)
        }

    }
    //取消
    modalCancel = () => {
        this.setState({
            modalsType: false,
            modalsTopval: "",
            modalsBottomval:"",
            loadtype: false,
            antIcon:false
        })

    }
    // 确定
    ModalAction = () => {
        let {coursedata}=this.state;

        var push = this.props.history;
        let id = this.props.match.params.coursesId;
        //删除
        if (this.state.metype === 1) {
            console.log("删除");
           this.modalCancel();
            var url = `/courses/${id}.json`
            axios
                .delete(url, {})
                .then(function (response) {
                    console.log(response.data.status)
                    if (response.data.status === 0) {
                        message.success("删除成功", 1)
                        push.push(`/courses`)

                    }
                })
        }
        //设为私有的
        if (this.state.metype === 2) {
            this.modalCancel();
            var state = this.state;
            var url = `/courses/${id}/set_public_or_private.json`
            axios.post(url, {}).then((result) => {
                    if (result.data.status === 0) {
                        message.success("设为私有的成功", 1);
                        state.coursedata.is_public = false;
                        this.setState({
                            coursedata: state.coursedata,
                        })
                    }
            })
        }
        //设为公有的
        if (this.state.metype === 3) {
            this.modalCancel();
            var state = this.state;
            var url = `/courses/${id}/set_public_or_private.json`
            axios.post(url, {}).then((result) => {
                    if (result.data.status === 0) {
                        message.success("设为公有的成功", 1);
                        state.coursedata.is_public = true;
                        this.setState({
                            coursedata: state.coursedata,
                        })
                    }
            })
        }
        //停用邀请码
        if (this.state.metype === 4) {
            this.modalCancel();
            var url = `/courses/${id}/set_invite_code_halt.json`
            axios.post(url, {}).then((result) => {
                try {
                    if (result.data.status === 0) {
                        message.success(coursedata.code_halt === true?"启用用邀请码成功":"停用邀请码成功", 1);
                        this.updatabanner()
                    }
                } catch (e) {

                }

            })
        }
        if (this.state.metype ===5) {
            this.setState({
                antIcon: true,
            })
            var url = `/courses/${id}/duplicate_course.json`
            axios.post(url).then((response) => {
                // window.location.href = "/courses/" + response.data.new_course_id;
              window.location.href = "/courses/" + response.data.new_course_id+"/students";
            })
        }

        if(this.state.metype===6){
          this.setState({
            antIcon: true,
          })
          var url =`/courses/${id}/exit_course.json`;
          axios.post(url).then((response) => {
            if(response.data.status===0){
              window.location.href = "/users/" + this.props.current_user.login;
            }
          })
        }


    }
    addTeacher = (isTeacher) => {
        this.setState({ isTeacher }, () => {
            this.refs.addTeacherModal.setVisible(true)    
        }) 
        
    }
    addStudent = () => {
        this.refs.addStudentModal.setVisible(true)    
    }
    addTeacherSuccess = (params) => {
        trigger('addTeacherSuccess', JSON.stringify(params))
        this.updatabanner()
    }
    addStudentSuccess = (params) => {
        trigger('addStudentSuccess', JSON.stringify(params))        
        this.updatabanner()
    }
    //退出课堂按钮
    exitclass=()=>{
      this.setState({
        modalsType: true,
        modalsTopval: "退出后您将不再是本课题的成员,作品将全部被删除,",
        modalsBottomval:"确定要退出该课堂吗?",
        metype:6
      })
    }
  //切换身份
  switchidentity=(sum)=>{
    let newurl=this.props.match.url;
    let id = this.props.match.params.coursesId;
    if(sum===1){
     let url =`/courses/${id}/switch_to_student.json`;
      axios.post(url).then((response) => {
        if(response.data.status===0){
          // window.location.href = "/users/" + this.props.current_user.login;
          // this.props.history.replace(newurl);
          window.location.href=newurl
        }
      })
    }


    if(sum===2){
      let url =`/courses/${id}/switch_to_teacher.json`;
      axios.post(url).then((response) => {
        if(response.data.status===0){
          // window.location.href = "/users/" + this.props.current_user.login;
          // this.props.history.replace(newurl);
          window.location.href=newurl
        }
      })
    }

    if(sum===3){
      let url =`/courses/${id}/switch_to_assistant.json`;
      axios.post(url).then((response) => {
        if(response.data.status===0){
          // window.location.href = "/users/" + this.props.current_user.login;
          // this.props.history.replace(newurl);
         window.location.href=newurl
        }
      })
    }


  }
  postsettings=()=>{
    window.location.href = "/courses/" + this.props.match.params.coursesId + "/settings";
  }


	hideAccountProfile=()=>{
		this.setState({
			AccountProfiletype:false
		})
	}

    render() {
        let { Addcoursestypes, coursedata, modalsType, modalsTopval, loadtype,modalsBottomval,antIcon,is_guide,AccountProfiletype} = this.state;

        return (
          <div>
            {
              is_guide && <Guide></Guide>
            }

						{AccountProfiletype===true?<AccountProfile
							hideAccountProfile={()=>this.hideAccountProfile()}
							{...this.props}
							{...this.state}
						/>:""}


            {
              coursedata === undefined || coursedata.status===401? <div id="course_info_1309" className="courseHead" style={{height: '206px'}}></div>:<div id="course_info_1309" className="courseHead" style={{height: '206px'}}>

                {Addcoursestypes === true ? <Addcourses
                  Addcoursestype={Addcoursestypes}
                  hideAddcoursestype={() => this.tojoinclass(2)}
                /> : ""}
                <Modals
                  modalsType={modalsType}
                  modalsTopval={modalsTopval}
                  loadtype={loadtype}
                  modalsBottomval={modalsBottomval}
                  modalCancel={this.modalCancel}
                  modalSave={this.ModalAction}
                  antIcon={antIcon}
                ></Modals>
                <AddTeacherModal ref="addTeacherModal"
                                 {...this.props}
                                 isTeacher={this.state.isTeacher}
                                 moduleName={this.state.isTeacher ? "教师" : "助教"}
                                 addTeacherSuccess={this.addTeacherSuccess}
                ></AddTeacherModal>
                <AddStudentModal ref="addStudentModal"
                                 {...this.props}
                                 moduleName="学生"
                                 addStudentSuccess={this.addStudentSuccess}
                ></AddStudentModal>
                <div className="educontent clearfix educontentTop">
                  <div className="color-white clearfix mb10">

                    {
                      coursedata===undefined || coursedata.status===401 || coursedata.status===407?"":
                        <Tooltip placement="bottom" title={coursedata&&coursedata.name && coursedata.name.length<38?"":coursedata.name}>
                          <span className="font-24 fl bannername">{coursedata.name}</span>
                        </Tooltip>

                    }
                    {/*私有:私有课堂,非课堂成员不能访问

                      公开:公开课堂,非课堂成员可以访问*/}
                    <span className={"TabsWarp"}>
                      <CoursesListType
                        typelist={coursedata.course_end === true ? ["已结束"] : coursedata.is_public === true ? ["公开"] : ["私有"]}
                        typesylename={"mt10"} tipval={coursedata.is_public === true?"":"私有课堂,非课堂成员不能访问"}/>
                    </span>


                  </div>

                  <div className="clearfix ">
                    <div className="fl fl mr40 mb20">

                      <a href={"/users/" + coursedata.teacher_login} className="fl">
                        <img alt="头像" className="radius fl mt3 bannerimgname"
                             src={getImageUrl(`images/` + coursedata.teacher_img)}/>
                      </a>

                      <div className="fl mt13">
                        <p className="color-white">
                          <a href={"/users/" + coursedata.teacher_login}
                             className="color-white bannnerusername">{coursedata.teacher_name}</a>
                        </p>
                      </div>

                      <div className="fl mt13">
                        <p className="color-white bannnerusernames">{coursedata.teacher_school}</p>
                      </div>

                    </div>


                    <div>
                      {coursedata.switch_to_student === true ?
                        <Tooltip placement="bottom" title={
													<pre>由教师/助教身份切换至学生<br/>可进行提交作品、答题等操作</pre>
                        }>
                          <a className="fr user_default_btn user_blue_btn mr20 font-18"
                             onClick={()=>this.switchidentity(1)}
                          > 切换为学生 </a>
                        </Tooltip>
                        :""}

                      {coursedata.switch_to_teacher === true ?
                        <Tooltip placement="bottom" title={
													<pre>由学生身份切换至教师<br/>拥有添加成员、发布作业等管理权限</pre>
                        }>
                          <a className="fr user_default_btn user_blue_btn mr20 font-18"
                             onClick={()=>this.switchidentity(2)}
                          > 切换为老师 </a>
                        </Tooltip>:""}


                      {coursedata.switch_to_assistant === true ?
                        <Tooltip placement="bottom" title={
													<pre>由学生身份切换至助教<br/>拥有添加成员、发布作业等管理权限</pre>
                        }>
                          <a className="fr user_default_btn user_blue_btn mr20 font-18"
                             onClick={()=>this.switchidentity(3)}
                          > 切换为助教 </a>
                        </Tooltip>:""}


                      {coursedata.course_identity === 6&&coursedata.educoder_teacher===false?
                        <a className="fr user_default_btn task-btn-orange font-18 mr20" id="shixun_operation"
                           onClick={() => this.tojoinclass(1)}>加入课堂</a>: ""}

                      {coursedata.course_identity === 6&&coursedata.educoder_teacher===true?
                        <a className="fr user_default_btn task-btn-orange font-18 mr20" id="shixun_operation"
                           onClick={() => this.tojoinclass(1)}>加入课堂</a>: ""}

                      {coursedata.course_identity === 6&&coursedata.educoder_teacher===true?
                        <a className="fr user_default_btn user_blue_btn mr20 font-18" onClick={() => this.ActionPoll(5)}> 复制课堂 </a>: ""}

                      {this.props.isStudent()?<a className="fr user_default_btn user_blue_btn mr20 font-18"
                                                 onClick={() => this.exitclass()}
                      > 退出课堂 </a>:""}

                    </div>

										<style>
											{
												`
												.teachersbox{
												  margin-right:22px !important;
												}
												`
											}
										</style>

                    <div className="clearfix clearfixborder">
                      <ul className="fl color-grey-eb pathInfo pathInfobox mt10">
                        <li className={"mt7 teachersbox"}  >
                          <Link to={"/courses/"+this.props.match.params.coursesId+"/teachers"}>
                            <span className="color-grey-c fl font-16">教师</span>
                            <span
                              className="color-white fl font-16 bannerurli">{coursedata.teacher_count}</span>
                          </Link>
                        </li>

                        <li className={"mt7"}>
                          <Link to={"/courses/"+this.props.match.params.coursesId+"/students"}>
                            <span className="color-grey-c fl font-16">学生</span>
                            <span
                              className={coursedata.credit===null?"color-white fl font-16 bannerurlis":"color-white fl font-16 bannerurli"}>
															{coursedata.student_count}
                            </span>
                          </Link>
                        </li>

                        {/*<li className={"mt7"}>*/}
                        {/*<a>*/}
                        {/*<span className="color-grey-c fl font-16">分班</span>*/}
                        {/*<span className="color-white fl font-16 bannerurli">{coursedata.course_group_count}</span>*/}
                        {/*</a>*/}
                        {/*</li>*/}

                        {coursedata.credit===null?"":<li className={"mt7"}>
                          <a>
                            <span className="color-grey-c fl font-16 mr10">学分</span>
                            <span className="color-white fl font-16 "
                            >{coursedata.credit}</span>
                          </a>
                        </li>}

                        {/*{coursedata.course_end===true? <li className={"mt7"}>*/}
                        {/*<span className="color-grey-c fl font-16">已结束</span>*/}
                        {/*</li>:<li className={"mt7"}>*/}
                        {/*<span className="color-grey-c fl font-16"> 结束</span>*/}
                        {/*<span className="color-white fl font-16"*/}
                        {/*style={{*/}
                        {/*marginLeft:coursedata.deadline===null?"":'8px'*/}
                        {/*}}*/}
                        {/*>{coursedata.deadline===null?"--":coursedata.deadline}</span>*/}
                        {/*</li>}*/}
                      </ul>


                      {this.props.isAdmin()? <ul className="fr color-grey-eb pathInfo pathInfobox mt10"
                                                 style={{
                                                   position: "relative"
                                                 }}
                      >
                        <li className={"mt7 mr10im"}>
                          <a onClick={()=>this.addTeacher(true)}>
                            <span className="color-white fl font-16 bannerurli width100f">添加老师</span>
                          </a>
                        </li>

                        <li className={"mt7 mr10im"}>
                          <a onClick={()=>this.addTeacher(false)}>
                            <span className="color-white fl font-16 bannerurli width100f">添加助教</span>
                          </a>

                        </li>

                        <li className={"mt7 mr10im"}>
                          <a onClick={()=>this.addStudent()}>
                            <span className="color-white fl font-16 bannerurli width100f">添加学生</span>
                          </a>
                        </li>

                        <li className={"mt7 mr10im ml10"} style={{overflow:"hidden"}}>
                          <a>
                            <span className="color-grey-c fl font-16">邀请码</span>
                            <span
                              className={coursedata.code_halt === true? "color-white fl font-16 bannerurli width75f" : "color-white fl font-16 bannerurli width107f marleftf10 color-orange-tip"}>
                                            {coursedata.code_halt === true? "已停用" : coursedata.invite_code}
                              {coursedata.code_halt === true  ? "" :
                                <Tooltip placement="bottom" title={
																	coursedata.code_halt === true? <pre>
																			邀请码已停用<br/>
																			成员不能主动加入课堂
																	</pre>:<pre>
																			成员可以通过邀请码主动加入课堂<br/>
																			点击立刻复制邀请码
																	</pre>
                                }>
                                  <i className="iconfont icon-fuzhi color-white font-14 ml10"
                                     onClick={() => {
                                       jsCopy()
                                     }}></i>
                                </Tooltip>
                              }
                              <input id="copy_invite_code" value={coursedata.invite_code}/>
                                       </span>
                          </a>
                        </li>

                        <li className={"mt7 ml10 mr0 "}>
                          <style>
                            {
                              `
                                     .defaults{cursor:default}
                                     `
                            }
                          </style>
                          <Popover placement="bottom" content={
                            <ul className="sandianbox" style={{
                              display:  'block',
                              right: "-113px",
                              top: "20px"
                            }}>
                              {coursedata.is_public === true?coursedata.course_identity  <3?
                                <div className={"defaults"} onClick={() => this.ActionPoll(2)}>设为私有</div>: "" : ""}

                              {coursedata.is_public === false?coursedata.course_identity <3?
                                <div className={"defaults"}  onClick={() => this.ActionPoll(3)}>设为公开</div> : "": ""}

                              {coursedata.course_identity  <3? <div className={"defaults"}  onClick={() => this.ActionPoll(4)}>
                                {coursedata.code_halt === true ?"启用邀请码":"停用邀请码"}
                              </div>:""}

                              <div className={"defaults"} onClick={this.postsettings}>设置</div>

                              <div className={"defaults"} onClick={() => this.ActionPoll(5)}>复制
                              </div>

                              {coursedata.is_admin===true?coursedata.course_identity  <3?<div className={"defaults"}  onClick={() => this.ActionPoll(1)}>删除</div>
                                :"":""}
                            </ul>
                          }  trigger="hover">
                            <i className="iconfont icon-weibiaoti12 color-white font-14 relative"></i>
                          </Popover>

                        </li>



                      </ul>:""}

                    </div>


                  </div>
                </div>
              </div>
            }
          </div>

        )
    }
}

export default CoursesBanner;


// let id=this.props.match.params.coursesId;
//
// let url="/courses/"+id+"/top_banner.json"
// axios.get(url).then((result)=>{
//     if(result.status===200){
//       let data=result.data;
//         this.setState({
//           coursebannerlist:result.data,
//           name: result.data.name,
//           teacher_name:  result.data.teacher_name,
//           teacher_login:  result.data.teacher_login,
//           teacher_img:  result.data.teacher_img,
//           teacher_school:  result.data.teacher_school,
//           teacher_count:  result.data.teacher_count,
//           student_count:  result.data.student_count,
//           course_group_count:  result.data.course_group_count,
//           credit:  result.data.credit,
//           course_end:  result.data.course_end,
//           deadline:  result.data.deadline,
//           is_teacher:  result.data.is_teacher,
//           is_student:  result.data.is_student,
//           is_admin:  result.data.is_admin,
//           is_public:  result.data.is_public,
//           code_halt:  result.data.code_halt,
//           invite_code: result.data.invite_code,
//           switch_to_student:  result.data.switch_to_student,
//           switch_to_teacher:  result.data.switch_to_teacher,
//           join_course:  result.data.join_course,
//           copy_course:  result.data.copy_course,
//         })
//     }
// coursebannerlist:undefined,
//   name: undefined,
//   teacher_name: undefined,
//   teacher_login: undefined,
//   teacher_img: undefined,
//   teacher_school: undefined,
//   teacher_count: undefined,
//   student_count: undefined,
//   course_group_count: undefined,
//   credit: undefined,
//   course_end: undefined,
//   deadline: undefined,
//   is_teacher: undefined,
//   is_student: undefined,
//   is_admin: undefined,
//   is_public: undefined,
//   code_halt: undefined,
//   invite_code:undefined,
//   switch_to_student: undefined,
//   switch_to_teacher: undefined,
//   join_course: undefined,
//   copy_course: undefined,
// }).catch((error)=>{
//   console.log(error);
// })