コード例 #1
0
        public static async Task <bool> UserLogoutAsync(IPageDialogService dialogService,
                                                        LoginManager loginManager, SystemStatusManager systemStatusManager,
                                                        AppStatus appStatus)
        {
            await systemStatusManager.ReadFromFileAsync();

            await loginManager.ReadFromFileAsync();

            loginManager.SingleItem = new LoginResponseDTO();
            await loginManager.WriteToFileAsync();

            systemStatusManager.SingleItem.UserID                 = loginManager.SingleItem.Id;
            systemStatusManager.SingleItem.Account                = loginManager.SingleItem.Account;
            systemStatusManager.SingleItem.Department             = loginManager.SingleItem.Department;
            systemStatusManager.SingleItem.IsLogin                = false;
            systemStatusManager.SingleItem.LoginedTime            = DateTime.Now;
            systemStatusManager.SingleItem.Token                  = loginManager.SingleItem.Token;
            systemStatusManager.SingleItem.RefreshToken           = loginManager.SingleItem.RefreshToken;
            systemStatusManager.SingleItem.TokenExpireMinutes     = loginManager.SingleItem.TokenExpireMinutes;
            systemStatusManager.SingleItem.RefreshTokenExpireDays = loginManager.SingleItem.RefreshTokenExpireDays;
            systemStatusManager.SingleItem.SetExpireDatetime();

            //await systemStatusManager.WriteToFileAsync();
            await AppStatusHelper.WriteAndUpdateAppStatus(systemStatusManager, appStatus);

            return(true);
        }
コード例 #2
0
        public LoginPageViewModel(INavigationService navigationService, IPageDialogService dialogService,
                                  LoginManager loginManager, SystemStatusManager systemStatusManager,
                                  AppStatus appStatus, RecordCacheHelper recordCacheHelper)
        {
            this.navigationService   = navigationService;
            this.dialogService       = dialogService;
            this.loginManager        = loginManager;
            this.systemStatusManager = systemStatusManager;
            this.appStatus           = appStatus;
            this.recordCacheHelper   = recordCacheHelper;
            LoginCommand             = new DelegateCommand(async() =>
            {
                using (IProgressDialog fooIProgressDialog = UserDialogs.Instance.Loading($"請稍後,更新資料中...", null, null, true, MaskType.Black))
                {
                    LoginRequestDTO loginRequestDTO = new LoginRequestDTO()
                    {
                        Account  = Account,
                        Password = Password,
                    };
                    var fooResult = await LoginUpdateTokenHelper.UserLoginAsync(dialogService, loginManager, systemStatusManager,
                                                                                loginRequestDTO, appStatus);
                    if (fooResult == false)
                    {
                        return;
                    }
                    await recordCacheHelper.RefreshAsync(fooIProgressDialog);
                }

                //await dialogService.DisplayAlertAsync("Info", "登入成功", "OK");
                await navigationService.NavigateAsync("/MDPage/NaviPage/HomePage");
            });
        }
コード例 #3
0
        public static async Task <bool> UserLoginAsync(IPageDialogService dialogService,
                                                       LoginManager loginManager, SystemStatusManager systemStatusManager, LoginRequestDTO loginRequestDTO,
                                                       AppStatus appStatus)
        {
            var fooResult = await loginManager.PostAsync(loginRequestDTO);

            if (fooResult.Status != true)
            {
                await dialogService.DisplayAlertAsync("發生錯誤", fooResult.Message, "確定");

                return(false);
            }

            systemStatusManager.SingleItem.UserID                 = loginManager.SingleItem.Id;
            systemStatusManager.SingleItem.Account                = loginManager.SingleItem.Account;
            systemStatusManager.SingleItem.Department             = loginManager.SingleItem.Department;
            systemStatusManager.SingleItem.IsLogin                = true;
            systemStatusManager.SingleItem.LoginedTime            = DateTime.Now;
            systemStatusManager.SingleItem.Token                  = loginManager.SingleItem.Token;
            systemStatusManager.SingleItem.RefreshToken           = loginManager.SingleItem.RefreshToken;
            systemStatusManager.SingleItem.TokenExpireMinutes     = loginManager.SingleItem.TokenExpireMinutes;
            systemStatusManager.SingleItem.RefreshTokenExpireDays = loginManager.SingleItem.RefreshTokenExpireDays;
            systemStatusManager.SingleItem.SetExpireDatetime();

            //await systemStatusManager.WriteToFileAsync();
            await AppStatusHelper.WriteAndUpdateAppStatus(systemStatusManager, appStatus);

            return(true);
        }
