예제 #1
0
        /// <summary>
        /// キャンセルされるまでの間イベントを購読する。
        /// </summary>
        public static void SubscribeUntil <T>(this IAsyncEvent <T> e, CancellationToken ct, AsyncHandler <T> handler)
        {
            var d = e.Subscribe(handler);

            ct.Register(d.Dispose);
        }
예제 #2
0
 protected DuplexSessionBase()
 {
     async_method = new AsyncHandler(CloseOutputSession);
     Id           = new UniqueId().ToString();
 }
예제 #3
0
 /// <summary>
 /// イベントを購読する。
 /// </summary>
 public static IDisposable Subscribe <T>(this IAsyncEvent <T> e, AsyncHandler <T> handler)
 {
     e.Add(handler);
     return(Disposable.Create(() => e.Remove(handler)));
 }
예제 #4
0
 /// <summary>
 /// 联系人换部门或换公司
 /// </summary>
 /// <param name="oldDepartmentId">旧部门ID</param>
 /// <param name="newDepartmentId">新部门ID</param>
 public void UserChangeDepartemnt(string oldDepartmentId, string newDepartmentId)
 {
     AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
     {
         if (dicExpanderNode == null || dicExpanderNode.Count <= 0)
         {
             return;
         }
         if (!string.IsNullOrEmpty(oldDepartmentId))
         {
             var departemntExpander =
                 dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && (string)m.Tag == oldDepartmentId);
             //如果部门节点已展开,变更成员列表,否则只变更成员数量
             if (departemntExpander != null)
             {
                 var departemntStackPanel = departemntExpander.Content as StackPanel;
                 var node = dicExpanderNode[departemntExpander];
                 if (node.IsLoaded)
                 {
                     //var tempContactInfo = ContactInfoViewModelList.FirstOrDefault(m => m.User != null && m.User.userId == userId);
                     //if (tempContactInfo != null)
                     //    ContactInfoViewModelList.Remove(tempContactInfo);
                     RecursionLoadSource(departemntStackPanel, oldDepartmentId, node.Level);
                 }
                 var count      = GetContactsCount(oldDepartmentId);
                 var departInfo =
                     AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                         m => m.departmentId == oldDepartmentId);
                 if (departInfo != null)
                 {
                     departemntExpander.Header = departInfo.departName + "(" + count + ")";
                     if (!string.IsNullOrEmpty(departInfo.parentDepartId))
                     {
                         DepartmentMembersCountUpdate(departInfo.parentDepartId);
                     }
                 }
             }
             else
             {
                 var departInfo =
                     AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                         m => m.departmentId == oldDepartmentId);
                 if (departInfo != null)
                 {
                     if (string.IsNullOrEmpty(departInfo.parentDepartId))
                     {
                         //var parentDepartemntExpander =
                         //    dicExpanderNode.Keys.FirstOrDefault(
                         //        m => m.Tag != null && (string)m.Tag == departInfo.parentDepartId);
                         //var parentDepartInfo =
                         //    AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                         //        m => m.departmentId == departInfo.parentDepartId);
                         //if (parentDepartemntExpander != null && parentDepartInfo != null)
                         //{
                         //    var count = GetContactsCount(parentDepartInfo.departmentId);
                         //    parentDepartemntExpander.Header = parentDepartInfo.departName + "(" + count + ")";
                         //}
                         DepartmentMembersCountUpdate(departInfo.parentDepartId);
                     }
                 }
             }
         }
         if (string.IsNullOrEmpty(newDepartmentId))
         {
             return;
         }
         //用户被移到新部门
         var newDepartemntExpander =
             dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && (string)m.Tag == newDepartmentId);
         //如果部门节点已展开,变更成员列表,否则只变更成员数量
         if (newDepartemntExpander != null)
         {
             var departemntStackPanel = newDepartemntExpander.Content as StackPanel;
             var node = dicExpanderNode[newDepartemntExpander];
             if (node.IsLoaded)
             {
                 //var tempContactInfo = ContactInfoViewModelList.FirstOrDefault(m => m.User != null && m.User.userId == userId);
                 //if (tempContactInfo != null)
                 //    ContactInfoViewModelList.Remove(tempContactInfo);
                 RecursionLoadSource(departemntStackPanel, newDepartmentId, node.Level);
             }
             var count      = GetContactsCount(newDepartmentId);
             var departInfo =
                 AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                     m => m.departmentId == newDepartmentId);
             if (departInfo == null)
             {
                 return;
             }
             {
                 newDepartemntExpander.Header = departInfo.departName + "(" + count + ")";
                 if (string.IsNullOrEmpty(departInfo.parentDepartId))
                 {
                     return;
                 }
                 DepartmentMembersCountUpdate(departInfo.parentDepartId);
             }
         }
         else
         {
             var departInfo =
                 AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                     m => m.departmentId == newDepartmentId);
             if (departInfo == null)
             {
                 return;
             }
             if (!string.IsNullOrEmpty(departInfo.parentDepartId))
             {
                 return;
             }
             {
                 DepartmentMembersCountUpdate(departInfo.parentDepartId);
                 //var parentDepartemntExpander = dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && (string)m.Tag == departInfo.parentDepartId);
                 //var parentDepartInfo = AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(m => m.departmentId == departInfo.parentDepartId);
                 //if (parentDepartemntExpander != null && parentDepartInfo != null)
                 //{
                 //    var count = GetContactsCount(parentDepartInfo.departmentId);
                 //    parentDepartemntExpander.Header = parentDepartInfo.departName + "(" + count + ")";
                 //}
             }
         }
     });
 }
