public async Task SendAsync(WorkOrderAdapterModel workOrderAdapterModel)
        {
            if (workOrderAdapterModel.Status == MagicHelper.WorkOrderStatus完工)
            {
                var flowMasterAdapterModel = await FlowMasterService.GetSourceCodeAsync(workOrderAdapterModel.Code);

                if (flowMasterAdapterModel != null)
                {
                    await Task.Yield();

                    var checkTask = ConfirmMessageBox.ShowAsync("400px", "200px", "確認",
                                                                "這筆工單已經有送審過了,是否還要繼續送審", ConfirmMessageBox.HiddenAsync);
                    thisView.NeedRefresh();
                    var checkAgain = await checkTask;
                    if (checkAgain == false)
                    {
                        return;
                    }
                }
                CurrentRecord = workOrderAdapterModel;
                OnWorkOrderSendingDialog();
            }
            else
            {
                MessageBox.Show("400px", "200px", "警告", "派工單狀態必須是在完工狀態才可以送審",
                                MessageBox.HiddenAsync);
                await Task.Yield();

                thisView.NeedRefresh();
            }
        }
        public async Task <VerifyRecordResult> UpdateAsync(WorkOrderAdapterModel paraObject)
        {
            try
            {
                WorkOrder itemData = Mapper.Map <WorkOrder>(paraObject);
                CleanTrackingHelper.Clean <WorkOrder>(context);
                WorkOrder item = await context.WorkOrder
                                 .AsNoTracking()
                                 .FirstOrDefaultAsync(x => x.Id == paraObject.Id);

                if (item == null)
                {
                    return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.無法修改紀錄));
                }
                else
                {
                    CleanTrackingHelper.Clean <WorkOrder>(context);
                    context.Entry(itemData).State = EntityState.Modified;
                    await context.SaveChangesAsync();

                    CleanTrackingHelper.Clean <WorkOrder>(context);
                    return(VerifyRecordResultFactory.Build(true));
                }
            }
            catch (Exception ex)
            {
                Logger.LogError(ex, "修改記錄發生例外異常");
                return(VerifyRecordResultFactory.Build(false, "修改記錄發生例外異常", ex));
            }
        }
        async Task OhterDependencyData(WorkOrderAdapterModel data)
        {
            var user = await context.MyUser
                       .FirstOrDefaultAsync(x => x.Id == data.EngineerId);

            if (user != null)
            {
                data.EngineerName = user.Name;
            }
            return;
        }
        public async Task <VerifyRecordResult> BeforeUpdateCheckAsync(WorkOrderAdapterModel paraObject)
        {
            CleanTrackingHelper.Clean <WorkOrder>(context);
            var searchItem = await context.WorkOrder
                             .AsNoTracking()
                             .FirstOrDefaultAsync(x => x.Id == paraObject.Id);

            if (searchItem == null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.要更新的紀錄_發生同時存取衝突_已經不存在資料庫上));
            }

            return(VerifyRecordResultFactory.Build(true));
        }
        public async Task <VerifyRecordResult> BeforeAddCheckAsync(WorkOrderAdapterModel paraObject)
        {
            await Task.Yield();

            if (paraObject.CategoryMainId == 0)
            {
                return(VerifyRecordResultFactory.Build(false, "請選擇派工單主分類"));
            }
            if (paraObject.CategorySubId == 0)
            {
                return(VerifyRecordResultFactory.Build(false, "請選擇派工單次分類"));
            }
            return(VerifyRecordResultFactory.Build(true));
        }
        public async Task <WorkOrderAdapterModel> GetAsync(int id)
        {
            WorkOrder item = await context.WorkOrder
                             .Include(x => x.CategoryMain)
                             .Include(x => x.CategorySub)
                             .AsNoTracking()
                             .FirstOrDefaultAsync(x => x.Id == id);

            WorkOrderAdapterModel result = Mapper.Map <WorkOrderAdapterModel>(item);

            await OhterDependencyData(result);

            return(result);
        }
