import { Component, ViewChild } from '@angular/core';
import { NavController, IonicPage, Slides } from 'ionic-angular';
import { ActivityListPage } from '../../activity/activityList/activityList';
import { Http, Response } from '@angular/http';
import { ActivityStatisticService } from '../../../service/activityStatisticService';
import { MyActivityListPage } from '../../myActivityList/myActivityList';
import { AppService, AppGlobal } from '../../../service/appHttpService';
import { Calendar } from '@ionic-native/calendar';
import { ActivityApplyPage } from '../../activity/activityApply/activityApply'
import { ActivityConfirmPage } from '../../activity/activityConfirm/activityConfirm';
import { OutGoingReportPage } from '../../report/outGoingReport/outGoingReport';
import { OperationListPage } from '../../operation-list/operation-list';
import { AnnouncementPage } from '../../announcement/announcement';
import { Storage } from '@ionic/storage';
import { OutGoingReportEditPage } from '../../report/outGoingReportEdit/outGoingReportEdit';
import { AnnouncementViewPage } from '../../announcementView/announcementView';
import {MoreAppPage} from "../../home/more-app/more-app";
import {ReportTrackPage} from "../../report/reportTrack/reportTrack";
import { CalendarComponentOptions } from "ion2-calendar";
import {NoticePage} from "../notice/notice";

@IonicPage()
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})

export class HomePage {
  @ViewChild(Slides) slides: Slides;

  hasNewActivity:number = 0;
  hasNewNotice:number = 0;
  hasNewPremanager:number = 0;

  //日历
    date: string;
    type: 'string';

    optionsMulti: CalendarComponentOptions = {
        pickMode: 'multi',
        monthFormat: 'YYYY 年 MM 月 ',
        weekdays: ['天', '一', '二', '三', '四', '五', '六'],
        weekStart: 1,
    };

  //待出行
  waitgoCount = '0';
  //待确认
  waitsureCount = '0';
  //未读通知
  NoticeNotreadCount = '0';
  //尚未报备
  PremanagerNotdoCount = '0';
  //是否显示正在开发中
  isWait: boolean = false;

  slidersItems = [];
  noticeList = [];

  picture: string = AppGlobal.picture;

  operations: Array<string>;

  //当前年份
  year;
  //当前月份
  month;
  //当前第几周
  weekNo;



  //当前周日历展示
  week: Week[] = [{
    id: 0,
    title: '日',
    date: null,
    isToday: false
  }, {
    id: 1,
    title: '一',
    date: null,
    isToday: false
  }, {
    id: 2,
    title: '二',
    date: null,
    isToday: false
  }, {
    id: 3,
    title: '三',
    date: null,
    isToday: false
  }, {
    id: 4,
    title: '四',
    date: null,
    isToday: false
  }, {
    id: 5,
    title: '五',
    date: null,
    isToday: false
  }, {
    id: 6,
    title: '六',
    date: null,
    isToday: false
  }]

  constructor(public navCtrl: NavController, public activityStatisticService: ActivityStatisticService,
    public appService: AppService, public http: Http, private calendar: Calendar, public storage: Storage) {

  }


  goActivity() {
    this.navCtrl.push('ActivityListPage', {

    });
  }

  goAnnouncement() {
    this.navCtrl.push("AnnouncementPage");
  }

  ngOnInit(): void {
  //   this.appService.ObserverHttpGet("/wisdomgroup/modules/common/file/getBanner", {}).subscribe((res: Response) => {
      //     this.slidersItems = res.json();
      //     console.log(res.json());
      //   }, error => {
      //     this.appService.alert('系统错误！');
      //   })
        this.appService.ObserverHttpGet("/wisdomgroup/modules/notice/getAllNotice", {}).subscribe((res: Response) => {
          this.noticeList = res.json().slice(0,2);
          console.log(this.noticeList);
        }, error => {
          this.appService.alert('系统错误！');
        })

  }
  //页面进入时启动自动播放
  // ionViewDidEnter() {
  //   this.slides.startAutoplay();
  // }


  //页面离开时停止自动播放
  // ionViewDidLeave() {
  //   this.slides.stopAutoplay();
  // }

  ionViewDidEnter() {
    setTimeout(() => {
      if (this.slidersItems.length > 0) {
        // this.slides.freeMode = true;
        // this.slides.autoplay = 2000;
        // this.slides.speed = 500;
        // this.slides.loop = true;
        // this.slides.autoplayDisableOnInteraction=false;
        // this.slides.startAutoplay();
      }
    }, 1000)
  }