예제 #5
0
        /// <summary>
        /// 分页查询投票数据
        /// </summary>
        private void LoadVotesData()
        {
            AsyncHandler.CallFuncWithUI(System.Windows.Application.Current.Dispatcher,
                                        () =>
            {
                var errCode = 0;
                var errMsg  = string.Empty;
                AntSdkGetGroupActivitysInput intput = new AntSdkGetGroupActivitysInput
                {
                    groupId        = _groupId,
                    activityStatus = 0,
                    pageNum        = _page,
                    pageSize       = _size,
                    userId         = AntSdkService.AntSdkCurrentUserInfo.userId
                };
                var activityList = AntSdkService.GetGroupActivitys(intput, ref errCode, ref errMsg);
                return(activityList);
            },
                                        (ex, datas) =>
            {
                ActivityInfoList.Clear();
                if (datas?.list != null && datas.list.Count > 0)
                {
                    foreach (var activityInfo in datas.list)
                    {
                        var tempInfoModel            = new ActivityInfoModel();
                        tempInfoModel.IsHaveActivity = activityInfo.voteFlag;
                        if (activityInfo.userId == AntSdkService.AntSdkCurrentUserInfo.userId)
                        {
                            tempInfoModel.IsbtnDeleteVisibility = true;
                        }
                        tempInfoModel.ActivityId = activityInfo.activityId;

                        tempInfoModel.ActivitySate  = activityInfo.activityStatus == 2;
                        tempInfoModel.ActivityTitle = activityInfo.theme;

                        AntSdkContact_User user = AntSdkService.AntSdkListContactsEntity.users.Find(c => c.userId == activityInfo.userId);
                        if (user != null)
                        {
                            if (!string.IsNullOrEmpty(activityInfo.picture))
                            {
                                BitmapImage image = new BitmapImage();

                                image.BeginInit();

                                image.UriSource = new System.Uri(activityInfo.picture);

                                image.DecodePixelWidth = 800;

                                image.EndInit();

                                image.Freeze();
                                tempInfoModel.ActivityThemePicture = image;
                            }
                            tempInfoModel.ActivityAddress     = activityInfo.address;
                            tempInfoModel.CreatedActivityDate = activityInfo.createTime;
                            if (!string.IsNullOrEmpty(activityInfo.startTime))
                            {
                                tempInfoModel.ActivityDate = Convert.ToDateTime(activityInfo.startTime).ToString("yyyy-MM-dd HH:mm");
                            }
                        }
                        //tempInfoModel.UserHeadUrl=
                        _activityInfoList.Add(tempInfoModel);
                    }
                }
                if (datas != null)
                {
                    _isFirst = datas.isFirstPage;
                    _isLast  = datas.isLastPage;
                }
            });
        }
예제 #6
0
파일: UIElement.cs 프로젝트: fourks/FreeSO
        /// <summary>
        /// Little utility to make it easier to do work outside of the UI thread
        /// </summary>
        public void Async(AsyncHandler handler)
        {
            var t = new Thread(new ThreadStart(handler));

            t.Start();
        }
예제 #7
0
 /// <summary>
 /// Instantiates the AsyncTask class
 /// </summary>
 /// <param name="task">The task function to execute asynchrony. (A function with the signature "T_RETURN_VALUE FunctionName&lt;T_RETURN_VALUE&gt;()")</param>
 /// <param name="finished">The finished callback function. (A function with the signature "void FunctionName&lt;T_RETURN_VALUE&gt;(T_RETURN_VALUE result, Exception ex)")</param>
 /// <param name="progressChanged">The progress change callback function. (A function with the signature "void FunctionName(int percentage)")</param>
 /// <param name="supportCancellation">Flag to determine if cancellation is needed.</param>
 public AsyncTask(AsyncHandler <T_RETURN_VALUE> task, AsyncResultHandler <T_RETURN_VALUE> finished, AsyncProgressChangedHandler progressChanged = null, bool supportCancellation = false)
 {
     SetCallbackFunctions(task, finished, progressChanged, supportCancellation);
 }
예제 #8
0
		protected DuplexSessionBase ()
		{
			async_method = new AsyncHandler (CloseOutputSession);
			Id = new UniqueId ().ToString ();
		}
