Exemplo n.º 1
0
        public LeaveAppFormPageViewModel(INavigationService navigationService)
        {
            _navigationService = navigationService;
            AddCommand         = new DelegateCommand(async() =>
            {
                var fooItem = new LeaveAppForm()
                {
                    BeginDate    = DateTime.Now.Date.AddDays(1),
                    CompleteDate = DateTime.Now.Date.AddDays(2),
                    FormDate     = DateTime.Now
                };
                NavigationParameters fooPara = new NavigationParameters();
                fooPara.Add(MainHelper.CRUDItemKeyName, fooItem);
                fooPara.Add(MainHelper.CRUDKeyName, MainHelper.CRUD_Create);

                await _navigationService.NavigateAsync("LeaveAppFormDetailPage", fooPara);
            });
            ItemTappedCommand = new DelegateCommand(async() =>
            {
                NavigationParameters fooPara = new NavigationParameters();
                fooPara.Add(MainHelper.CRUDItemKeyName, LeaveAppFormSelectedItem.Clone());
                fooPara.Add(MainHelper.CRUDKeyName, MainHelper.CRUD_Update);

                await _navigationService.NavigateAsync("LeaveAppFormDetailPage", fooPara);
            });
            DoRefreshCommand = new DelegateCommand(async() =>
            {
                await RetriveRecords();
            });
        }
Exemplo n.º 2
0
        public async Task ApproveDenyRecord(LeaveAppForm leaveAppForm, bool isApprove)
        {
            #region 進行審核請假單
            APIResult fooResult;
            IsRefreshing = true;
            var fooProgressDialogConfig = new ProgressDialogConfig()
            {
                Title           = "請稍後,正在進行審核請假單清單中...",
                IsDeterministic = false,
            };
            using (Acr.UserDialogs.UserDialogs.Instance.Progress(fooProgressDialogConfig))
            {
                var fooLeaveAppFormRepository = new LeaveAppFormRepository();
                if (isApprove == true)
                {
                    leaveAppForm.ApproveResult = "已審核";
                    leaveAppForm.FormsStatus   = "已生效";
                }
                else
                {
                    leaveAppForm.ApproveResult = "被否決";
                    leaveAppForm.FormsStatus   = "未生效";
                }
                fooResult = await fooLeaveAppFormRepository.PutAsync(leaveAppForm);

                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
        }
Exemplo n.º 3
0
        // 新增資料 POST: api/LeaveAppForm
        public async Task <APIResult> Post([FromBody] LeaveAppForm value)
        {
            #region 檢查使用者是否存在
            var fooUser = await db.LOBMyUsers.FirstOrDefaultAsync(x => x.EmployeeID == value.Owner.EmployeeID);

            if (fooUser != null)
            {
                #region 產生請假單物件
                var fooLeaveAppFormItem = new LOBLeaveAppForms()
                {
                    AgentName     = value.AgentName,
                    BeginDate     = value.BeginDate,
                    ApproveResult = "尚未審核",
                    Category      = value.Category,
                    CompleteDate  = value.CompleteDate,
                    FormDate      = value.FormDate,
                    FormsStatus   = "已經送出",
                    LeaveCause    = value.LeaveCause,
                    LOBMyUsers    = fooUser,
                    Hours         = value.Hours,
                    AgentId       = value.AgentId,
                };
                db.LOBLeaveAppForms.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
            return(fooResult);
        }
Exemplo n.º 4
0
        // 修改資料 PUT: api/LeaveAppForm/5
        public async Task <APIResult> Put([FromBody] LeaveAppForm value)
        {
            var fooItem = await db.LOBLeaveAppForms.FirstOrDefaultAsync(x => x.LeaveAppFormId == value.LeaveAppFormId);

            if (fooItem != null)
            {
                #region 更新資料庫上的紀錄
                fooItem.AgentName     = value.AgentName;
                fooItem.ApproveResult = value.ApproveResult;
                fooItem.BeginDate     = value.BeginDate;
                fooItem.Category      = value.Category;
                fooItem.CompleteDate  = value.CompleteDate;
                fooItem.FormDate      = value.FormDate;
                fooItem.FormsStatus   = value.FormsStatus;
                fooItem.LeaveCause    = value.LeaveCause;
                //fooItem.Owner = value.Owner;
                fooItem.Hours   = value.Hours;
                fooItem.AgentId = value.AgentId;
                #endregion
                var fooCC = db.SaveChanges();
                if (fooCC > 0)
                {
                    fooResult.Success   = true;
                    fooResult.Message   = $"請假單紀錄({fooItem.LeaveAppFormId})成功被修改";
                    fooResult.TokenFail = false;
                    fooResult.Payload   = fooItem.ToLeaveAppForm();
                }
                else
                {
                    fooResult.Success   = false;
                    fooResult.Message   = $"無法修改這筆 {fooItem.LeaveAppFormId} 請假單紀錄";
                    fooResult.TokenFail = false;
                    fooResult.Payload   = null;
                }
            }
            else
            {
                fooResult.Success   = false;
                fooResult.Message   = $"無法發現到這筆 {value.LeaveAppFormId} 請假單紀錄";
                fooResult.TokenFail = false;
                fooResult.Payload   = null;
            }
            return(fooResult);
        }
Exemplo n.º 5
0
        public async Task <APIResult> DeleteAsync(LeaveAppForm leaveAppForm)
        {
            using (HttpClientHandler handler = new HttpClientHandler())
            {
                using (HttpClient client = new HttpClient(handler))
                {
                    try
                    {
                        #region 呼叫遠端 Web API
                        string FooAPIUrl             = $"{MainHelper.LeaveAppFormAPIUrl}";
                        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}/{leaveAppForm.LeaveAppFormId}";
                        #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 <LeaveAppForm>();
                                    fooAPIResult = new APIResult
                                    {
                                        Success = false,
                                        Message = fooAPIResult.Message,
                                        Payload = Items,
                                    };
                                    #endregion
                                }
                                #endregion
                            }
                            else
                            {
                                #region API 的狀態碼為 不成功
                                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);
        }