/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 *
 * @format
 * @flow
 */

import React, { Component } from "react";
import {
  Platform,
  StyleSheet,
  Text,
  View,
  Image,
  TouchableOpacity,
  ImageBackground,
  Button,
  StatusBar,
  Modal,
  TouchableHighlight,
  DeviceEventEmitter
} from "react-native";
import AndroidUtil from "../../util/AndroidUtil";
import BasePage from "../BasePage";
import CourseTitle from "./CourseTitle";
import ChosePhoto from "./ChosePhoto";
import RegionModal from "./RegionModal";
import BirthdayModal from "./BirthdayModal";
import GradeSelectionModal from "./GradeSelectionModal";
import Header from "./Header";
import PersonalInfoDialog from "./PersonalInfoDialog";
import { NavigationActions, StackActions } from "react-navigation";
import asyncStorage from "../utils/asyncStorage";
import user from "../services/user";
type Props = {};

export default class PersonalInfo extends BasePage {
  state = {
    nickName: "初始昵称",
    schoolName: "未设置",
    provinceName: "广东省",
    citys: "深圳市",
    grade_text: "七年级",
    grade_index: 6,
    birthday_year: 0,
    birthday_month: 0,
    birthday_day: 0,
    birthday_time: 0,
    photo_uri: require("../images/userInfo/default_photo.png")
  };