コード例 #4
0
        public static async Task <bool> WriteAndUpdateAppStatus(SystemStatusManager systemStatusManager, AppStatus appStatus)
        {
            await systemStatusManager.WriteToFileAsync();

            appStatus.SystemStatus = systemStatusManager.SingleItem;
            return(true);
        }
コード例 #5
0
 public LogoutCleanHelper(IPageDialogService dialogService, DepartmentsManager departmentsManager,
                          SystemEnvironmentsManager systemEnvironmentsManager,
                          SystemStatusManager systemStatusManager, AppStatus appStatus, RefreshTokenManager refreshTokenManager,
                          ExceptionRecordsManager exceptionRecordsManager,
                          LeaveFormsManager leaveFormsManager, CommUserGroupsManager commUserGroupsManager)
 {
     this.dialogService             = dialogService;
     this.departmentsManager        = departmentsManager;
     this.systemEnvironmentsManager = systemEnvironmentsManager;
     this.systemStatusManager       = systemStatusManager;
     this.appStatus               = appStatus;
     this.refreshTokenManager     = refreshTokenManager;
     this.exceptionRecordsManager = exceptionRecordsManager;
     this.leaveFormsManager       = leaveFormsManager;
 }
コード例 #6
0
 public LeaveFormPageViewModel(INavigationService navigationService, IPageDialogService dialogService,
                               LeaveFormsManager leaveFormsManager, LeaveFormTypesManager leaveFormTypesManager,
                               RefreshTokenManager refreshTokenManager,
                               SystemStatusManager systemStatusManager, AppStatus appStatus)
 {
     this.navigationService     = navigationService;
     this.dialogService         = dialogService;
     this.leaveFormsManager     = leaveFormsManager;
     this.leaveFormTypesManager = leaveFormTypesManager;
     this.refreshTokenManager   = refreshTokenManager;
     this.systemStatusManager   = systemStatusManager;
     this.appStatus             = appStatus;
     RefreshCommand             = new DelegateCommand(async() =>
     {
         IsRefreshing = true;
         await LoadDataAsync();
         IsRefreshing = false;
     });
     AddCommand = new DelegateCommand(async() =>
     {
         LeaveFormModel leaveFormModel = new LeaveFormModel()
         {
             BeginTime  = DateTime.Today + new TimeSpan(09, 00, 00),
             EndTime    = DateTime.Today + new TimeSpan(18, 00, 00),
             Id         = 0,
             TotalHours = 8,
             user       = new UserDTO()
             {
                 Id = appStatus.SystemStatus.UserID
             },
             Description   = "請假原因",
             leaveFormType = new LeaveFormTypeModel()
             {
                 Id = leaveFormTypesManager.Items[0].Id, Name = leaveFormTypesManager.Items[0].Name
             },
         };
         NavigationParameters fooPara = new NavigationParameters();
         fooPara.Add("Record", leaveFormModel);
         await navigationService.NavigateAsync("LeaveFormDetailPage", fooPara);
     });
     ItemTappedCommand = new DelegateCommand(async() =>
     {
         var leaveFormSelectedItemClone = LeaveFormSelectedItem.Clone();
         NavigationParameters fooPara   = new NavigationParameters();
         fooPara.Add("Record", leaveFormSelectedItemClone);
         await navigationService.NavigateAsync("LeaveFormDetailPage", fooPara);
     });
 }