예제 #9
0
        public ActivityDetailsViewModel(int activityId, string groupId)
        {
            _activityId = activityId;
            _groupId    = groupId;
            var      errCode        = 0;
            var      errMsg         = string.Empty;
            DateTime serverDateTime = DateTime.Now;

            AsyncHandler.CallFuncWithUI(System.Windows.Application.Current.Dispatcher,
                                        () =>
            {
                AntSdkGetGroupActivityDetailsInput input = new AntSdkGetGroupActivityDetailsInput
                {
                    userId     = AntSdkService.AntSdkCurrentUserInfo.userId,
                    activityId = activityId,
                    groupId    = groupId
                };
                AntSdkQuerySystemDateOuput serverResult = AntSdkService.AntSdkGetCurrentSysTime(ref errCode,
                                                                                                ref errMsg);

                if (serverResult != null)
                {
                    serverDateTime = PublicTalkMothed.ConvertStringToDateTime(serverResult.systemCurrentTime);
                }
                var output = AntSdkService.GetActivityInfo(input, ref errCode, ref errMsg);
                return(output);
            },
                                        (ex, datas) =>
            {
                if (datas != null)
                {
                    ActivityTitle = datas.theme;
                    if (!string.IsNullOrEmpty(datas.picture))
                    {
                        try
                        {
                            BitmapImage image = new BitmapImage();

                            image.BeginInit();

                            image.UriSource = new System.Uri(datas.picture);

                            image.DecodePixelWidth = 800;

                            image.EndInit();

                            ActivityThemePic = image;
                        }
                        catch (Exception e)
                        {
                            LogHelper.WriteError("[ActivityDetailsViewModel_ImageOnLoad]:" + e.Message + e.StackTrace + e.Source);
                        }
                    }
                    ActivityAddress   = datas.address;
                    ActivityIntroduce = datas.description;
                    latitude          = datas.latitude;
                    longitude         = datas.longitude;
                    Console.Out.WriteLine("");
                    var startTime = DateTime.Now;
                    var endTime   = DateTime.Now.AddMinutes(30);
                    if (!string.IsNullOrEmpty(datas.startTime) && !string.IsNullOrEmpty(datas.endTime))
                    {
                        startTime         = Convert.ToDateTime(datas.startTime);
                        endTime           = Convert.ToDateTime(datas.endTime);
                        TimeSpan timeSpan = endTime - startTime;
                        if (endTime.Year - startTime.Year == 0 && endTime.Day - startTime.Day == 0)
                        {
                            ActivityDateTime = startTime.ToString("yyyy-MM-dd HH:mm") + "-" +
                                               endTime.ToString("HH:mm");
                        }
                        else
                        {
                            ActivityDateTime = startTime.ToString("yyyy-MM-dd HH:mm") + "   " +
                                               endTime.ToString("yyyy-MM-dd HH:mm");
                        }
                    }
                    else
                    {
                        ActivityDateTime = startTime.ToString("yyyy-MM-dd HH:mm") + "-" +
                                           endTime.ToString("HH:mm");
                    }
                    ParticipatorsCount = datas.voteCount ?? 0;
                    if (datas.activityStatus == 1)
                    {
                        if (!datas.voteFlag)
                        {
                            if (DateTime.Compare(startTime, serverDateTime) <= 0)
                            {
                                ActivityStateContent   = "已开始";
                                IsParticipatedActivity = false;
                            }
                            else
                            {
                                ActivityStateContent   = "报名参加";
                                IsParticipatedActivity = true;
                            }
                        }
                        else
                        {
                            ActivityStateContent   = "已报名";
                            IsParticipatedActivity = false;
                        }
                    }
                    else
                    {
                        ActivityStateContent   = "已结束";
                        IsParticipatedActivity = false;
                    }
                    LoadActivityParticipators();
                }
            });
        }
 /// <summary>
 /// 查询(暂时支持汉字和首字母查询)
 /// </summary>
 /// <param name="condition"></param>
 public void ResetQueryCondition(string condition)
 {
     AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
     {
         if (string.IsNullOrWhiteSpace(condition))
         {
             return;
         }
         if (QueryContactList == null)
         {
             QueryContactList = new ObservableCollection <ContactInfoViewModel>();
         }
         QueryContactList.Clear();
         try
         {
             if (AntSdkService.AntSdkListContactsEntity.users != null)
             {
                 //var userList =
                 //    AntSdkService.AntSdkListContactsEntity.contacts.users.Where(
                 //        m => IsconditionsSatisfy(m.userName, m.userNum));
                 //foreach (AntSdkContact_User user in userList)
                 //{
                 //    ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(user, Container, condition);
                 //    contactInfoViewModel.MouseEnter = new DefaultCommand(mouseEnter);
                 //    contactInfoViewModel.MouseLeave = new DefaultCommand(mouseEnter);
                 //    contactInfoViewModel.PlaceholderWidth = 20;
                 //    QueryContactList.Add(contactInfoViewModel);
                 //}
                 var tempUsers = AntSdkService.AntSdkListContactsEntity.users.Where(m => m.status == 2);
                 var i         = 0;
                 foreach (var user in tempUsers)
                 {
                     string pinYin = string.Empty;
                     if (IsconditionsSatisfy(user.userName, user.userNum, ref pinYin))
                     {
                         i++;
                         ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(user, Container,
                                                                                              condition, pinYin);
                         contactInfoViewModel.MouseEnter       = new DefaultCommand(mouseEnter);
                         contactInfoViewModel.MouseLeave       = new DefaultCommand(mouseEnter);
                         contactInfoViewModel.PlaceholderWidth = 20;
                         QueryContactList.Add(contactInfoViewModel);
                         if (i > 80)
                         {
                             break;
                         }
                     }
                 }
             }
             if (_groupListViewModel != null)
             {
                 //var groupList =
                 //    _groupListViewModel.GroupInfoList.Where(c => IsconditionsSatisfy(c.GroupInfo.groupName, string.Empty));
                 //foreach (GroupInfoViewModel group in groupList)
                 //{
                 //    ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(group, Container, condition)
                 //    {
                 //        MouseEnter = new DefaultCommand(mouseEnter),
                 //        MouseLeave = new DefaultCommand(mouseEnter)
                 //    };
                 //    QueryContactList.Add(contactInfoViewModel);
                 //}
                 foreach (var group in _groupListViewModel.GroupInfoList)
                 {
                     string pinYin = string.Empty;
                     if (IsconditionsSatisfy(group.GroupName, string.Empty, ref pinYin))
                     {
                         ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(group, Container,
                                                                                              condition, pinYin)
                         {
                             MouseEnter = new DefaultCommand(mouseEnter),
                             MouseLeave = new DefaultCommand(mouseEnter)
                         };
                         QueryContactList.Add(contactInfoViewModel);
                     }
                 }
             }
             //RaisePropertyChanged(() => QueryContactList);
         }
         catch (Exception e)
         {
             return;
         }
         if (QueryContactList.Count == 0)
         {
             BackImage = Visibility.Visible;
         }
         else
         {
             SelectContactItem = QueryContactList[0];
             BackImage         = Visibility.Collapsed;
         }
     }, DispatcherPriority.Background);
 }
예제 #11
0
        /// <summary>
        /// 加载历史登录用户
        /// </summary>
        public void LoadHistoryUsers()
        {
            AsyncHandler.CallFuncWithUI(System.Windows.Application.Current.Dispatcher, () =>
            {
                var task = SDKClient.SDKClient.Instance.GetAccountListDESC();
                // var task = await SDKClient.SDKClient.Instance.GetAccountListDESC();
                //var task = await SDKClient.SDKClient.Instance.GetAccountListDESC();
                if (task == null || task.Result.Count == 0)
                {
                    //this.SetStackPanelVisibility?.Invoke();

                    return(null);
                }
                return(task.Result);
            },
                                        (ex, data) =>
            {
                if (data == null || data.Count == 0)
                {
                    IsQuickLogin = false;
                    ChangeLoginAccount(null);
                    return;
                }
                var tempData = data.Where(m => !string.IsNullOrEmpty(m.token)).OrderByDescending(m => m.lastlastLoginTime).ToList();
                if (tempData.Count > 0)
                {
                    historyAccountDB = tempData[0];
                    if (historyAccountDB.FirstLoginTime != null && DateTime.Now.Day - historyAccountDB.FirstLoginTime.Value.Day <= 7)
                    {
                        IsQuickLogin = true;
                    }
                    else
                    {
                        IsQuickLogin = false;
                        ChangeLoginAccount(null);
                        return;
                    }
                }
                else
                {
                    IsQuickLogin = false;
                    ChangeLoginAccount(null);
                    return;
                }
                IsQuickLogin = true;

                //foreach (var item in data)
                //{
                UserModel user   = new UserModel();
                user.PhoneNumber = historyAccountDB.loginId;
                user.HeadImg     = IMClient.Helper.ImageHelper.GetAccountFace(historyAccountDB.headPic, (s) => App.Current.Dispatcher.Invoke(() => user.HeadImg = s));
                user.HeadImgMD5  = historyAccountDB.headPic;
                user.DisplayName = historyAccountDB.userName;
                LoginUser login  = new LoginUser(user);

                if (historyAccountDB.loginModel != SDKClient.Model.LoginMode.None)
                {
                    if (historyAccountDB.lastlastLoginTime.HasValue)
                    {
                        var interval = DateTime.Now - historyAccountDB.lastlastLoginTime.Value;

                        if (interval.TotalDays < 30)
                        {
                            login.IsSavePassword = !string.IsNullOrEmpty(historyAccountDB.password) && !string.IsNullOrEmpty(historyAccountDB.loginId);
                            login.Password       = historyAccountDB.password;
                        }
                        else
                        {
                            login.IsSavePassword = false;
                            login.Password       = string.Empty;
                            App.Current.Dispatcher.BeginInvoke(new Action(() =>
                            {
                                this.HistoryUsers.Remove(login);
                            }));
                        }
                    }
                    else
                    {
                    }
                }
                App.Current.Dispatcher.BeginInvoke(new Action(() =>
                {
                    this.HistoryUsers.Add(login);
                    if (this.SelectedLogin == null)
                    {
                        this.SetStackPanelVisibility?.Invoke();
                        this.SelectedLogin = this.HistoryUsers.FirstOrDefault();
                    }
                }));
                //}
            });
        }