  ionViewWillEnter() {
    //初始化日期
    this.initDate();
    this.getHasNewActivity();
    this.getHasNewNotice();
    this.getHasNewPremanager();
    //统计待进行和待确认活动数目
    this.activityStatisticService.myActivityOrderCount((data) => {
      this.waitgoCount = data.waitgoOrder;
      this.waitsureCount = data.waitSureOrder;
    });

    this.appService.ObserverHttpGet("/wisdomgroup/modules/common/file/getBanner", {}).subscribe((res: Response) => {
      this.slidersItems = res.json();
    }, error => {
      this.appService.alert('网络异常！');
    })

    //初始化统计未读通知
    this.activityStatisticService.myNoticeNotreadCount((data) => {
      this.NoticeNotreadCount = data;
    });
    //初始化统计尚未报备
    this.activityStatisticService.myNotdoPremanagerCount((data) => {
      this.PremanagerNotdoCount = data;
    });

    //初始化操作记录
    this.initMineOperationInfo();
  }

  goMyActivity() {
    this.navCtrl.push("MyActivityListPage");
  }
  goMyNotice() {
    this.navCtrl.push("AnnouncementPage");
  }

  //活动跟踪
    goActivityTrack(){
        this.navCtrl.push("ActivityTrackPage");
    }

    //报备跟踪
    goReportTrack(){
        this.navCtrl.push("ReportTrackPage");
    }

  wait() {
    this.isWait = true;
  }

  cancleWait() {
    this.isWait = false;
  }

    onChange(e){
      console.log(e);
    }

  go(item) {
    if (item.type == 1) {
      this.getActivity(item.id);
    } else if (item.type == 2) {
      this.getPremanager(item.id);
    } else if (item.type == 3) {
      this.navCtrl.push("AnnouncementViewPage", {
        id: item.id
      });
    }
  }

  //获取活动ById
  getActivity(id) {
    this.appService.ObserverHttpPost("/wisdomgroup/modules/activity/appFindById", { id: id })
      .toPromise()
      .then(res => {
        let activity = res.json();
        if (activity.orderList.length == 0) {
          this.goApply(activity);
        } else {
          this.goDetail(activity);
        }
      })
      .catch(error => {
      });
  }

  //获取公告
  // getNotice(id) {
  //   this.appService.ObserverHttpPost("/wisdomgroup/modules/notice/getNoticeById", { id: id })
  //     .toPromise()
  //     .then(res => {
  //       let notice = res.json();

  //     })
  //     .catch(error => {
  //     });
  // }

  //获取报备
  getPremanager(id) {
    this.appService.ObserverHttpPost("/wisdomgroup/modules/premanager/findById", { id: id })
      .toPromise()
      .then(res => {
        let premanager = res.json();
        this.storage.set("premanager", premanager);
        this.navCtrl.push("OutGoingReportEditPage");
      })
      .catch(error => {
      });
  }

  //查看详情
  goDetail(item) {
    let orderid = item.orderList[0]["orderid"];
    this.findMyOrderByOrderId(orderid, result => {
      let order = result;
      this.navCtrl.push("ActivityConfirmPage", { lookOrderDetails: order });
    });
  }

  //报名按钮
  goApply(item) {   //活动状态：1：待发布（不可报名），2：发布中（可报名）3:已完成（报名截止）
    if (item.activityState == 2) {
      let flag = false;
      this.isExitOrderWithActivity(item, result => {
        flag = result;
        if (flag) {
          this.appService.toast("您已经报名该活动，请在我的活动中查看！");
        } else {
          this.navCtrl.push("ActivityApplyPage", { item: item });
        }
      });

    } else {
      if (item.activityState == 1) {
        this.appService.toast("报名暂未开通！");
      } else {
        this.appService.toast("活动已完成！");
      }
    }
  }

  findMyOrderByOrderId(orderid, callback?) {
    let order = this.appService.ObserverHttpPost("/wisdomgroup/modules/order/findMyOrderByOrderId", { "orderid": orderid })
      .subscribe((res: Response) => {
        let data = res.json();
        callback(data == null ? "[]" : data);
      }, error => {
        this.appService.alert('网络异常！');
      }
      );
  }

  isExitOrderWithActivity(activity, callback?): any {
    this.appService.ObserverHttpPost("/wisdomgroup/modules/order/isExitOrderWithActivity", activity)
      .toPromise()
      .then(res => {
        var data = res.json();
        callback(data == null ? "[]" : data);
      })
      .catch(error => {
      });
  }

  //获取当前是第几周
  getWeekOfYear() {
    var today = new Date();
    var firstDay = new Date(today.getFullYear(), 0, 1);
    var dayOfWeek = firstDay.getDay();
    var spendDay = 1;
    if (dayOfWeek != 0) {
      spendDay = 7 - dayOfWeek + 1;
    }
    firstDay = new Date(today.getFullYear(), 0, 1 + spendDay);
    var d = Math.ceil((today.valueOf() - firstDay.valueOf()) / 86400000);
    var result = Math.ceil(d / 7);
    return result + 1;
  };