コード例 #7
0
 public MDPageViewModel(INavigationService navigationService, IPageDialogService dialogService,
                        LoginManager loginManager, SystemStatusManager systemStatusManager,
                        AppStatus appStatus, LogoutCleanHelper logoutCleanHelper)
 {
     this.navigationService   = navigationService;
     this.dialogService       = dialogService;
     this.loginManager        = loginManager;
     this.systemStatusManager = systemStatusManager;
     this.appStatus           = appStatus;
     this.logoutCleanHelper   = logoutCleanHelper;
     HomeCommand = new DelegateCommand(async() =>
     {
         await navigationService.NavigateAsync("/MDPage/NaviPage/HomePage");
     });
     SuggestionCommand = new DelegateCommand(async() =>
     {
         await navigationService.NavigateAsync("/MDPage/NaviPage/SuggestionPage");
     });
     ExceptionCommand = new DelegateCommand(() =>
     {
         throw new Exception("發生了一個自訂的例外異常");
     });
     UserGroupCommand = new DelegateCommand(async() =>
     {
         await navigationService.NavigateAsync("/MDPage/NaviPage/CommUsePage");
     });
     LeaveFormCommand = new DelegateCommand(async() =>
     {
         await navigationService.NavigateAsync("/MDPage/NaviPage/LeaveFormPage");
     });
     LogoutCommand = new DelegateCommand(async() =>
     {
         using (IProgressDialog fooIProgressDialog = UserDialogs.Instance.Loading($"請稍後,更新資料中...", null, null, true, MaskType.Black))
         {
             await logoutCleanHelper.LogoutCleanAsync(fooIProgressDialog);
             var fooResult = await LoginUpdateTokenHelper.UserLogoutAsync(dialogService, loginManager, systemStatusManager, appStatus);
             if (fooResult == true)
             {
                 await navigationService.NavigateAsync("/LoginPage");
             }
         }
     });
 }
コード例 #8
0
 public SuggestionPageViewModel(INavigationService navigationService, IPageDialogService dialogService,
                                RefreshTokenManager refreshTokenManager, SystemStatusManager systemStatusManager,
                                AppStatus appStatus, SuggestionsManager suggestionsManager)
 {
     this.navigationService   = navigationService;
     this.dialogService       = dialogService;
     this.refreshTokenManager = refreshTokenManager;
     this.systemStatusManager = systemStatusManager;
     this.appStatus           = appStatus;
     this.suggestionsManager  = suggestionsManager;
     OKCommand = new DelegateCommand(async() =>
     {
         using (IProgressDialog fooIProgressDialog = UserDialogs.Instance.Loading($"請稍後,更新資料中...", null, null, true, MaskType.Black))
         {
             bool fooRefreshTokenResult = await RefreshTokenHelper.CheckAndRefreshToken(dialogService, refreshTokenManager, systemStatusManager, appStatus);
             if (fooRefreshTokenResult == false)
             {
                 return;
             }
             var fooResult = await suggestionsManager.PostAsync(new SuggestionRequestDTO()
             {
                 Subject    = SuggestionModel.Subject,
                 Message    = SuggestionModel.Message,
                 SubmitTime = DateTime.Now,
                 User       = new UserDTO()
                 {
                     Id = appStatus.SystemStatus.UserID
                 },
             });
             if (fooResult.Status == true)
             {
                 await dialogService.DisplayAlertAsync("通知", "已經成功提交", "確定");
             }
             else
             {
                 await dialogService.DisplayAlertAsync("錯誤", $"已經發生例外異常:{fooResult.Message}", "確定");
             }
         }
     });
 }