예제 #12
0
        private static void OnIsOfflineChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
            {
                var currentImage = d as ImageBrush;
                //Image currentImage=d as Image;
                if (currentImage == null)
                {
                    return;
                }
                var value   = d.GetValue(IsOfflineProperty);
                var isGray8 = value != null && (bool)value;
                if (isGray8)
                {
                    var bitmapSource = currentImage.ImageSource as BitmapSource;
                    if (bitmapSource == null)
                    {
                        return;
                    }
                    var url = currentImage.ImageSource.ToString();
                    if (url == GlobalVariable.DefaultImage.UserHeadDefaultImage)
                    {
                        var tempBitampSource     = bitmapSource.ToGrayBitmap();
                        currentImage.ImageSource = tempBitampSource;
                    }
                    else
                    {
                        try
                        {
                            if (bitmapSource.IsDownloading)
                            {
                                bitmapSource.DownloadCompleted += (sender, args) =>
                                {
                                    var backupBitmapSource = bitmapSource.CloneCurrentValue();
                                    currentImage.SetValue(BitmapSourceBackupProperty, backupBitmapSource);
                                    currentImage.ImageSource = bitmapSource.ToGrayBitmap();
                                };
                            }
                            else
                            {
                                var backupBitmapSource = bitmapSource.CloneCurrentValue();
                                currentImage.SetValue(BitmapSourceBackupProperty, backupBitmapSource);
                                var tempBitampSource     = bitmapSource.ToGrayBitmap();
                                currentImage.ImageSource = tempBitampSource;
                            }
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                    //// 建立Gray32Float的BitmapSource
                    //FormatConvertedBitmap newFormatedBitmapSource = new FormatConvertedBitmap();
                    //newFormatedBitmapSource.BeginInit();
                    //newFormatedBitmapSource.Source = currentImage.ImageSource as BitmapSource;
                    //newFormatedBitmapSource.DestinationFormat = PixelFormats.Gray32Float;
                    ////List<Color> colors = new List<Color>();
                    ////colors.Add(Colors.White);
                    ////colors.Add(Colors.DarkGoldenrod);
                    ////BitmapPalette palette = new BitmapPalette(colors);
                    ////newFormatedBitmapSource.DestinationPalette = palette;
                    //newFormatedBitmapSource.EndInit();
                    // 替换ImageSource
                }
                else
                {
                    // 图像恢复操作
                    object obj = currentImage.GetValue(BitmapSourceBackupProperty);

                    BitmapSource bs = obj as BitmapSource;
                    if (bs == null)
                    {
                        return;
                    }
                    currentImage.ImageSource = bs;
                }
            }, DispatcherPriority.Background);
        }
예제 #13
0
        /// <summary>
        /// 展开子节点
        /// </summary>
        /// <param name="stackPanel">父面板</param>
        /// <param name="parentDepartId">父部门ID</param>
        /// <param name="level">在第几层</param>
        private void RecursionLoadSource(StackPanel stackPanel, string parentDepartId, int level)
        {
            if (AntSdkService.AntSdkListContactsEntity == null)
            {
                return;
            }
            AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
            {
                if (AntSdkService.AntSdkListContactsEntity.departs != null)
                {
                    List <AntSdkContact_Depart> departList =
                        AntSdkService.AntSdkListContactsEntity.departs.Where(c => c.parentDepartId == parentDepartId)
                        .ToList();
                    if (AntSdkService.AntSdkListContactsEntity.users != null)
                    {
                        if (stackPanel == null)
                        {
                            stackPanel = new StackPanel();
                        }
                        List <AntSdkContact_User> userList =
                            AntSdkService.AntSdkListContactsEntity.users.Where(c => c.departmentId == parentDepartId && c.status == 2)
                            .OrderBy(c => c.userId)
                            .ToList();
                        if (userList.Count > 0)
                        {
                            stackPanel?.Children.Clear();
                            foreach (AntSdkContact_User user in userList)
                            {
                                ContactInfoView contactInfo = new ContactInfoView(user, this.Container);
                                ContactInfoViewModel contactInfoViewModel =
                                    contactInfo.DataContext as ContactInfoViewModel;
                                var tempContactInfo = ContactInfoViewModelList.FirstOrDefault(m => m.User.userId == user.userId);
                                //if (tempContactInfo?.User != null && tempContactInfo.User.departmentId == user.departmentId) continue;
                                if (tempContactInfo?.User != null && tempContactInfo.User.departmentId != user.departmentId)
                                {
                                    tempContactInfo.User = user;
                                }
                                stackPanel.Children.Add(contactInfo);
                                if (Container == GlobalVariable.ContactInfoViewContainer.ContactListView)
                                {
                                    contactInfo.MouseDown += ModifyColorOnMouseClick;
                                }
                                else if (Container == GlobalVariable.ContactInfoViewContainer.GroupEditWindowViewLeft)
                                {
                                    GroupEditWindowViewModel groupEditVM = Owner as GroupEditWindowViewModel;
                                    if (groupEditVM?.GroupMemberList != null && groupEditVM.GroupMemberList.Select(c => c.User.userId).Contains(user.userId))
                                    {
                                        if (groupEditVM.OriginalMemberIds != null &&
                                            groupEditVM.OriginalMemberIds.Contains(user.userId))
                                        {
                                            contactInfoViewModel?.SetExistGroupMember();
                                        }
                                        else
                                        {
                                            contactInfoViewModel?.OnStateImageClickEventEvent(contactInfoViewModel, true);
                                        }
                                    }
                                }
                                else if (Container == GlobalVariable.ContactInfoViewContainer.MultiContactsSelectLeft)
                                {
                                    MultiContactsSelectViewModel vm = Owner as MultiContactsSelectViewModel;
                                    if (vm != null && vm.GroupMemberList != null &&
                                        vm.GroupMemberList.Select(c => c.User.userId).Contains(user.userId))
                                    {
                                        //if (vm.OriginalMemberIds != null && vm.OriginalMemberIds.Contains(user.userId))
                                        //{
                                        //    contactInfoViewModel.SetExistGroupMember();
                                        //}
                                        //else
                                        //{
                                        contactInfoViewModel?.OnStateImageClickEventEvent(contactInfoViewModel, true);
                                        //}
                                    }
                                }

                                if (contactInfoViewModel != null)
                                {
                                    contactInfoViewModel.PlaceholderWidth = 30;
                                    ContactInfoViewModelList.Add(contactInfoViewModel);
                                }
                            }
                        }
                        else if (stackPanel?.Children.Count > 0)
                        {
                            stackPanel?.Children.Clear();
                        }
                    }

                    if (departList.Count <= 0)
                    {
                        return;
                    }
                    foreach (AntSdkContact_Depart depart in departList)
                    {
                        AdddepartData(depart, stackPanel, level);
                    }
                }
            });
        }
