using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace SolarPower.Models
{
    public enum OperationRecodeStatusEnum : byte
    {
        NoneComplete = 0, //未完成
        Complete = 1, //完成
        NoneCompleteExpired = 2, //未完成-過期
        CompleteExpired = 3, //完成-過期
    }

    public enum OperationRecodeWorkTypeEnum : byte
    {
        Clearn = 0, //清潔
        Inspection = 1, //巡檢
        Fix = 2, //維修
    }

    public class Operation : Created
    {
        public int Id { get; set; }//流水號
        public byte Delete { get; set; }//刪除
        public string PlanId { get; set; }//計畫單號
        public int PowerStationId { get; set; }//電站編號
        public string SerialNumber { get; set; }//計畫單號用流水號
        public int ScheduleNum { get; set; }//排程數字
        public byte ScheduleType { get; set; }//排程屬性，0:天 1:周 2:月 3:季 4:年
        public int WorkDay { get; set; }//預期工作天數
        public DateTime StartTime { get; set; }//開始時間
        public byte Type { get; set; }//項目， 0:清洗 1:巡檢
        public byte EmailType { get; set; }//email提醒種類，0:當天 1:前一天 2:前兩天 3:前三天
        public string Description { get; set; }//描述

    }
    public class PowerStationIdList
    {
        public string Text { get; set; }
        public string Value { get; set; }
    }
    public class SendData
    {
        public List<int> id { get; set; }
    }
    public class OperationCreatePlanModal : Created
    {
        private string startTime = "", endTime = "";
        public int Id { get; set; }
        public int PowerStationId { get; set; }
        public int Type { get; set; }
        public int ScheduleNum { get; set; }
        public int ScheduleType { get; set; }
        public int WorkDay { get; set; }
        public string StartTime
        {
            get
            {
                if (!string.IsNullOrEmpty(startTime))
                {
                    return Convert.ToDateTime(startTime).ToString("yyyy-MM-dd");
                }
                else
                {
                    return null;
                }
            }
            set { startTime = value; }
        }
        public string EndTime
        {
            get
            {
                if (!string.IsNullOrEmpty(endTime))
                {
                    return Convert.ToDateTime(endTime).ToString("yyyy-MM-dd");
                }
                else
                {
                    return null;
                }
            }
            set { endTime = value; }
        }
        public string Description { get; set; }
        public int EmailType { get; set; }
    }
    public class OperationCreatePlan : OperationCreatePlanModal
    {
        public string PlanId { get; set; }
        public string SerialNumber { get; set; }

        private string updatedAt;
        public int UpdatedBy { get; set; } //修改者
        public string UpdatedAt { get { return Convert.ToDateTime(updatedAt).ToString("yyyy-MM-dd HH:mm:ss"); } set { updatedAt = value; } } //修改時間
        private string lastCreateTime;
        public string LastCreateTime { get { return Convert.ToDateTime(lastCreateTime).ToString("yyyy-MM-dd HH:mm:ss"); } set { lastCreateTime = value; } }
    }
    public class OperationPlanTable : OperationCreatePlan
    {
        public string TypeName { get; set; }
        public string PowerStationName { get; set; }
        public string Schedule { get; set; }
        public string EmailTypeName { get; set; }
        public string CreatedPerson { get; set; }
        public string Function { get; set; }//功能
        public string ScheduleDay { get; set; }
        public string StartTimeString { get; set; }
        public string CreateTimeString { get; set; }
        
        
    }

    public class PlanToRecord : Created
    {
        public int PowerStationId { get; set; }
        public int WorkType { get; set; }
        public string StartTime { get; set; }
        public string EndTime { get; set; }
    }

    public class OperationRecode : Created
    {
        private string startTime, endTime, finishTime, workTime;
        public int Id { get; set; }
        public string FormId { get; set; }
        public string SerialNumber { get; set; }
        public int PowerStationId { get; set; }
        public string PowerStationName { get; set; }
        public byte WorkType { get; set; }
        public string ErrorCode { get; set; }
        public string FixDo { get; set; }
        public byte Status { get; set; }
        public int WorkPersonId { get; set; }
        public string StartTime
        {
            get
            {
                if (!string.IsNullOrEmpty(startTime))
                {
                    return Convert.ToDateTime(startTime).ToString("yyyy-MM-dd");
                }
                else
                {
                    return null;
                }
            }
            set { startTime = value; }
        } //開始時間
        public string EndTime
        {
            get
            {
                if (!string.IsNullOrEmpty(endTime))
                {
                    return Convert.ToDateTime(endTime).ToString("yyyy-MM-dd");
                }
                else
                {
                    return null;
                }
            }
            set { endTime = value; }
        } // 結束時間
        public string FinishTime
        {
            get
            {
                if (!string.IsNullOrEmpty(finishTime))
                {
                    return Convert.ToDateTime(finishTime).ToString("yyyy-MM-dd");
                }
                else
                {
                    return null;
                }
            }
            set { finishTime = value; }
        } // 完成時間
        public string WorkTime
        {
            get
            {
                if (!string.IsNullOrEmpty(workTime))
                {
                    return Convert.ToDateTime(workTime).ToString("yyyy-MM-dd");
                }
                else
                {
                    return null;
                }
            }
            set { workTime = value; }
        } // 工作時間
        public string Notice { get; set; }
        public string Description { get; set; }
        public List<OperationRecodeFile> RecodeFiles { get; set; }
    }

    public class OperationRecodeFile : Created
    {
        public int Id { get; set; }
        public int RecordId { get; set; }
        public string FileName { get; set; }
    }

    /// <summary>
    /// 運維作業記錄的搜尋條件
    /// </summary>
    public class PostOperationRecodeFilter
    {
        public List<int> CityIds { get; set; } //縣市編號
        public List<int> PowerStationIds { get; set; } //電站編號
        public byte WorkType { get; set; } //工作項目
        public string Range { get; set; } //取得搜尋範圍
        public string StartTime { get; set; } //起始日期
        public string EndTime { get; set; } //結束日期
    }

    /// <summary>
    /// 運維作業記錄的表單
    /// </summary>
    public class OperationRecodeDataTable : OperationRecode
    {
        public string WorkTypeText
        {
            get
            {
                Dictionary<int, string> pairs = new Dictionary<int, string>()
                {
                    { 0, "清洗"},
                    { 1, "巡檢"},
                    { 2, "維修"},
                };

                return pairs[WorkType];
            }
        } //工作項目名稱
        public string StatusText
        {
            get
            {
                Dictionary<int, string> pairs = new Dictionary<int, string>()
                {
                    { 0, "未完成"},
                    { 1, "完成"},
                    { 2, "未完成-過期"},
                    { 3, "完成-過期"},
                };

                return pairs[Status];
            }
        } //狀態名稱
        public string WorkPersonName { get; set; } //處理人員
        public string OperationPredict
        {
            get
            {
                if (!string.IsNullOrEmpty(StartTime) || !string.IsNullOrEmpty(EndTime))
                {
                    return StartTime + " ~ " + EndTime;
                }
                else
                {
                    return string.Empty;
                }
            }
        } //本次作業預計
        public List<string> HyperLinks { get; set; }
    }

    public class PostOperationRecode
    {
        public int Id { get; set; }
        public int PowerStationId { get; set; }
        public byte WorkType { get; set; }
        public string ErrorCode { get; set; }
        public string FixDo { get; set; }
        public byte Status { get; set; }
        public int WorkPersonId { get; set; }
        public string StartTime { get; set; }//開始時間
        public string EndTime { get; set; } // 結束時間
        public string FinishTime { get; set; } // 完成時間
        public string WorkTime { get; set; } // 工作時間
        public string Notice { get; set; }
        public string Description { get; set; }
        public IFormFile[] RecodeFiles { get; set; }
    }

    public class UpdateOperationRecode : Updated
    {
        public string FormId { get; set; }
        public string SerialNumber { get; set; }
        public string ErrorCode { get; set; }
        public string FixDo { get; set; }
        public byte Status { get; set; }
        public int WorkPersonId { get; set; }
        public string FinishTime { get; set; } // 完成時間
        public string WorkTime { get; set; } // 工作時間
        public string Notice { get; set; }
        public string Description { get; set; }
    }

    /// <summary>
    /// 針對運維作業記錄檔案
    /// </summary>
    public class PostOperationRecodeIdAndSelectedId
    {
        public int ReocdeId { get; set; }
        public int SelectedId { get; set; }
    }

    public class Schedule
    {
        private string startTime;
        public int Id { get; set; }
        public int ScheduleNum { get; set; }
        public int ScheduleType { get; set; }
        public string StartTime { get { return Convert.ToDateTime(startTime).ToString("yyyy-MM-dd HH:mm:ss"); } set { startTime = value; } } //修改時間
    }

}