  render() {
    return (
      <View style={{ backgroundColor: "#F0F1F5", flex: 1 }}>
        <View style={{ width: "100%", height: this.getWindowHeight() }}>
          <PersonalInfoDialog
            ref={view => (this.dialog = view)}
            updateParentState={this.updateState.bind(this)}
          />
          <ChosePhoto
            ref={view => (this.chosephoto = view)}
            photoback={this.photoback.bind(this)}
          />
          <RegionModal
            ref={view => (this.regionmodal = view)}
            cityscommit={this.cityscommit.bind(this)}
            provinceName={this.state.provinceName}
            citys={this.state.citys}
          />
          <GradeSelectionModal
            ref={view => (this.gradeselectionModal = view)}
            commitGrade={this.commitGrade.bind(this)}
            grade_index={this.state.grade_index}
          />
          <BirthdayModal
            ref={view => (this.birthdaymodal = view)}
            birthdaycommit={this.birthdaycommit.bind(this)}
            year={this.state.birthday_year}
            month={this.state.birthday_month}
            day={this.state.birthday_day}
          />
          <StatusBar backgroundColor={"transparent"} translucent={true} />

          <View
            style={{
              flex: 1,
              flexDirection: "column"
            }}
          >
            <ImageBackground
              source={require("../images/userInfo/top.png")}
              style={{
                flex: 2.8,
                width: "100%",
                backgroundColor: "#F0F1F5",
                height: "75%"
              }}
              imageStyle={{ resizeMode: "cover" }}
            >
              <View
                style={{
                  flex: 1,
                  alignItems: "center",
                  justifyContent: "center",
                  flexDirection: "column"
                }}
              >
                <CourseTitle
                  style={{ flex: 4 }}
                  width={this.getWindowWidth()}
                  title="个人信息"
                  lefttype={2}
                  righttype={0}
                  textcolor={"white"}
                  backPress={() => this.goBack()}
                />

                <TouchableOpacity
                  style={{
                    flex: 1,
                    backgroundColor: "white",
                    width: "90%",
                    bottom: 0,
                    alignItems: "center",
                    justifyContent: "center",
                    borderRadius: 20,
                    overflow: "hidden"
                  }}
                  activeOpacity={1}
                  onPress={() => this.arrowpress(0)}
                >
                  <View
                    style={{
                      flex: 1,
                      borderRadius: 20,
                      overflow: "hidden",
                      alignItems: "center",
                      justifyContent: "center",
                      flexDirection: "row"
                    }}
                  >
                    <View style={{ flex: 0.5 }} />

                    <View
                      style={{
                        flex: 3,
                        height: "100%",
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      <Image
                        style={{
                          borderRadius: 50,
                          width: "80%",
                          height: "70%"
                          // borderWidth: 3
                          // borderColor: "red"
                        }}
                        source={this.state.photo_uri}
                      />
                    </View>
                    <View
                      style={{
                        flex: 9,
                        backgroundColor: "white",
                        height: "100%",
                        justifyContent: "center"
                      }}
                    >
                      <Text style={{ left: 10, color: "black", fontSize: 16 }}>
                        修改头像
                      </Text>
                    </View>
                    <View
                      style={{
                        flex: 1.5,
                        height: "65%",
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      {this.getArraowImg(0)}
                    </View>
                  </View>
                </TouchableOpacity>
              </View>
            </ImageBackground>
            <View style={{ flex: 0.5, backgroundColor: "#F0F1F5" }} />
            <View
              style={{
                width: "100%",
                flex: 4.3,
                alignItems: "center",
                backgroundColor: "#F0F1F5"
              }}
            >
              <View
                style={{
                  backgroundColor: "rgb(242, 242, 242)",
                  width: "90%",
                  alignItems: "center",
                  justifyContent: "center",
                  height: "100%",
                  overflow: "hidden",
                  borderRadius: 10
                }}
              >
                <View
                  style={{
                    width: "100%",
                    alignItems: "center",
                    justifyContent: "center",
                    height: "100%"
                  }}
                >
                  <TouchableOpacity
                    style={{
                      flex: 1,
                      marginVertical: 1,
                      width: "100%",
                      flexDirection: "row",
                      backgroundColor: "white"
                    }}
                    activeOpacity={1}
                    onPress={() => this.arrowpress(1)}
                  >
                    <View
                      style={{
                        flex: 2,
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      {this.choseheadericon(1)}
                    </View>
                    <Text style={styles.item_text}>昵称</Text>
                    <View
                      style={{
                        flex: 5,
                        alignItems: "flex-end"
                      }}
                    >
                      <Text
                        style={{
                          flex: 1,
                          fontSize: 15,
                          textAlignVertical: "center"
                        }}
                        numberOfLines={1}
                        ellipsizeMode={"tail"}
                      >
                        {this.state.nickName}
                      </Text>
                    </View>
                    <View
                      style={{
                        flex: 1.1,
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      {this.getArraowImg(1)}
                    </View>
                  </TouchableOpacity>
                  <TouchableOpacity
                    style={{
                      flex: 1,
                      width: "100%",
                      flexDirection: "row",
                      backgroundColor: "white",
                      marginVertical: 1
                    }}
                    activeOpacity={1}
                    onPress={() => this.arrowpress(2)}
                  >
                    <View
                      style={{
                        flex: 2,
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      {this.choseheadericon(2)}
                    </View>
                    <Text style={styles.item_text}>生日</Text>
                    <View
                      style={{
                        flex: 5,
                        alignItems: "flex-end"
                      }}
                    >
                      <Text
                        style={{
                          flex: 1,
                          fontSize: 15,
                          textAlignVertical: "center"
                        }}
                        numberOfLines={1}
                        ellipsizeMode={"tail"}
                      >
                        {this.state.birthday_time}
                      </Text>
                    </View>
                    <View
                      style={{
                        flex: 1.1,
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      {this.getArraowImg(2)}
                    </View>
                  </TouchableOpacity>
                  <TouchableOpacity
                    style={{
                      flex: 1,
                      width: "100%",
                      flexDirection: "row",
                      backgroundColor: "white",
                      marginVertical: 1
                    }}
                    activeOpacity={1}
                    onPress={() => this.arrowpress(3)}
                  >
                    <View
                      style={{
                        flex: 2,
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      {this.choseheadericon(3)}
                    </View>

                    <Text style={styles.item_text}>所在地区</Text>
                    <View
                      style={{
                        flex: 5,
                        alignItems: "flex-end"
                      }}
                    >
                      <Text
                        style={{
                          flex: 1,
                          fontSize: 15,
                          textAlignVertical: "center"
                        }}
                        numberOfLines={1}
                        ellipsizeMode={"tail"}
                      >
                        {this.state.provinceName}-{this.state.citys}
                      </Text>
                    </View>
                    <View
                      style={{
                        flex: 1.1,
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      {this.getArraowImg(3)}
                    </View>
                  </TouchableOpacity>
                  <TouchableOpacity
                    style={{
                      flex: 1,
                      width: "100%",
                      flexDirection: "row",
                      backgroundColor: "white",
                      marginVertical: 1
                    }}
                    activeOpacity={1}
                    onPress={() => this.arrowpress(4)}
                  >
                    <View
                      style={{
                        flex: 2,
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      {this.choseheadericon(4)}
                    </View>

                    <Text style={styles.item_text}>我的学校</Text>
                    <View
                      style={{
                        flex: 5,
                        alignItems: "flex-end"
                      }}
                    >
                      <Text
                        style={{
                          flex: 1,
                          fontSize: 15,
                          textAlignVertical: "center"
                        }}
                        numberOfLines={1}
                        ellipsizeMode={"tail"}
                      >
                        {this.state.schoolName}
                      </Text>
                    </View>
                    <View
                      style={{
                        flex: 1.1,
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      {this.getArraowImg(4)}
                    </View>
                  </TouchableOpacity>
                  <TouchableOpacity
                    style={{
                      flex: 1,
                      marginTop: 1,
                      width: "100%",
                      flexDirection: "row",
                      backgroundColor: "white",
                      marginVertical: 1
                    }}
                    activeOpacity={1}
                    onPress={() => this.arrowpress(5)}
                  >
                    <View
                      style={{
                        flex: 2,
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      {this.choseheadericon(5)}
                    </View>

                    <Text style={styles.item_text}>我的年级</Text>
                    <View
                      style={{
                        flex: 5,
                        alignItems: "flex-end"
                      }}
                    >
                      <Text
                        style={{
                          flex: 1.1,
                          fontSize: 15,
                          textAlignVertical: "center"
                        }}
                        numberOfLines={1}
                        ellipsizeMode={"tail"}
                      >
                        {this.state.grade_text}
                      </Text>
                    </View>
                    <View
                      style={{
                        flex: 1.1,
                        alignItems: "center",
                        justifyContent: "center"
                      }}
                    >
                      {this.getArraowImg(5)}
                    </View>
                  </TouchableOpacity>
                </View>
              </View>
            </View>

            <View
              style={{
                width: "100%",
                flex: 4,
                backgroundColor: "#F0F1F5",
                flexDirection: "column"
              }}
            >
              <View style={{ flex: 2.5 }} />
              <View style={{ flex: 2, flexDirection: "row" }}>
                <View style={{ flex: 1 }} />
                <View
                  style={{
                    flex: 7,
                    width: "100%",
                    height: "100%"
                  }}
                >
                  <TouchableOpacity
                    activeOpacity={1}
                    style={{
                      flex: 2,
                      width: "100%",
                      alignItems: "center",
                      justifyContent: "center",
                      height: "100%"
                    }}
                    onPress={() => this.logout()}
                  >
                    <ImageBackground
                      source={require("../images/userInfo/logoutbg1.png")}
                      style={{
                        flex: 1,
                        width: "100%",
                        alignItems: "center",
                        justifyContent: "center",
                        height: "100%"
                      }}
                      imageStyle={{ resizeMode: "contain" }}
                    >
                      <Text
                        style={{
                          fontSize: 22,
                          color: "white",
                          width: "100%",
                          textAlign: "center"
                        }}
                      >
                        退出登录
                      </Text>
                    </ImageBackground>
                  </TouchableOpacity>
                  <View style={{ flex: 1 }} />
                </View>
                <View style={{ flex: 1 }} />
              </View>
              <View style={{ flex: 0.8 }} />
            </View>
          </View>
        </View>
      </View>
    );
  }

  componentWillMount() {
    var date = new Date();
    var year = date.getFullYear().toString();
    var month = (date.getMonth() + 1).toString();
    var day = date.getDate().toString();
    this.setState({
      birthday_year: year,
      birthday_month: month,
      birthday_day: day,
      birthday_time: year + "年" + month + "月" + day + "日"
    });
  }

  getArraowImg(type) {
    return (
      <TouchableOpacity
        style={{
          width: "100%",
          height: "100%",
          alignItems: "center",

          resizeMode: "contain",
          justifyContent: "center"
        }}
        onPress={() => this.arrowpress(type)}
      >
        <Image
          source={require("../images/userInfo/arrow.png")}
          style={{
            width: "20%",
            height: "30%"
          }}
        />
      </TouchableOpacity>
    );
  }

  choseheadericon(type) {
    let headerpath;
    switch (type) {
      case 0:
        headerpath = require("../images/userInfo/headportrait.png");

        break;
      case 1:
        headerpath = require("../images/userInfo/nickname.png");
        break;
      case 2:
        headerpath = require("../images/userInfo/birthday.png");
        break;
      case 3:
        headerpath = require("../images/userInfo/location.png");
        break;
      case 4:
        headerpath = require("../images/userInfo/school.png");
        break;
      case 5:
        headerpath = require("../images/userInfo/grade.png");
        break;
    }
    // alert(headerpath);
    return (
      <Image
        source={headerpath}
        style={{
          width: "60%",
          height: "60%",
          resizeMode: "contain"
        }}
      />
    );
  }

  arrowpress(type) {
    switch (type) {
      case 0:
        this.chosephoto.setModalVisible(true);
        break;
      case 1:
        this.dialog.setInfo("修改昵称", "昵称");
        this.dialog.setModalVisible(true, 1);
        break;
      case 2:
        // alert("生日");
        this.birthdaymodal.setModalVisible(true);
        break;
      case 3:
        this.regionmodal.setModalVisible(true);
        break;
      case 4:
        this.dialog.setInfo("我的学校", "学校名称");
        this.dialog.setModalVisible(true, 2);

        break;
      case 5:
        this.gradeselectionModal.setModalVisible(true);
        break;
    }
  }

  logout() {
    const resetAction = StackActions.reset({
      index: 0,
      actions: [
        NavigationActions.navigate({ routeName: "Login" }) //要跳转到的页面名字
      ]
    });
    this.props.navigation.dispatch(resetAction);
  }

  updateState(input_text, type) {
    if (type == 1) {
      this.setState({ nickName: input_text });
      this.updateUserInfo({ nickName: input_text });
    } else if (type == 2) {
      this.setState({ schoolName: input_text });
      this.updateUserInfo({ school: input_text });
    }
  }

  cityscommit(provinces_name, citys_name) {
    this.setState({
      provinceName: provinces_name,
      citys: citys_name
    });
    this.updateUserInfo({ province: provinces_name, city: citys_name });
  }
  commitGrade(text, index) {
    this.setState({
      grade_text: text,
      grade_index: index
    });
    this.updateUserInfo({ grade: index + 1 });
  }
  birthdaycommit(year, month, day) {
    this.setState({
      birthday_time: year + "年" + month + "月" + day + "日"
    });
    var date = new Date(year + "-" + month + "-" + day);
    this.updateUserInfo({ birthday: date });
  }

  photoback(photo_uri) {
    if (photo_uri == undefined || photo_uri === "" || photo_uri == null) {
      return;
    }
    this.setState({
      photo_uri: { uri: photo_uri }
    });
  }

  updateUserInfo(object) {
    let opts = {
      method: "PUT", //请求方法
      body: object //请求体
    };
    user.update_UserInfo(opts).then(res => {
      console.log(res);
      console.log("success");
    });
  }
}

const styles = StyleSheet.create({
  item: {
    flex: 1,
    width: "100%",
    flexDirection: "row",
    backgroundColor: "white",
    marginTop: 1
  },
  item_text: {
    flex: 3,
    textAlignVertical: "center",
    color: "black",
    fontSize: 16
  }
});