예제 #14
0
 /// <summary>
 /// 部门改变
 /// </summary>
 /// <param name="departs">部门</param>
 public void DepartmentUpdate(AntSdkAddListContactsOutput_Departs departs)
 {
     AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
     {
         if (departs.add?.Count > 0)
         {
             //如果有一级部门,先添加一级部门
             var firstLevelDeparts = departs.add.Where(m => m.parentDepartId == "0");
             foreach (var firstLevelDepart in firstLevelDeparts)
             {
                 if (dicExpanderNode == null || dicExpanderNode.Count <= 0)
                 {
                     AddFirstLevelDepartSource(firstLevelDepart);
                 }
                 else
                 {
                     var departemntExpander =
                         dicExpanderNode.Keys.FirstOrDefault(
                             m => m.Tag != null && m.Tag.ToString() == firstLevelDepart.departmentId);
                     if (departemntExpander == null)
                     {
                         AddFirstLevelDepartSource(firstLevelDepart);
                     }
                 }
             }
             //添加二级部
             var tempDeparts = departs.add.Where(m => m.parentDepartId != "0");
             foreach (var depart in tempDeparts)
             {
                 if (dicExpanderNode == null || dicExpanderNode.Count <= 0)
                 {
                     return;
                 }
                 if (dicExpanderNode.Keys.Count == 0)
                 {
                     return;
                 }
                 var departemntExpander =
                     dicExpanderNode.Keys.FirstOrDefault(
                         m => m.Tag != null && m.Tag.ToString() == depart.parentDepartId);
                 if (departemntExpander == null)
                 {
                     return;
                 }
                 var departemntStackPanel = departemntExpander.Content as StackPanel;
                 var node = dicExpanderNode[departemntExpander];
                 if (node.IsLoaded)
                 {
                     var tempDepartemntExpander =
                         dicExpanderNode.Keys.FirstOrDefault(
                             m => m.Tag != null && m.Tag.ToString() == depart.departmentId);
                     if (tempDepartemntExpander == null)
                     {
                         AdddepartData(depart, departemntStackPanel, node.Level);
                     }
                 }
             }
         }
         if (departs.delete?.Count > 0)
         {
             if (dicExpanderNode != null && dicExpanderNode.Count > 0)
             {
                 var tempDeparts = departs.delete;
                 foreach (var depart in tempDeparts)
                 {
                     var departemntExpander =
                         dicExpanderNode.Keys.FirstOrDefault(
                             m => m.Tag != null && m.Tag.ToString() == depart.departmentId);
                     if (departemntExpander == null)
                     {
                         continue;
                     }
                     var departemntStackPanel = departemntExpander.Content as StackPanel;
                     var node = dicExpanderNode[departemntExpander];
                     if (string.IsNullOrEmpty(node.ParentDepartId))
                     {
                         MainStackPanel.Children.Remove(departemntExpander);
                         dicExpanderNode.Remove(departemntExpander);
                     }
                     else
                     {
                         var parentDepartemntExpander =
                             dicExpanderNode.Keys.FirstOrDefault(
                                 m => m.Tag != null && m.Tag.ToString() == node.ParentDepartId);
                         var parentDepartemntStackPanel = parentDepartemntExpander?.Content as StackPanel;
                         if (parentDepartemntStackPanel == null)
                         {
                             continue;
                         }
                         parentDepartemntStackPanel.Children.Remove(departemntExpander);
                         dicExpanderNode.Remove(departemntExpander);
                     }
                 }
                 //var tempFirstLevelDeparts = departs.delete.Where(m => m.departmentId == "0");
                 //foreach (var depart in tempFirstLevelDeparts)
                 //{
                 //    var departemntExpander =
                 //        dicExpanderNode.Keys.FirstOrDefault(
                 //            m => m.Tag != null && m.Tag.ToString() == depart.departmentId);
                 //    if (departemntExpander == null) continue;
                 //    var departemntStackPanel = departemntExpander.Content as StackPanel;
                 //    var node = dicExpanderNode[departemntExpander];
                 //    if (node.IsLoaded)
                 //    {
                 //        departemntStackPanel?.Children.Clear();
                 //    }
                 //}
             }
         }
         if (!(departs.update?.Count > 0))
         {
             return;
         }
         {
             foreach (var depart in departs.update)
             {
                 var newDepartemntExpander =
                     dicExpanderNode?.Keys.FirstOrDefault(
                         m => m.Tag != null && (string)m.Tag == depart.departmentId);
                 if (newDepartemntExpander != null)
                 {
                     //var node = dicExpanderNode[newDepartemntExpander];
                     var departInfo =
                         AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                             m => m.departmentId == depart.departmentId);
                     var count = GetContactsCount(depart.departmentId);
                     if (departInfo != null)
                     {
                         newDepartemntExpander.Header = departInfo.departName + "(" + count + ")";
                     }
                 }
             }
         }
     });
 }
