// 修改資料 PUT: api/LeaveAppForm/5 public async Task <APIResult> Put([FromBody] WorkingLog value) { #region 檢查使用者是否存在 var fooUser = await db.LOBMyUsers.FirstOrDefaultAsync(x => x.EmployeeID == value.Owner.EmployeeID); if (fooUser != null) { #region 檢查使用者是否存在 var fooProject = await db.LOBProjects.FirstOrDefaultAsync(x => x.ProjectId == value.Project.ProjectId); if (fooProject != null) { var fooItem = await db.LOBWorkingLogs.FirstOrDefaultAsync(x => x.WorkingLogId == value.WorkingLogId); if (fooItem != null) { #region 更新資料庫上的紀錄 fooItem.LogDate = value.LogDate; fooItem.LOBMyUsers = fooUser; fooItem.LOBProjects = fooProject; fooItem.Summary = value.Summary; fooItem.Title = value.Title; fooItem.Hours = value.Hours; #endregion var fooCC = db.SaveChanges(); if (fooCC > 0) { fooResult.Success = true; fooResult.Message = $"工作日誌紀錄({fooItem.WorkingLogId})成功被修改"; fooResult.TokenFail = false; fooResult.Payload = fooItem.ToWorkingLog(); } else { fooResult.Success = false; fooResult.Message = $"無法修改這筆 {fooItem.WorkingLogId} 工作日誌紀錄"; fooResult.TokenFail = false; fooResult.Payload = null; } } } else { fooResult.Success = false; fooResult.Message = $"這筆工作日誌紀錄指定的專案不存在"; fooResult.TokenFail = false; fooResult.Payload = null; } #endregion } else { fooResult.Success = false; fooResult.Message = $"無法發現到這筆 {value.WorkingLogId} 工作日誌錄"; fooResult.TokenFail = false; fooResult.Payload = null; } #endregion return(fooResult); }
public WorkingLogPageViewModel(INavigationService navigationService) { _navigationService = navigationService; ItemTappedCommand = new DelegateCommand(async() => { NavigationParameters fooPara = new NavigationParameters(); fooPara.Add(MainHelper.CRUDItemKeyName, WorkingLogSelectedItem.Clone()); fooPara.Add(MainHelper.CRUDKeyName, MainHelper.CRUD_Update); await _navigationService.NavigateAsync("WorkingLogDetailPage", fooPara); }); AddCommand = new DelegateCommand(async() => { var fooItem = new WorkingLog() { LogDate = DateTime.Now, }; NavigationParameters fooPara = new NavigationParameters(); fooPara.Add(MainHelper.CRUDItemKeyName, fooItem); fooPara.Add(MainHelper.CRUDKeyName, MainHelper.CRUD_Create); await _navigationService.NavigateAsync("WorkingLogDetailPage", fooPara); }); DoRefreshCommand = new DelegateCommand(async() => { await RetriveRecords(); }); }
// 新增資料 POST: api/LeaveAppForm public async Task <APIResult> Post([FromBody] WorkingLog value) { #region 檢查使用者是否存在 var fooUser = await db.LOBMyUsers.FirstOrDefaultAsync(x => x.EmployeeID == value.Owner.EmployeeID); if (fooUser != null) { #region 檢查使用者是否存在 var fooProject = await db.LOBProjects.FirstOrDefaultAsync(x => x.ProjectId == value.Project.ProjectId); if (fooProject != null) { #region 產生工作日誌物件 var fooLeaveAppFormItem = new LOBWorkingLogs() { LogDate = value.LogDate, Summary = value.Summary, Title = value.Title, Hours = value.Hours, LOBMyUsers = fooUser, LOBProjects = fooProject }; db.LOBWorkingLogs.Add(fooLeaveAppFormItem); #endregion var fooCC = db.SaveChanges(); if (fooCC > 0) { fooResult.Success = true; fooResult.Message = $"工作日誌紀錄新增成功"; fooResult.TokenFail = false; fooResult.Payload = null; } else { fooResult.Success = false; fooResult.Message = $"無法新增到這筆工作日誌紀錄"; fooResult.TokenFail = false; fooResult.Payload = null; } } else { fooResult.Success = false; fooResult.Message = $"這筆工作日誌紀錄指定的專案不存在"; fooResult.TokenFail = false; fooResult.Payload = null; } #endregion } else { fooResult.Success = false; fooResult.Message = $"這筆工作日誌紀錄指定的使用者不存在"; fooResult.TokenFail = false; fooResult.Payload = null; } #endregion return(fooResult); }
public async Task <VerifyRecordResult> AddAsync(WorkingLogAdapterModel paraObject) { WorkingLog itemParameter = Mapper.Map <WorkingLog>(paraObject); CleanTrackingHelper.Clean <WorkingLog>(context); await context.WorkingLog .AddAsync(itemParameter); await context.SaveChangesAsync(); CleanTrackingHelper.Clean <WorkingLog>(context); return(VerifyRecordResultFactory.Build(true)); }
public async Task <WorkingLogAdapterModel> GetAsync(int id) { WorkingLog item = await context.WorkingLog .AsNoTracking() .Include(x => x.MyUser) .FirstOrDefaultAsync(x => x.Id == id); WorkingLogAdapterModel result = Mapper.Map <WorkingLogAdapterModel>(item); await OhterDependencyData(result); return(result); }
public async Task UpdateRecord(WorkingLog workingLog) { #region 進行工作日誌清單更新 APIResult fooResult; IsRefreshing = true; var fooProgressDialogConfig = new ProgressDialogConfig() { Title = "請稍後,正在進行工作日誌清單更新中...", IsDeterministic = false, }; using (Acr.UserDialogs.UserDialogs.Instance.Progress(fooProgressDialogConfig)) { var fooWorkingLog = new WorkingLogRepository(); fooResult = await fooWorkingLog.PutAsync(workingLog); if (fooResult.Success == false) { if (await MainHelper.CheckAccessToken(fooResult) == false) { return; } try { var fooAlertConfig = new AlertConfig() { Title = "警告", Message = $"更新資料發生了錯誤 {Environment.NewLine}{fooResult.Message}", OkText = "確定" }; CancellationTokenSource fooCancelSrc = new CancellationTokenSource(10000); await Acr.UserDialogs.UserDialogs.Instance.AlertAsync(fooAlertConfig, fooCancelSrc.Token); } catch (OperationCanceledException) { } } } if (fooResult.Success == true) { await RetriveRecords(); } IsRefreshing = false; #endregion }
public IHttpActionResult GetWorkingLog(int processAssignID, string userID) { using (PowerAppsCMSEntities db = new PowerAppsCMSEntities()) { List <WorkingLog> listWorkingLog = new List <WorkingLog>(); Guid guidUserID = Guid.Parse(userID.Replace(" ", string.Empty)); try { foreach (ProcessActivity itemProcessActivity in db.ProcessActivities.Where(x => x.ProcessAssignID == processAssignID && x.ProcessAssign.UserID == guidUserID)) { WorkingLog workingLog = new WorkingLog(); workingLog.ActivityDateTime = itemProcessActivity.ActivityDateTime.ToString("dd/MM/yyyy HH:mm:ss"); if (itemProcessActivity.ReasonPauseID == null && itemProcessActivity.Status == (int)ProcessActivityStatus.Start) { workingLog.Remark = "Start"; } else if (itemProcessActivity.ReasonPauseID == null && itemProcessActivity.Status == (int)ProcessActivityStatus.Break) { workingLog.Remark = "Break"; } else if (itemProcessActivity.ReasonPauseID == null && itemProcessActivity.Status == (int)ProcessActivityStatus.Stop) { workingLog.Remark = "Stop"; } else if (itemProcessActivity.ReasonPauseID == null && itemProcessActivity.Status == (int)ProcessActivityStatus.StopByGroupLeader) { workingLog.Remark = "Stop by Group Leader"; } else { workingLog.Remark = itemProcessActivity.ReasonPause.Name; } listWorkingLog.Add(workingLog); } return(Ok(listWorkingLog)); } catch (Exception ex) { return(InternalServerError(ex)); } } }
public async Task <VerifyRecordResult> DeleteAsync(int id) { CleanTrackingHelper.Clean <WorkingLog>(context); WorkingLog item = await context.WorkingLog .AsNoTracking() .FirstOrDefaultAsync(x => x.Id == id); if (item == null) { return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.無法刪除紀錄)); } else { CleanTrackingHelper.Clean <WorkingLog>(context); context.Entry(item).State = EntityState.Deleted; await context.SaveChangesAsync(); CleanTrackingHelper.Clean <WorkingLog>(context); return(VerifyRecordResultFactory.Build(true)); } }
public async Task <VerifyRecordResult> UpdateAsync(WorkingLogAdapterModel paraObject) { WorkingLog itemData = Mapper.Map <WorkingLog>(paraObject); CleanTrackingHelper.Clean <WorkingLog>(context); WorkingLog item = await context.WorkingLog .AsNoTracking() .FirstOrDefaultAsync(x => x.Id == paraObject.Id); if (item == null) { return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.無法修改紀錄)); } else { CleanTrackingHelper.Clean <WorkingLog>(context); context.Entry(itemData).State = EntityState.Modified; await context.SaveChangesAsync(); CleanTrackingHelper.Clean <WorkingLog>(context); return(VerifyRecordResultFactory.Build(true)); } }
public async Task <APIResult> DeleteAsync(WorkingLog workingLog) { using (HttpClientHandler handler = new HttpClientHandler()) { using (HttpClient client = new HttpClient(handler)) { try { #region 呼叫遠端 Web API string FooAPIUrl = $"{MainHelper.WorkingLogAPIUrl}"; HttpResponseMessage response = null; // Accept 用於宣告客戶端要求服務端回應的文件型態 (底下兩種方法皆可任選其一來使用) //client.DefaultRequestHeaders.Accept.TryParseAdd("application/json"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // 這裡是要存取 Azure Mobile 服務必須要指定的 Header client.DefaultRequestHeaders.Add("ZUMO-API-VERSION", "2.0.0"); #region 傳入 Access Token var fooSystemStatus = new SystemStatusRepository(); await fooSystemStatus.ReadAsync(); client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", fooSystemStatus.Item.AccessToken); #endregion #region 設定相關網址內容 var fooFullUrl = $"{FooAPIUrl}/{workingLog.WorkingLogId}"; #endregion response = await client.DeleteAsync(fooFullUrl); #endregion #region 處理呼叫完成 Web API 之後的回報結果 if (response != null) { if (response.IsSuccessStatusCode == true) { #region 狀態碼為成功 // 取得呼叫完成 API 後的回報內容 String strResult = await response.Content.ReadAsStringAsync(); fooAPIResult = JsonConvert.DeserializeObject <APIResult>(strResult, new JsonSerializerSettings { MetadataPropertyHandling = MetadataPropertyHandling.Ignore }); if (fooAPIResult.Success == true) { #region 讀取成功的回傳資料 #endregion } else { #region API 的狀態碼為 不成功 Items = new List <WorkingLog>(); fooAPIResult = new APIResult { Success = false, Message = fooAPIResult.Message, Payload = Items, }; #endregion } #endregion } else { #region API 的狀態碼為 不成功 Items = new List <WorkingLog>(); fooAPIResult = new APIResult { Success = false, Message = $"狀態碼:{response.StatusCode}{Environment.NewLine}{response.ReasonPhrase}", Payload = Items, TokenFail = response.StatusCode == HttpStatusCode.Unauthorized ? true : false }; #endregion } } else { fooAPIResult = new APIResult { Success = false, Message = "應用程式呼叫 API 發生異常", Payload = null, }; } #endregion } catch (Exception ex) { fooAPIResult = new APIResult { Success = false, Message = ex.Message, Payload = ex, }; } } } return(fooAPIResult); }