  //初始化日历
  initDate() {
    this.weekNo = this.getWeekOfYear();
    var date = new Date();
    this.year = date.getFullYear();
    this.month = date.getMonth() + 1;
    //初始化周
    var day = date.getDay();
    var today = date.getDate();
    for (let item of this.week) {
      var count = item.id - day;
      var now = new Date();
      now.setTime(date.getTime() + count * 24 * 60 * 60 * 1000);
      item.date = now.getDate();
      if (count == 0) {
        item.isToday = true;
      }
    }
  }

  //创建日历
  myCalendar() {
    this.calendar.createCalendar('日历').then(
      (msg) => { console.log(msg); },
      (err) => { console.log(err); }
    );
    this.calendar.openCalendar(new Date()).then(
      (msg) => { console.log(msg); },
      (err) => { console.log(err); }
    );
  }

  ///操作记录
  initMineOperationInfo() {
    let order = this.appService.ObserverHttpPost("/wisdomgroup/opertion/searchOperationInfo", { "P_pageNumber": 0, "P_pageSize": 3 })
      .subscribe((res: Response) => {
        let data = res.json();
        this.operations = data.list;
        console.log(JSON.stringify(this.operations));

        this.operations.forEach(element => {
          let timegap = Date.parse(new Date().toString()) - Date.parse(element["opertionTime"].toString());
          let timegapvalue = this.timeshift(timegap);
          element["timegapvalue"] = timegapvalue;
          //显示25字
          let content = element["opertionContent"];
          if (content.length > 25) {
            element["opertionContent"] = content.substr(0, 25) + "...";
          }

        });
      }, error => {
        this.appService.alert('网络异常！');
      }
      );
  }

  timeshift(timegap: number): string {
    let result: string;
    let nd = 1000 * 24 * 60 * 60;//一天的毫秒数
    let nh = 1000 * 60 * 60;//一小时的毫秒数
    let nm = 1000 * 60;//一分钟的毫秒数
    let ns = 1000;//一秒钟的毫秒数

    let day = Math.round(timegap / nd);//计算差多少天
    let hour = Math.round(timegap % nd / nh);//计算差多少小时
    let min = Math.round(timegap % nd % nh / nm);//计算差多少分钟
    let sec = Math.round(timegap % nd % nh % nm / ns);//计算差多少秒//输出结果
    console.log("时间相差：" + day + "天" + hour + "小时" + min + "分钟" + sec + "秒。");

    if (day > 0) {
      result = day + "天前";
    } else if (hour > 0) {
      result = hour + "小时前";
    } else if (min > 0) {
      result = min + "分钟前";
    } else {
      result = sec + "几秒前";
    }
    //result = day+"天"+hour+"小时"+min+"分钟"+sec+"秒"+"前";
    return result;
  }

  //消息通知
    gotoNotice(){
        this.navCtrl.setRoot(NoticePage);
        this.navCtrl.parent.select(2);
    }

  goOperationListPage() {
    this.navCtrl.push("OperationListPage");
  }

  //外出报备跳转
  goOutGoingReportAboutAll() {
    this.navCtrl.push("OutGoingReportPage", {
      type: 1
    });
  }

    goDuty(){
      this.navCtrl.push("DutyPage");
    }

  //更多应用
    gotoMore(){
      this.navCtrl.push('MoreAppPage')
    }

  //尚未报备跳转
  goOutGoingReportAboutNot() {
    this.navCtrl.push("OutGoingReportPage", {
      type: 2
    });
  }

  //获取是否有新的活动
  getHasNewActivity(){
    this.appService.ObserverHttpGet("/wisdomgroup/modules/activity/hasNewActivity", null)
      .subscribe((res: Response) => {
        let data = res.json();
        console.log(data);
        this.hasNewActivity = data;
      }, error => {
        this.appService.alert('网络异常！');
      }
      );
  }

  //获取是否有新的公告
  getHasNewNotice(){
    this.appService.ObserverHttpGet("/wisdomgroup/modules/notice/hasNewNotice", null)
    .subscribe((res: Response) => {
      let data = res.json();
      console.log(data);
      this.hasNewNotice = data;
    }, error => {
      this.appService.alert('网络异常！');
    }
    );
  }

  //获取是否有新的报备
  getHasNewPremanager(){
    this.appService.ObserverHttpGet("/wisdomgroup/modules/premanager/hasNewPremanager", null)
    .subscribe((res: Response) => {
      let data = res.json();
      console.log(data);
      this.hasNewPremanager = data;
    }, error => {
      this.appService.alert('网络异常！');
    }
    );
  }

}
//定义星期实体
export class Week {
  id: number;
  title: string;
  date: number;
  isToday: boolean = false;
}
