using AntDesign;
using AntDesign.ProLayout;
using AntDesign.TableModels;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using wispro.sp.entity;
using wispro.sp.web.Services;


namespace wispro.sp.web.Pages.AppCase
{
    [Authorize]
    public partial class MyCaselist
    {
        class Reason
        {
            public string Value { get; set; }
            public string Name { get; set; }
        }

        List<Reason> _Reasons = new List<Reason>()
        {
            new Reason(){Name="PCT首次英文案",Value="PCT首次英文案"},
            new Reason(){Name="我方转格式、复核",Value="我方转格式、复核"},
            new Reason(){Name="台湾案转大陆案",Value="台湾案转大陆案"},
            new Reason(){Name="大陆案转台湾案",Value="大陆案转台湾案"},
            new Reason(){Name="同套大陆+台湾",Value="同套大陆+台湾"},
            new Reason(){Name="不请款",Value="不请款"},
            new Reason(){Name="撤回后重新递交",Value="撤回后重新递交"},
            new Reason(){Name="发文后客户取消申请",Value="发文后客户取消申请"},
            new Reason(){Name="发文后客户原因取消申请，系统结案",Value="发文后客户原因取消申请，系统结案"},
            new Reason(){Name="改权",Value="改权"},
            new Reason(){Name="改权+改说明书",Value="改权+改说明书"},
            new Reason(){Name="客户不进行答辩",Value="客户不进行答辩"},
            new Reason(){Name="客户提供答辩点，撰写英文报导函",Value="客户提供答辩点，撰写英文报导函"},
            new Reason(){Name="客户未提供答辩点，撰写英文报导函",Value="客户未提供答辩点，撰写英文报导函辩"},
            new Reason(){Name="内-外",Value="内-外"},
            new Reason(){Name="外-内",Value="外-内"},
            new Reason(){Name="外-内首次申请",Value="外-内首次申请"},
            new Reason(){Name="请款",Value="请款"},
            new Reason(){Name="涉外OA不答辩，发报导函结案",Value="涉外OA不答辩，发报导函结案"},
            new Reason(){Name="涉外实质改权",Value="涉外实质改权"},
            new Reason(){Name="首次中文案",Value="首次中文案"},
            new Reason(){Name="我方转格式、复核",Value="我方转格式、复核"},
            new Reason(){Name="外所/他人首次转入OA",Value="外所/他人首次转入OA"},
            new Reason(){Name="我方代交",Value="我方代交"},
            new Reason(){Name="转格式",Value="转格式"},
            new Reason(){Name="撰写中客户取消申请",Value="撰写中客户取消申请"}


        };
        private List<PerformanceItem> _Datas;
        IEnumerable<PerformanceItem> selectedItems= new List<PerformanceItem>();

        int _pageIndex = 1;
        int _pageSize = 10;
        int _total;
        bool _loading = false;
        PerformanceItem EditingItem = null;
        bool _visible = false;
        bool _isAdd = false;

        [Inject] public PerformanceItemServices _ItemService { get; set; }
        [Inject] public MessageService _message { get; set; }
        [Inject] protected NavigationManager NavigationManager { get; set; }



        private bool isFirstInit = true;
        protected async override Task OnInitializedAsync()
        {
            if (isFirstInit)
            {
                _loading = true;

                var data = await _ItemService.GetItems(_pageIndex, _pageSize);


                _Datas = data.Results;
                _total = data.TotalCount;
                _loading = false;
            }

            isFirstInit = false;
            StateHasChanged();
            Console.WriteLine($"OnInitializedAsync:[tota:{_total}\tPageIndex:{_pageIndex}\tPageSize:{_pageSize}]");
        }

        private async Task HandleTableChange(QueryModel<PerformanceItem> queryModel)
        {
            _loading = true;

            var data = await _ItemService.GetItems(queryModel.PageIndex ,queryModel.PageSize);

            _Datas = data.Results;
            //_pageIndex = queryModel.PageIndex;
            //_pageSize = queryModel.PageSize;
            _total = data.TotalCount;
            _loading = false;
            StateHasChanged();

            Console.WriteLine($"OnChange:[tota:{_total}\tPageIndex:{_pageIndex}\tPageSize:{_pageSize}]");
            //_message.Info($"tota:{_total}\r\nPageIndex:{_pageIndex}\r\nPageSize:{_pageSize}");
        }

