Beispiel #1
0
        public async Task <OrderAdapterModel> GetAsync(int id)
        {
            Order item = await context.Order
                         .AsNoTracking()
                         .FirstOrDefaultAsync(x => x.Id == id);

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

            await OhterDependencyData(result);

            return(result);
        }
        public async Task <IActionResult> Put([FromRoute] int id, [FromBody] OrderDto data)
        {
            APIResult apiResult;

            #region 驗證 DTO 物件的資料一致性
            if (!ModelState.IsValid)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK,
                                                   ErrorMessageEnum.傳送過來的資料有問題, payload: data);
                return(Ok(apiResult));
            }
            #endregion

            var record = await OrderService.GetAsync(id);

            if (record != null && record.Id != 0)
            {
                OrderAdapterModel recordTarget = mapper.Map <OrderAdapterModel>(data);
                recordTarget.Id = id;
                var result = mapper.Map <OrderDto>(recordTarget);

                #region 修改記錄前的紀錄完整性檢查
                VerifyRecordResult verify = await OrderService.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 OrderService.UpdateAsync(recordTarget);

                if (verifyRecordResult.Success)
                {
                    apiResult = APIResultFactory.Build(true, StatusCodes.Status202Accepted,
                                                       ErrorMessageEnum.None, payload: null);
                }
                else
                {
                    apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK,
                                                       verifyRecordResult.MessageId, payload: result);
                }
            }
            else
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK,
                                                   ErrorMessageEnum.沒有任何符合資料存在, payload: data);
            }
            return(Ok(apiResult));
        }
Beispiel #3
0
        public async Task <VerifyRecordResult> BeforeAddCheckAsync(OrderAdapterModel paraObject)
        {
            var searchItem = await context.Order
                             .AsNoTracking()
                             .FirstOrDefaultAsync(x => x.Name == paraObject.Name);

            if (searchItem != null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.要新增的紀錄已經存在無法新增));
            }
            return(VerifyRecordResultFactory.Build(true));
        }
Beispiel #4
0
        public async Task <VerifyRecordResult> BeforeDeleteCheckAsync(OrderAdapterModel paraObject)
        {
            CleanTrackingHelper.Clean <OrderItem>(context);
            OrderItem item = await context.OrderItem
                             .AsNoTracking()
                             .FirstOrDefaultAsync(x => x.OrderId == paraObject.Id);

            if (item != null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.該紀錄無法刪除因為有其他資料表在使用中));
            }
            return(VerifyRecordResultFactory.Build(true));
        }
Beispiel #5
0
        public async Task OnCommandClicked(CommandClickEventArgs <OrderAdapterModel> args)
        {
            OrderAdapterModel item = args.RowData as OrderAdapterModel;

            if (args.CommandColumn.ButtonOption.IconCss == ButtonIdHelper.ButtonIdEdit)
            {
                CurrentRecord         = item.Clone();
                EditRecordDialogTitle = "修改紀錄";
                IsShowEditRecord      = true;
                isNewRecordMode       = false;
            }
            else if (args.CommandColumn.ButtonOption.IconCss == ButtonIdHelper.ButtonIdDelete)
            {
                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));
                    await Task.Yield();

                    thisRazorComponent.NeedRefresh();
                    return;
                }
                #endregion

                ConfirmMessageBox.Show("400px", "200px", "警告", "確認要刪除這筆紀錄嗎?");
            }
            else if (args.CommandColumn.ButtonOption.IconCss == ButtonIdHelper.ButtonIdShowDetailOfMaster)
            {
                IsShowMoreDetailsRecord          = true;
                ShowMoreDetailsRecordDialogTitle = MagicHelper.訂單明細管理功能名稱;
                MasterRecord masterRecord = new MasterRecord()
                {
                    Id = item.Id
                };
                Header = masterRecord;
                if (ShowMoreDetailsGrid != null)
                {
                    await Task.Delay(100); // 使用延遲,讓 Header 的資料綁定可以成功

                    ShowMoreDetailsGrid.RefreshGrid();
                }
            }
        }