Example #7
0
 public async Task OnContextMenuClick(ContextMenuClickEventArgs <FlowMasterAdapterModel> args)
 {
     CurrentRecord = args.RowInfo.RowData;
     if (args.Item.Id == "查看來源記錄")
     {
         if (CurrentRecord.SourceType == FlowSourceTypeEnum.WorkOrder)
         {
             WorkOrderAdapterModel workOrderAdapterModel = JsonConvert
                                                           .DeserializeObject <WorkOrderAdapterModel>(CurrentRecord.SourceJson);
             CurrentWorkOrderAdapterModel = workOrderAdapterModel;
             ShowReviewWorkOrderDialog    = true;
         }
     }
     else if (args.Item.Id == "送審")
     {
         await SendAsync(CurrentRecord);
     }
 }
        public async Task <VerifyRecordResult> AddAsync(WorkOrderAdapterModel paraObject)
        {
            try
            {
                CleanTrackingHelper.Clean <WorkOrder>(context);
                WorkOrder itemParameter = Mapper.Map <WorkOrder>(paraObject);
                CleanTrackingHelper.Clean <WorkOrder>(context);
                await context.WorkOrder
                .AddAsync(itemParameter);

                await context.SaveChangesAsync();

                CleanTrackingHelper.Clean <WorkOrder>(context);
                return(VerifyRecordResultFactory.Build(true));
            }
            catch (Exception ex)
            {
                Logger.LogError(ex, "新增記錄發生例外異常");
                return(VerifyRecordResultFactory.Build(false, "新增記錄發生例外異常", ex));
            }
        }
        public async Task <VerifyRecordResult> BeforeDeleteCheckAsync(WorkOrderAdapterModel paraObject)
        {
            try
            {
                CleanTrackingHelper.Clean <WorkOrder>(context);

                var searchItem = await context.WorkOrder
                                 .AsNoTracking()
                                 .FirstOrDefaultAsync(x => x.Id == paraObject.Id);

                if (searchItem == null)
                {
                    return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.無法刪除紀錄_要刪除的紀錄已經不存在資料庫上));
                }

                return(VerifyRecordResultFactory.Build(true));
            }
            catch (Exception ex)
            {
                return(VerifyRecordResultFactory.Build(false, "刪除記錄發生例外異常", ex));
            }
        }
        public async Task ToolbarClickHandler(Syncfusion.Blazor.Navigations.ClickEventArgs args)
        {
            if (args.Item.Id == ButtonIdHelper.ButtonIdAdd)
            {
                CurrentRecord = new WorkOrderAdapterModel();
                #region 針對新增的紀錄所要做的初始值設定商業邏輯
                #endregion
                EditRecordDialogTitle = "新增紀錄";
                isNewRecordMode       = true;
                IsShowEditRecord      = true;

                CurrentRecord.CreatedAt = DateTime.Now;
                CurrentRecord.Status    = 0;
                CurrentRecord.Code      = UniqueStringHelper.GetCode();

                await GetCategoryMainAdapterModels();
            }
            else if (args.Item.Id == ButtonIdHelper.ButtonIdRefresh)
            {
                dataGrid.RefreshGrid();
            }
        }
        public async Task OnCommandClicked(CommandClickEventArgs <WorkOrderAdapterModel> args)
        {
            WorkOrderAdapterModel item = args.RowData as WorkOrderAdapterModel;

            if (args.CommandColumn.ButtonOption.IconCss == ButtonIdHelper.ButtonIdEdit)
            {
                #region 點選 修改紀錄 按鈕
                CurrentRecord         = item.Clone();
                EditRecordDialogTitle = "修改紀錄";
                IsShowEditRecord      = true;
                isNewRecordMode       = false;

                await GetCategoryMainAdapterModels();
                await GetCategorySubAdapterModels(item.CategoryMainId);

                thisView.NeedRefresh();
                #endregion
            }
            else if (args.CommandColumn.ButtonOption.IconCss == ButtonIdHelper.ButtonIdDelete)
            {
                #region 點選 刪除紀錄 按鈕
                CurrentNeedDeleteRecord = item;

                #region 檢查關聯資料是否存在
                var checkedResult = await CurrentService
                                    .BeforeDeleteCheckAsync(CurrentNeedDeleteRecord);

                await Task.Delay(100);

                if (checkedResult.Success == false)
                {
                    MessageBox.Show("400px", "200px", "警告",
                                    ErrorMessageMappingHelper.Instance.GetErrorMessage(checkedResult.MessageId),
                                    MessageBox.HiddenAsync);
                    await Task.Yield();

                    thisView.NeedRefresh();
                    return;
                }
                #endregion

                #region 刪除這筆紀錄
                await Task.Yield();

                var checkTask = ConfirmMessageBox.ShowAsync("400px", "200px", "警告",
                                                            "確認要刪除這筆紀錄嗎?", ConfirmMessageBox.HiddenAsync);
                thisView.NeedRefresh();
                var checkAgain = await checkTask;
                if (checkAgain == true)
                {
                    var verifyRecordResult = await CurrentService.DeleteAsync(CurrentNeedDeleteRecord.Id);

                    await TranscationResultHelper.CheckDatabaseResult(MessageBox, verifyRecordResult);

                    dataGrid.RefreshGrid();
                }
                #endregion
                #endregion
            }
            else if (args.CommandColumn.ButtonOption.IconCss == ButtonIdHelper.ButtonIdShowDetailOfMaster)
            {
                #region 點選 開啟多筆 CRUD 對話窗 按鈕
                IsShowMoreDetailsRecord          = true;
                ShowMoreDetailsRecordDialogTitle = MagicHelper.訂單明細管理功能名稱;
                MasterRecord masterRecord = new MasterRecord()
                {
                    Id = item.Id
                };
                Header = masterRecord;
                if (ShowMoreDetailsGrid != null)
                {
                    await Task.Delay(100); // 使用延遲,讓 Header 的資料綁定可以成功

                    ShowMoreDetailsGrid.RefreshGrid();
                }
                #endregion
            }
        }