コード例 #9
0
        public ActionResult Index()
        {
            if (User.IsInRole("ExternoVerificarFacturas"))
            {
                return(RedirectToAction("List", "ExternalInvoice"));
            }

            if (User.IsInRole("Facturador"))
            {
                return(RedirectToAction("List", "Contract"));
            }

            // Barcos
            var         sda    = new ShipDataAccess(context);
            var         sman   = new ShipManager();
            var         spman  = new ShipPositionManager();
            var         asprda = new ActiveShipPositionRequestDataAccess(context);
            List <Ship> barcos = sda.GetAll();

            string[] latlong = { "N/A", "N/A" };

            int i = 0;

            foreach (Ship barco in barcos)
            {
                ViewData[string.Format("State{0}", i)] = "normal"; //sman.GetShipState(barco);

                DataCenterDataAccess.ShipPosition LastPos = spman.GetLastShipPosition(barco.IMONum);
                if (LastPos == null)
                {
                    latlong[0] = "N/A";
                    latlong[1] = "N/A";
                }
                else
                {
                    latlong = spman.GetLatLongOfPoint(LastPos);
                }

                ViewData[string.Format("Nombre{0}", i)] = barco.Name.ToString();
                ViewData[string.Format("OMIId{0}", i)]  = barco.IMONum.ToString();
                if (LastPos != null)
                {
                    string temp  = latlong[0].Length > 6 ? latlong[0].Remove(6) : latlong[0];
                    string temp2 = latlong[1].Length > 6 ? latlong[1].Remove(6) : latlong[1];
                    ViewData[string.Format("UltimaPosicion{0}", i)] = "Lat: " + temp + " Long: " + temp2;
                    ViewData[string.Format("Fecha{0}", i)]          = LastPos.TimeStamp.ToString();
                }
                else
                {
                    ViewData[string.Format("UltimaPosicion{0}", i)] = "Lat: N/A Long: N/A";
                    ViewData[string.Format("Fecha{0}", i)]          = "N/A";
                }
                i++;
            }
            ViewData["total_barcos"] = i;
            //ViewData["total_barcos"] = 0;


            //Status

            int      status, aspStatus;
            TimeSpan since, aspSince;
            var      ssman = new SystemStatusManager();

            /*
             * ssman.getLastStatus(out status, out since);
             * ssman.GetLastAspStatus(out aspStatus, out aspSince);
             *
             * ViewData["IDEStatus"] = status;
             * ViewData["IDESince"] = since;
             * ViewData["DDPStatus"] = status;
             * ViewData["DDPSince"] = since;
             * ViewData["ASPStatus"] = aspStatus;
             * ViewData["ASPSince"] = aspSince;
             *
             * ViewData["AsprCount"] = asprda.Count();
             *
             * // Tráfico
             *
             * var tman = new TrafficManager();
             * var ts = tman.GetTrafficStats();
             *
             * ViewData["InMonth"] = ts.InMonth;
             * ViewData["InWeek"] = ts.InWeek;
             * ViewData["InDay"] = ts.InDay;
             * ViewData["OutMonth"] = ts.OutMonth;
             * ViewData["OutWeek"] = ts.OutWeek;
             * ViewData["OutDay"] = ts.OutDay;
             */


            return(View());
        }
コード例 #10
0
        public static async Task <bool> CheckAndRefreshToken(IPageDialogService dialogService,
                                                             RefreshTokenManager refreshTokenManager, SystemStatusManager systemStatusManager,
                                                             AppStatus appStatus)
        {
            if (appStatus.SystemStatus.TokenExpireDatetime > DateTime.Now)
            {
                #region Token 尚在有效期限
                return(true);

                #endregion
            }
            else
            {
                #region Token 已經失效了,需要更新
                var fooResult = await refreshTokenManager.GetAsync();

                if (fooResult.Status != true)
                {
                    await dialogService.DisplayAlertAsync("發生錯誤", fooResult.Message, "確定");

                    return(false);
                }
                systemStatusManager.SingleItem                        = appStatus.SystemStatus;
                systemStatusManager.SingleItem.IsLogin                = true;
                systemStatusManager.SingleItem.LoginedTime            = DateTime.Now;
                systemStatusManager.SingleItem.Token                  = refreshTokenManager.SingleItem.Token;
                systemStatusManager.SingleItem.RefreshToken           = refreshTokenManager.SingleItem.RefreshToken;
                systemStatusManager.SingleItem.TokenExpireMinutes     = refreshTokenManager.SingleItem.TokenExpireMinutes;
                systemStatusManager.SingleItem.RefreshTokenExpireDays = refreshTokenManager.SingleItem.RefreshTokenExpireDays;
                systemStatusManager.SingleItem.SetExpireDatetime();
                #endregion
            }

            //await systemStatusManager.WriteToFileAsync();
            await AppStatusHelper.WriteAndUpdateAppStatus(systemStatusManager, appStatus);

            return(true);
        }