Beispiel #6
0
 public void ToolbarClickHandler(Syncfusion.Blazor.Navigations.ClickEventArgs args)
 {
     if (args.Item.Text == "新增")
     {
         CurrentRecord         = new OrderAdapterModel();
         EditRecordDialogTitle = "新增紀錄";
         isNewRecordMode       = true;
         IsShowEditRecord      = true;
     }
     else if (args.Item.Text == "重新整理")
     {
         dataGrid.RefreshGrid();
     }
 }
        public async Task <IActionResult> Post([FromBody] OrderDto data)
        {
            APIResult apiResult;

            #region 驗證 DTO 物件的資料一致性
            if (!ModelState.IsValid)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK,
                                                   ErrorMessageEnum.傳送過來的資料有問題, payload: data);
                return(Ok(apiResult));
            }
            #endregion

            OrderAdapterModel record = mapper.Map <OrderAdapterModel>(data);
            if (record != null)
            {
                var result = mapper.Map <OrderDto>(record);

                #region 新增記錄前的紀錄完整性檢查
                VerifyRecordResult verify = await OrderService.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 OrderService.AddAsync(record);

                if (verifyRecordResult.Success)
                {
                    apiResult = APIResultFactory.Build(true, StatusCodes.Status201Created,
                                                       ErrorMessageEnum.None, payload: null);
                }
                else
                {
                    apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK,
                                                       verifyRecordResult.MessageId, payload: record);
                }
            }
            else
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status200OK,
                                                   ErrorMessageEnum.傳送過來的資料有問題, payload: data);
            }
            return(Ok(apiResult));
        }
Beispiel #8
0
        public async Task <VerifyRecordResult> AddAsync(OrderAdapterModel paraObject)
        {
            CleanTrackingHelper.Clean <Order>(context);
            Order itemParameter = Mapper.Map <Order>(paraObject);

            CleanTrackingHelper.Clean <Order>(context);
            await context.Order
            .AddAsync(itemParameter);

            await context.SaveChangesAsync();

            CleanTrackingHelper.Clean <Order>(context);
            return(VerifyRecordResultFactory.Build(true));
        }
Beispiel #9
0
 public void ToolbarClickHandler(Syncfusion.Blazor.Navigations.ClickEventArgs args)
 {
     if (args.Item.Id == ButtonIdHelper.ButtonIdAdd)
     {
         CurrentRecord = new OrderAdapterModel();
         #region 針對新增的紀錄所要做的初始值設定商業邏輯
         #endregion
         EditRecordDialogTitle = "新增紀錄";
         isNewRecordMode       = true;
         IsShowEditRecord      = true;
     }
     else if (args.Item.Id == ButtonIdHelper.ButtonIdRefresh)
     {
         dataGrid.RefreshGrid();
     }
 }
Beispiel #10
0
        public void OnCommandClicked(CommandClickEventArgs <OrderAdapterModel> args)
        {
            OrderAdapterModel item = args.RowData as OrderAdapterModel;

            if (args.CommandColumn.ButtonOption.Content == "修改")
            {
                CurrentRecord         = item;
                EditRecordDialogTitle = "修改紀錄";
                IsShowEditRecord      = true;
                isNewRecordMode       = false;
            }
            else if (args.CommandColumn.ButtonOption.Content == "刪除")
            {
                #region 檢查關聯資料是否存在
                #endregion
                CurrentNeedDeleteRecord = item;
                ConfirmMessageBox.Show("400px", "200px", "警告", "確認要刪除這筆紀錄嗎?");
            }
        }
Beispiel #11
0
        public async Task <VerifyRecordResult> UpdateAsync(OrderAdapterModel paraObject)
        {
            Order itemData = Mapper.Map <Order>(paraObject);

            CleanTrackingHelper.Clean <Order>(context);
            Order item = await context.Order
                         .AsNoTracking()
                         .FirstOrDefaultAsync(x => x.Id == paraObject.Id);

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

                CleanTrackingHelper.Clean <Order>(context);
                return(VerifyRecordResultFactory.Build(true));
            }
        }
Beispiel #12
0
 Task OhterDependencyData(OrderAdapterModel data)
 {
     return(Task.FromResult(0));
 }