// 修改資料 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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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
        }
Esempio n. 7
0
        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));
                }
            }
        }
Esempio n. 8
0
        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));
            }
        }
Esempio n. 9
0
        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);
        }