コード例 #11
0
 public LeaveFormDetailPageViewModel(INavigationService navigationService, IPageDialogService dialogService,
                                     RefreshTokenManager refreshTokenManager,
                                     SystemStatusManager systemStatusManager, AppStatus appStatus,
                                     LeaveFormsManager leaveFormsManager, LeaveFormTypesManager leaveFormTypesManager)
 {
     this.navigationService     = navigationService;
     this.dialogService         = dialogService;
     this.leaveFormsManager     = leaveFormsManager;
     this.leaveFormTypesManager = leaveFormTypesManager;
     SaveCommand = new DelegateCommand(async() =>
     {
         if (IsAddMode == true)
         {
             using (IProgressDialog fooIProgressDialog = UserDialogs.Instance.Loading($"請稍後,更新資料中...", null, null, true, MaskType.Black))
             {
                 bool fooRefreshTokenResult = await RefreshTokenHelper.CheckAndRefreshToken(dialogService, refreshTokenManager, systemStatusManager, appStatus);
                 if (fooRefreshTokenResult == false)
                 {
                     return;
                 }
                 var fooResult = await leaveFormsManager.PostAsync(new LeaveFormRequestDTO()
                 {
                     id            = 0,
                     BeginTime     = LeaveFormItemModel.BeginDate + LeaveFormItemModel.BeginTime,
                     EndTime       = LeaveFormItemModel.EndDate + LeaveFormItemModel.EndTime,
                     Description   = LeaveFormItemModel.Description,
                     TotalHours    = LeaveFormItemModel.TotalHours,
                     leaveFormType = new LeaveFormTypeDTO()
                     {
                         Id = LeaveFormTypeSelectedItem.Id
                     }
                 });
             }
         }
         else
         {
             using (IProgressDialog fooIProgressDialog = UserDialogs.Instance.Loading($"請稍後,更新資料中...", null, null, true, MaskType.Black))
             {
                 bool fooRefreshTokenResult = await RefreshTokenHelper.CheckAndRefreshToken(dialogService, refreshTokenManager, systemStatusManager, appStatus);
                 if (fooRefreshTokenResult == false)
                 {
                     return;
                 }
                 var fooResult = await leaveFormsManager.PutAsync(LeaveFormSelectedItem.Id, new LeaveFormRequestDTO()
                 {
                     id            = LeaveFormSelectedItem.Id,
                     BeginTime     = LeaveFormItemModel.BeginDate + LeaveFormItemModel.BeginTime,
                     EndTime       = LeaveFormItemModel.EndDate + LeaveFormItemModel.EndTime,
                     Description   = LeaveFormItemModel.Description,
                     TotalHours    = LeaveFormItemModel.TotalHours,
                     leaveFormType = new LeaveFormTypeDTO()
                     {
                         Id = LeaveFormTypeSelectedItem.Id
                     }
                 });
             }
         }
         var queryString      = "NeedRefresh=true";
         var navigationParams = new NavigationParameters(queryString);
         await navigationService.GoBackAsync(navigationParams);
     });
     DeleteCommand = new DelegateCommand(async() =>
     {
         using (IProgressDialog fooIProgressDialog = UserDialogs.Instance.Loading($"請稍後,更新資料中...", null, null, true, MaskType.Black))
         {
             bool fooRefreshTokenResult = await RefreshTokenHelper.CheckAndRefreshToken(dialogService, refreshTokenManager, systemStatusManager, appStatus);
             if (fooRefreshTokenResult == false)
             {
                 return;
             }
             var fooResult = await leaveFormsManager.DeleteAsync(LeaveFormSelectedItem.Id);
         }
         var queryString      = "NeedRefresh=true";
         var navigationParams = new NavigationParameters(queryString);
         await navigationService.GoBackAsync(navigationParams);
     });
 }