        private void OnsubShensu(PerformanceItem Item)
        {
            EditingItem = Item;
            _visible = true;
            //return new EventCallback();
        }

        bool _ShowJXModal = false;
        private void OnJXCal(PerformanceItem Item)
        {
            EditingItem = Item;
            _ShowJXModal = true;
        }

        #region 申诉窗口事件
        private void HandleOk(MouseEventArgs e)
        {
            Console.WriteLine(e);
            _visible = false;
        }

        private void HandleCancel(MouseEventArgs e)
        {
            Console.WriteLine(e);
            _visible = false;
        }
        #endregion

        #region 绩效计算窗口事件
        private void HandleOk1(MouseEventArgs e)
        {
            Console.WriteLine(e);
            _ShowJXModal = false;
        }

        private void HandleCancel1(MouseEventArgs e)
        {
            Console.WriteLine(e);
            _ShowJXModal = false;
        }
        #endregion

        
        public shensuType[] AvatarMenuItems { get; set; } = new shensuType[]
        {
            new() { ChangeField = "核稿人", Name = "核稿人申诉"},
            new() { ChangeField = "处理人", Name =  "处理人申诉"},
            new() { ChangeField = "案件系数", Name =  "案件系数申诉"},
            new() { ChangeField = "处理事项系数", Name =  "处理事项系数申诉"},
            new() { Name =  "多人处理分配比率申诉"},
            new() { Name =  "严重超期说明"},
            //new() { Key = "logout", IconType = "logout", Option = "涉外新申请绩效计算备注"}
        };

        private shensuType _SelectedItem;
        private void OnSelectedItemChangedHandler(shensuType value)
        {
            _SelectedItem = value;
            //StaffGradeIdChanged.InvokeAsync(_SelectedItem.Id);
        }
        #region 文件上传控件设定
        List<UploadFileItem> fileList = new List<UploadFileItem>
            {
                new UploadFileItem
                {
                    Id = "1",
                    FileName = "客户往来邮件1.jpg",
                    Url = "#",
                    State = UploadState.Success
                },
                new UploadFileItem
                {
                    Id = "2",
                    FileName = "与客户微信聊天图片.jpg",
                    Url = "#",
                    State = UploadState.Success
                },
                new UploadFileItem
                {
                    Id = "3",
                    FileName = "附件.docx",
                    Url = "#",
                    State = UploadState.Success
                }
            };

        Dictionary<string, object> attrs = new Dictionary<string, object>
        {
            {"Action", "#" },
            {"Name", "files" },
            {"Multiple", true }
        };

        void HandleChange(UploadInfo fileinfo)
        {
            //if (fileList.Count > 5)
            //{
            //    fileList.RemoveRange(0, fileList.Count - 2);
            //}
            //fileList.Where(file => file.State == UploadState.Success && !string.IsNullOrWhiteSpace(file.Response)).ForEach(file => {
            //    var result = file.GetResponse<ResponseModel>();
            //    file.Url = result.url;
            //});
        }

        public class ResponseModel
        {
            public string name { get; set; }

            public string status { get; set; }

            public string url { get; set; }

            public string thumbUrl { get; set; }
        }
        #endregion

        


        CalType _calType = new CalType();
        shenshou _shenshou = new shenshou();
        List<Staff> Reviewers = new List<Staff>()
        {
            new Staff(){Id =1,Name ="钟子敏"},
            new Staff(){Id =2,Name ="邢丽霞"},
            new Staff(){Id =3,Name ="李丽"},
            new Staff(){Id =4,Name ="贾凤涛"},
        };

        private async Task OnChange(PaginationEventArgs args)
        {
            if (_pageIndex != args.Page || _pageSize != args.PageSize)
            {
                _pageIndex = args.Page;
                _pageSize = args.PageSize;

                _loading = true;
                _Datas = null;
                var data = await _ItemService.GetItems(_pageIndex, _pageSize);
                //var  data = response.GetAwaiter().GetResult();

                _Datas = data.Results;
                _total = data.TotalCount;
                _loading = false;
            }
        }

    }
}