예제 #15
0
 /// <summary>
 /// Little utility to make it easier to do work outside of the UI thread
 /// </summary>
 public void Async(AsyncHandler handler)
 {
     var t = new Thread(new ThreadStart(handler));
     t.Start();
 }
예제 #16
0
 /// <summary>
 /// 加载活动参与者
 /// </summary>
 private void LoadActivityParticipators()
 {
     AsyncHandler.CallFuncWithUI(System.Windows.Application.Current.Dispatcher,
                                 () =>
     {
         var errCode = 0;
         var errMsg  = string.Empty;
         AntSdkGetGroupActivityParticipatorInput participatorInput =
             new AntSdkGetGroupActivityParticipatorInput
         {
             groupId    = _groupId,
             activityId = _activityId,
             pageNum    = pageNum,
             pageSize   = pageSize
         };
         try
         {
             return(AntSdkService.GetGroupActivityParticipators(participatorInput, ref errCode,
                                                                ref errMsg));
         }
         catch (Exception ex)
         {
             LogHelper.WriteError("活动参与者接口异常:" + ex.Message + ex.Source +
                                  ex.StackTrace);
             return(null);
         }
     },
                                 (ex, datas) =>
     {
         if (datas == null)
         {
             return;
         }
         if (datas.list.Count > 0)
         {
             ActivityParticipators.Clear();
             foreach (var participatorInfo in datas.list)
             {
                 AntSdkContact_User contactUser =
                     AntSdkService.AntSdkListContactsEntity.users.Find(
                         c => c.userId == participatorInfo.userId);
                 var activityParticipatorInfo = new ActivityParticipator();
                 if (contactUser != null)
                 {
                     activityParticipatorInfo.ParticipatorId   = contactUser.userId;
                     activityParticipatorInfo.ParticipatorName = contactUser.userNum + contactUser.userName;
                     if (!string.IsNullOrWhiteSpace(contactUser.picture) &&
                         publicMethod.IsUrlRegex(contactUser.picture))
                     {
                         var userImage = GlobalVariable.ContactHeadImage.UserHeadImages.FirstOrDefault(
                             m => m.UserID == contactUser.userId);
                         activityParticipatorInfo.ParticipatorHeadPic = string.IsNullOrEmpty(userImage?.Url)
                                 ? contactUser.picture
                                 : userImage.Url;
                     }
                     else
                     {
                         activityParticipatorInfo.ParticipatorHeadPic =
                             GlobalVariable.DefaultImage.UserHeadDefaultImage;
                     }
                 }
                 else
                 {
                     activityParticipatorInfo.ParticipatorId      = participatorInfo.userId;
                     activityParticipatorInfo.ParticipatorHeadPic =
                         !string.IsNullOrEmpty(participatorInfo.picture)
                                 ? participatorInfo.picture
                                 : GlobalVariable.DefaultImage.UserHeadDefaultImage;
                     activityParticipatorInfo.ParticipatorName = participatorInfo.userNum +
                                                                 participatorInfo.userName;
                 }
                 ActivityParticipators.Add(activityParticipatorInfo);
             }
             ParticipatorsCount = ActivityParticipators.Count;
         }
     });
 }
예제 #17
0
        private void SetImage(string imgPath, bool isImgExceed = false)
        {
            bool            isCreate;
            ImageScanWindow scan = CreateOrActiveWindow(out isCreate);

            scan.Show();
            //Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, new Action(() =>
            //{
            if (_currentPath != imgPath)
            {
                this.img.Dispose();
                AsyncHandler.CallFuncWithUI(System.Windows.Application.Current.Dispatcher, () =>
                {
                    try
                    {
                        scan.Dispatcher.Invoke(new Action(() =>
                        {
                            scan.loading.Visibility = Visibility.Visible;
                        }));
                        //this.img.Visibility = Visibility.Collapsed;
                        //this.tbInfo.Text = "图片加载中...";
                        //BitmapImage img = new BitmapImage(new Uri(imgPath, UriKind.RelativeOrAbsolute));

                        if (isImgExceed)
                        {
                            App.Current.Dispatcher.Invoke(() =>
                            {
                                this.img.Visibility     = Visibility.Visible;
                                scan.loading.Visibility = Visibility.Collapsed;
                                BitmapImage img         = new BitmapImage();
                                img.BeginInit();
                                img.CacheOption = BitmapCacheOption.OnLoad;
                                img.UriSource   = new Uri(IMAssets.ImageDeal.ImgLoadFail);
                                img.EndInit();
                                img.Freeze();
                                this.tbInfo.Text = "图片已过期!";
                                this.img.Source  = img;
                                //SetProperty(imgPath, scan, img, false);
                                SetState(true);
                            });
                            return(null);
                        }
                        else
                        {
                            var bitmap = new BitmapImage();
                            bitmap.BeginInit();

                            bitmap.CacheOption  = BitmapCacheOption.OnLoad;
                            bitmap.StreamSource = new MemoryStream(File.ReadAllBytes(imgPath));
                            //bitmap.StreamSource = new MemoryStream(ImageHelper.ImageToBytes(path));
                            bitmap.EndInit();
                            bitmap.Freeze();
                            return(bitmap);
                        }
                    }
                    catch
                    {
                        try
                        {
                            BitmapImage img = new BitmapImage();
                            img.BeginInit();
                            img.CacheOption = BitmapCacheOption.OnLoad;
                            if (imgPath == IMAssets.ImageDeal.DefaultHeadImage)
                            {
                                img.UriSource = new Uri(imgPath);
                            }
                            else
                            {
                                img.StreamSource = new MemoryStream(ImageHelper.ImageToBytes(imgPath));
                            }
                            img.EndInit();
                            img.Freeze();
                            return(img);
                        }
                        catch
                        {
                            App.Current.Dispatcher.Invoke(() =>
                            {
                                this.img.Visibility     = Visibility.Collapsed;
                                scan.loading.Visibility = Visibility.Collapsed;
                                IMClient.Helper.MessageHelper.LoadImgContent(_target);
                                _currentPath     = imgPath;
                                this.Title       = this.tbName.Text = System.IO.Path.GetFileName(imgPath);
                                this.tbInfo.Text = "加载失败!";
                                SetState(true);
                            });
                            return(null);
                        }
                    }
                },
                                            (ex, data) =>
                {
                    if (data == null)
                    {
                        return;
                    }
                    scan.Dispatcher.Invoke(new Action(() =>
                    {
                        loading.Visibility = Visibility.Collapsed;
                    }));
                    SetProperty(imgPath, scan, data, false);
                    _currentPath = imgPath;
                    this.Title   = this.tbName.Text = System.IO.Path.GetFileName(imgPath);
                    //Task.Delay(30).ContinueWith(task =>
                    //{
                    //    scan.Dispatcher.Invoke(new Action(() =>
                    //    {
                    if (scan.WindowState == WindowState.Minimized)
                    {
                        scan.WindowState = WindowState.Normal;
                    }
                    SetState(true);
                    scan.Activate();
                    //}));
                    //});
                    //}));
                });
            }
            else
            {
                SetState(true);
            }
        }
