public async void OnNavigatedTo(INavigationParameters parameters) { await LoadPickerSourceAsync(); MasterItem = parameters.GetValue <WorkingLogDto>(MagicStringHelper.MasterRecordActionName); var fooObject = parameters.GetValue <WorkingLogDetailDto>(MagicStringHelper.CurrentSelectdItemParameterName); SelectedItem = fooObject; CrudAction = parameters.GetValue <string>(MagicStringHelper.CrudActionName); ShowDeleteButton = true; if (CrudAction == MagicStringHelper.CrudAddAction) { ShowDeleteButton = false; } #region 進行選單初始化 #region 專案 if (SelectedItem.ProjectId >= 0) { ProjectSelectedItem = ProjectItemsSource .FirstOrDefault(x => x.Id == SelectedItem.ProjectId); } #endregion #endregion }
public async Task <IActionResult> Put([FromRoute] int id, [FromBody] WorkingLogDto data) { APIResult apiResult; #region 驗證 DTO 物件的資料一致性 if (!ModelState.IsValid) { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.傳送過來的資料有問題, payload: data); return(Ok(apiResult)); } #endregion var record = await WorkingLogService.GetAsync(id); if (record != null) { WorkingLogAdapterModel recordTarget = mapper.Map <WorkingLogAdapterModel>(data); recordTarget.Id = id; var result = mapper.Map <WorkingLogDto>(recordTarget); #region 修改記錄前的紀錄完整性檢查 VerifyRecordResult verify = await WorkingLogService.BeforeUpdateCheckAsync(record); if (verify.Success == false) { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageMappingHelper.Instance.GetErrorMessage(verify.MessageId), payload: result); return(Ok(apiResult)); } #endregion var verifyRecordResult = await WorkingLogService.UpdateAsync(recordTarget); if (verifyRecordResult.Success) { apiResult = APIResultFactory.Build(true, StatusCodes.Status202Accepted, ErrorMessageEnum.None, payload: null); } else { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.無法修改紀錄, payload: result); } } else { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.沒有任何符合資料存在, payload: data); } return(Ok(apiResult)); }
public async Task <IActionResult> Post([FromBody] WorkingLogDto data) { APIResult apiResult; #region 驗證 DTO 物件的資料一致性 if (!ModelState.IsValid) { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.傳送過來的資料有問題, payload: null); return(Ok(apiResult)); } #endregion WorkingLogAdapterModel record = mapper.Map <WorkingLogAdapterModel>(data); if (record != null) { var result = mapper.Map <WorkingLogDto>(record); #region 新增記錄前的紀錄完整性檢查 VerifyRecordResult verify = await WorkingLogService.BeforeAddCheckAsync(record); if (verify.Success == false) { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageMappingHelper.Instance.GetErrorMessage(verify.MessageId), payload: result); return(Ok(apiResult)); } #endregion var verifyRecordResult = await WorkingLogService.AddAsync(record); if (verifyRecordResult.Success) { apiResult = APIResultFactory.Build(true, StatusCodes.Status201Created, ErrorMessageEnum.None, payload: result); } else { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.無法新增紀錄, payload: result); } } else { apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK, ErrorMessageEnum.傳送過來的資料有問題, payload: data); } return(Ok(apiResult)); }
public async void OnNavigatedTo(INavigationParameters parameters) { if (parameters.GetNavigationMode() == NavigationMode.New) { MasterItem = parameters.GetValue <WorkingLogDto>(MagicStringHelper.MasterRecordActionName); await RefreshData(); } else { string CrudAction = parameters.GetValue <string>(MagicStringHelper.CrudActionName); if (CrudAction == MagicStringHelper.CrudRefreshAction) { await ReloadData(); } } }
public WorkingLogPageViewModel(INavigationService navigationService, IPageDialogService dialogService, WorkingLogService workingLogService, ProjectService projectService, MyUserService myUserService, WorkingLogDetailService workingLogDetailService, RefreshTokenService refreshTokenService, SystemStatusService systemStatusService, AppStatus appStatus) { this.navigationService = navigationService; this.dialogService = dialogService; this.workingLogService = workingLogService; this.projectService = projectService; this.myUserService = myUserService; this.workingLogDetailService = workingLogDetailService; this.refreshTokenService = refreshTokenService; this.systemStatusService = systemStatusService; this.appStatus = appStatus; #region 新增紀錄 AddCommand = new DelegateCommand(async() => { NavigationParameters paras = new NavigationParameters(); var fooObject = new WorkingLogDto(); fooObject.LogDate = DateTime.Now.Date; #region 設定該使用者為預設紀錄申請者 var myUser = myUserService.Items .FirstOrDefault(x => x.Id == appStatus.SystemStatus.UserID); if (myUser != null) { fooObject.MyUserId = myUser.Id; fooObject.MyUserName = myUser.Name; } #endregion paras.Add(MagicStringHelper.CurrentSelectdItemParameterName, fooObject); paras.Add(MagicStringHelper.CrudActionName, MagicStringHelper.CrudAddAction); await navigationService.NavigateAsync("WorkingLogRecordPage", paras); }); #endregion #region 點選某筆紀錄觸發命令 ItemTappedCommand = new DelegateCommand(async() => { NavigationParameters paras = new NavigationParameters(); var fooObject = SelectedItem.Clone(); paras.Add(MagicStringHelper.CurrentSelectdItemParameterName, fooObject); paras.Add(MagicStringHelper.CrudActionName, MagicStringHelper.CrudEditAction); await navigationService.NavigateAsync("WorkingLogRecordPage", paras); }); #endregion #region 更新遠端紀錄命令 RefreshCommand = new DelegateCommand(async() => { IsRefresh = true; await ReloadData(); IsRefresh = false; }); #endregion #region 顯示明細頁面 ShowDetailCommand = new DelegateCommand <WorkingLogDto>(async x => { #region 讀取該筆明細清單 using (IProgressDialog fooIProgressDialog = UserDialogs.Instance.Loading($"請稍後,更新資料中...", null, null, true, MaskType.Black)) { await AppStatusHelper.ReadAndUpdateAppStatus(systemStatusService, appStatus); #region 檢查 Access Token 是否還可以使用 bool refreshTokenResult = await RefreshTokenHelper .CheckAndRefreshToken(dialogService, refreshTokenService, systemStatusService, appStatus); if (refreshTokenResult == false) { return; } #endregion #region 取得 專案清單 fooIProgressDialog.Title = "請稍後,取得 專案清單"; var apiResultssss = await projectService.GetAsync(); if (apiResultssss.Status == true) { await projectService.WriteToFileAsync(); } else { await DialogHelper.ShowAPIResultIsFailureMessage(dialogService, apiResultssss); return; } #endregion #region 取得 工作日誌明細 fooIProgressDialog.Title = "請稍後,取得 工作日誌明細"; apiResultssss = await workingLogDetailService.GetAsync(x.Id); if (apiResultssss.Status == true) { await workingLogDetailService.WriteToFileAsync(); NavigationParameters paras = new NavigationParameters(); paras.Add(MagicStringHelper.MasterRecordActionName, x); await navigationService.NavigateAsync("WorkingLogDetailPage", paras); } else { await DialogHelper.ShowAPIResultIsFailureMessage(dialogService, apiResultssss); return; } #endregion } #endregion }); #endregion }