예제 #18
0
        /// <summary>
        /// 分页查询投票数据
        /// </summary>
        private void LoadVotesData()
        {
            DateTime serverDateTime = DateTime.Now;

            AsyncHandler.CallFuncWithUI(System.Windows.Application.Current.Dispatcher,
                                        () =>
            {
                var errCode = 0;
                var errMsg  = string.Empty;
                AntSdkQuerySystemDateOuput serverResult = AntSdkService.AntSdkGetCurrentSysTime(ref errCode, ref errMsg);
                if (serverResult != null)
                {
                    serverDateTime = PublicTalkMothed.ConvertStringToDateTime(serverResult.systemCurrentTime);
                }
                var voteList = AntSdkService.GetGroupVotes(_groupId, ref errCode, ref errMsg, _page, _size,
                                                           AntSdkService.AntSdkCurrentUserInfo.userId);
                return(voteList);
            },
                                        (ex, datas) =>
            {
                VoteInfoList.Clear();
                if (datas?.content != null && datas.content.Count > 0)
                {
                    foreach (var voteInfo in datas.content)
                    {
                        var tempInfoModel         = new VoteInfoModel();
                        tempInfoModel.IsHaveVoted = voteInfo.voted;
                        if (voteInfo.createdBy == AntSdkService.AntSdkCurrentUserInfo.userId)
                        {
                            tempInfoModel.IsbtnDeleteVisibility = true;
                        }
                        tempInfoModel.VoteId   = voteInfo.id;
                        tempInfoModel.VoteSate =
                            DateTime.Compare(Convert.ToDateTime(voteInfo.expiryTime), serverDateTime) < 0;
                        tempInfoModel.VoteTitle = voteInfo.title + (voteInfo.secret ? "(匿名)" : "");
                        tempInfoModel.UserID    = voteInfo.createdBy;
                        AntSdkContact_User user = AntSdkService.AntSdkListContactsEntity.users.Find(c => c.userId == voteInfo.createdBy);
                        if (user != null)
                        {
                            tempInfoModel.Explain = user.userNum + user.userName + "  编辑于  " +
                                                    DataConverter.FormatTimeByCreateTime(voteInfo.createdDate);
                            if (!string.IsNullOrWhiteSpace(user.picture) && publicMethod.IsUrlRegex(user.picture))
                            {
                                var userImage =
                                    GlobalVariable.ContactHeadImage.UserHeadImages.FirstOrDefault(
                                        m => m.UserID == user.userId);
                                tempInfoModel.UserHeadUrl = string.IsNullOrEmpty(userImage?.Url) ? user.picture : userImage.Url;
                            }
                            else
                            {
                                tempInfoModel.UserHeadUrl = GlobalVariable.DefaultImage.UserHeadDefaultImage;
                            }
                        }
                        //tempInfoModel.UserHeadUrl=
                        _voteInfoList.Add(tempInfoModel);
                    }
                }
                if (datas != null)
                {
                    _isFirst = datas.first;
                    _isLast  = datas.last;
                }
            });
        }
예제 #19
0
    /// <summary>
    /// This function calls the passed task function asynchronously.
    /// </summary>
    /// <param name="task">The task function to execute asynchrony. (A function with the signature "T_RETURN_VALUE FunctionName&lt;T_RETURN_VALUE&gt;()")</param>
    /// <param name="finished">The finished callback function. (A function with the signature "void FunctionName&lt;T_RETURN_VALUE&gt;(T_RETURN_VALUE result, Exception ex)")</param>
    /// <param name="progressChanged">The progress change callback function. (A function with the signature "void FunctionName(int percentage)")</param>
    public static void DoWork(AsyncHandler <T_RETURN_VALUE> task, AsyncResultHandler <T_RETURN_VALUE> finished = null, AsyncProgressChangedHandler progressChanged = null)
    {
        AsyncTask <T_RETURN_VALUE> asyncTask = new AsyncTask <T_RETURN_VALUE>(task, finished, progressChanged);

        asyncTask.Run();
    }
예제 #20
0
        public ActivityListViewModel(bool isAdminId, string groupId)
        {
            _isAdminId = isAdminId;
            if (!_isAdminId)
            {
                IsShowBtnAddActivity = false;
            }
            _groupId          = groupId;
            _activityInfoList = new ObservableCollection <ActivityInfoModel>();
            var errCode = 0;
            var errMsg  = string.Empty;

            AsyncHandler.CallFuncWithUI(System.Windows.Application.Current.Dispatcher,
                                        () =>
            {
                AntSdkGetGroupActivitysInput intput = new AntSdkGetGroupActivitysInput
                {
                    groupId        = _groupId,
                    activityStatus = 0,
                    pageNum        = _page,
                    pageSize       = _size,
                    userId         = AntSdkService.AntSdkCurrentUserInfo.userId
                };
                var activityList = AntSdkService.GetGroupActivitys(intput, ref errCode, ref errMsg);
                return(activityList);
            },
                                        (ex, datas) =>
            {
                if (datas?.list != null && datas.list.Count > 0)
                {
                    foreach (var activityInfo in datas.list)
                    {
                        var tempInfoModel            = new ActivityInfoModel();
                        tempInfoModel.IsHaveActivity = activityInfo.voteFlag;
                        if (activityInfo.userId == AntSdkService.AntSdkCurrentUserInfo.userId)
                        {
                            tempInfoModel.IsbtnDeleteVisibility = true;
                        }
                        tempInfoModel.ActivityId = activityInfo.activityId;

                        tempInfoModel.ActivitySate  = activityInfo.activityStatus == 2;
                        tempInfoModel.ActivityTitle = activityInfo.theme;

                        //AntSdkContact_User user = AntSdkService.AntSdkListContactsEntity.users.Find(c => c.userId == activityInfo.userId);
                        if (!string.IsNullOrEmpty(activityInfo.picture))
                        {
                            var index         = activityInfo.picture.LastIndexOf("/", StringComparison.Ordinal) + 1;
                            var fileNameIndex = activityInfo.picture.LastIndexOf(".", StringComparison.Ordinal);
                            var fileName      = activityInfo.picture.Substring(index, fileNameIndex - index);
                            string strUrl     = activityInfo.picture.Replace(fileName, fileName + "_80x80");
                            try
                            {
                                BitmapImage image = new BitmapImage();

                                image.BeginInit();

                                image.UriSource = new System.Uri(strUrl);

                                image.DecodePixelWidth = 800;

                                image.EndInit();

                                //image.Freeze();
                                tempInfoModel.ActivityThemePicture = image;
                            }
                            catch (Exception e)
                            {
                                LogHelper.WriteError("[ActivityListViewModel_ImageOnLoad]:" + e.Message + e.StackTrace + e.Source);
                            }
                        }

                        tempInfoModel.ActivityAddress     = activityInfo.address;
                        tempInfoModel.CreatedActivityDate = activityInfo.createTime;
                        if (!string.IsNullOrEmpty(activityInfo.startTime))
                        {
                            tempInfoModel.ActivityDate =
                                Convert.ToDateTime(activityInfo.startTime).ToString("yyyy-MM-dd HH:mm");
                        }
                        _activityInfoList.Add(tempInfoModel);
                    }
                    _isFirst = datas.isFirstPage;
                    _isLast  = datas.isLastPage;
                    IsPaging = !_isLast;
                }
                else
                {
                    IsActivityData = true;
                    IsPaging       = false;
                }
            });
        }
예제 #21
0
 /// <summary>
 /// Begins processing the image request.
 /// </summary>
 /// <param name="context">Current HTTP request context</param>
 /// <param name="cb">Delegate called when processing is completed</param>
 /// <param name="extraData">Application defined state</param>
 /// <returns><see cref="T:System.IAsyncResult"/> used for tracking progress</returns>
 IAsyncResult IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
 {
     AsyncHandler handler = new AsyncHandler(context, cb, extraData);
     handler.StartAsyncWork();
     return handler;
 }
예제 #22
0
        /// <summary>
        /// 获取服务器考勤记录
        /// </summary>
        public void GetServicePunchClocksData(bool isNewRecord = false)
        {
            if (isNewRecord)
            {
                _isLast = false;
            }
            if (_isLast)
            {
                return;
            }
            AsyncHandler.CallFuncWithUI(System.Windows.Application.Current.Dispatcher,
                                        () =>
            {
                if (isNewRecord)
                {
                    timer?.Stop();
                    timer = null;
                    _page = 0;
                    todayAttendanceRecords = null;
                }
                _page++;
                var errorCode         = 0;
                var errorMsg          = string.Empty;
                var punchClocksOutput = AntSdkService.GetPunchClocks(AntSdkService.AntSdkLoginOutput.userId, _page, _size, ref errorCode, ref errorMsg);
                return(punchClocksOutput);
            },
                                        (ex, datas) =>
            {
                if (isNewRecord)
                {
                    AttendanceRecords.Clear();
                }
                if (datas != null && datas.list.Count > 0)
                {
                    var serverDateTime        = PublicTalkMothed.ConvertStringToDateTime(datas.systemTime);
                    var punchClocksOutputList = datas.list.OrderByDescending(m => m.attendId);
                    foreach (var punchClocks in datas.list)
                    {
                        var exitAttendanceRecord = AttendanceRecords.FirstOrDefault(m => m.AttendId == punchClocks.attendId);
                        if (exitAttendanceRecord != null)
                        {
                            continue;
                        }
                        var attendanceRecord              = new AttendanceRecord();
                        attendanceRecord.AttendId         = punchClocks.attendId;
                        attendanceRecord.VerifyState      = punchClocks.status;
                        attendanceRecord.PuncherTimeStamp = punchClocks.attendTime;

                        if (attendanceRecord.VerifyState == 0)
                        {
                            attendanceRecord.IsbtnVerify    = true;
                            attendanceRecord.VerifyDescribe = "待验证";
                        }
                        else if (attendanceRecord.VerifyState == 1)
                        {
                            attendanceRecord.VerifyDescribe = "验证过期";
                        }
                        else if (attendanceRecord.VerifyState == 2)
                        {
                            attendanceRecord.VerifyDescribe = "打卡成功";
                        }
                        var diffMinute = serverDateTime - PublicTalkMothed.ConvertStringToDateTime(punchClocks.attendTime);
                        if ((diffMinute.Days > 0 || diffMinute.TotalMinutes > 20) && attendanceRecord.VerifyState == 0)
                        {
                            attendanceRecord.IsbtnVerify    = false;
                            attendanceRecord.VerifyDescribe = "验证过期";
                            attendanceRecord.VerifyState    = 1;
                        }
                        if (!string.IsNullOrEmpty(punchClocks.attendTime))
                        {
                            attendanceRecord.PuncherDateTime = PublicTalkMothed.ConvertStringToDateTime(punchClocks.attendTime);
                        }
                        else
                        {
                            attendanceRecord.PuncherDateTime = DateTime.Now;
                        }
                        attendanceRecord.PuncherAddress = punchClocks.address;
                        if (attendanceRecord.PuncherDateTime.Year - DateTime.Now.Year > 0)
                        {
                            attendanceRecord.PuncherDate = attendanceRecord.PuncherDateTime.ToString("yyyy年MM月dd日");
                        }
                        else
                        {
                            attendanceRecord.PuncherDate = attendanceRecord.PuncherDateTime.ToString("MM月dd日");
                        }
                        attendanceRecord.PuncherTime = attendanceRecord.PuncherDateTime.ToString("HH:mm");
                        AttendanceRecords.Insert(0, attendanceRecord);
                    }

                    _isFirst = datas.isFirstPage;
                    _isLast  = datas.isLastPage;
                    var tempAttendanceRecord = AttendanceRecords.FirstOrDefault(m => m.IsbtnVerify);
                    if (tempAttendanceRecord != null)
                    {
                        LoadData(tempAttendanceRecord);
                    }
                }
                else
                {
                }
            });
        }