Beispiel #1
0
        public DR_ResultDelete SendDeleteRequest(DR_DeleteRequest request)
        {
            EditRequestManager requestManager = new EditRequestManager();

            return(requestManager.Process(request as DR_DeleteRequest));
        }
        public DR_ResultDelete Process(DR_DeleteRequest request)
        {
            DR_ResultDelete result           = new DR_ResultDelete();
            var             itemsAndQueries  = deleteQueryItemManager.GetDeleteQueryItems(request.Requester, request.DataItems);
            var             editQueryResults = new List <EditQueryResultItem>();

            foreach (var item in itemsAndQueries)
            {
                foreach (var childitem in item.Item2)
                {
                    editQueryResults.Add(new EditQueryResultItem(childitem));
                }
            }
            //کاملا مثل ادیت .یکی شوند
            var allQueryItems = editQueryResults.Select(x => x.QueryItem).ToList();

            if (allQueryItems.Any(x => string.IsNullOrEmpty(x.Query)))
            {
                throw new Exception("sdfsdf");
            }

            CheckPermissoinToEdit(request.Requester, result, allQueryItems);
            if (result.Result == Enum_DR_ResultType.ExceptionThrown)
            {
                return(result);
            }

            actionActivityManager.DoBeforeDeleteActionActivities(request.Requester, editQueryResults);
            if (editQueryResults.Any(x => x.BeforeSaveActionActivitiesResult == Enum_DR_SimpleResultType.ExceptionThrown))
            {
                var exceptionItem = editQueryResults.First(x => x.BeforeSaveActionActivitiesResult == Enum_DR_SimpleResultType.ExceptionThrown);
                result.Result = Enum_DR_ResultType.ExceptionThrown;
                var logResult = bizLogManager.AddLog(GetBeforeDeleteExceptionLog(exceptionItem), request.Requester);
                if (!string.IsNullOrEmpty(logResult))
                {
                    result.Details.Add(ToResultDetail("خطا در ثبت لاگ", "", logResult));
                }
                result.Details.Add(ToResultDetail(exceptionItem.QueryItem.DataItem.ViewInfo, "فعالیتهای قبل از ذخیره شدن داده با خطا همراه بود", exceptionItem.BeforeSaveActionActivitiesMessage));
            }
            else
            {
                var transactionresult = ConnectionManager.ExecuteTransactionalQueryItems(allQueryItems);
                if (transactionresult.Successful)
                {
                    actionActivityManager.DoAfterEditActionActivities(request.Requester, editQueryResults);
                    var logResult = bizLogManager.AddLogs(GetUpdateDataSuccessfulLogs(editQueryResults), request.Requester);
                    if (!string.IsNullOrEmpty(logResult))
                    {
                        result.Details.Add(ToResultDetail("خطا در ثبت لاگ", "", logResult));
                    }

                    if (editQueryResults.Any(x => x.AfterSaveActionActivitiesResult == Enum_DR_SimpleResultType.ExceptionThrown))
                    {
                        result.Result = Enum_DR_ResultType.JustMajorFunctionDone;
                        foreach (var item in editQueryResults.Where(x => x.AfterSaveActionActivitiesResult == Enum_DR_SimpleResultType.ExceptionThrown))
                        {
                            result.Details.Add(ToResultDetail(item.QueryItem.DataItem.ViewInfo, "فعالیتهای بعد از ذخیره شدن داده با خطا همراه بود", item.AfterSaveActionActivitiesMessage));
                        }
                    }
                    else
                    {
                        result.Result = Enum_DR_ResultType.SeccessfullyDone;
                    }
                }
                else
                {
                    result.Result = Enum_DR_ResultType.ExceptionThrown;
                    if (editQueryResults.Any(x => x.DataUpdateResult == Enum_DR_SimpleResultType.ExceptionThrown))
                    {
                        foreach (var item in transactionresult.QueryItems.Where(x => x.Exception != null))
                        {
                            editQueryResults.First(x => x.QueryItem == item.QueryItem).DataUpdateMessage = item.Exception.Message;
                            editQueryResults.First(x => x.QueryItem == item.QueryItem).DataUpdateResult  = Enum_DR_SimpleResultType.ExceptionThrown;
                        }
                        var exceptionItem = editQueryResults.First(x => x.DataUpdateResult == Enum_DR_SimpleResultType.ExceptionThrown);
                        var logResult     = bizLogManager.AddLog(GetUpdateDataExceptionLog(exceptionItem), request.Requester);
                        if (!string.IsNullOrEmpty(logResult))
                        {
                            result.Details.Add(ToResultDetail("خطا در ثبت لاگ", "", logResult));
                        }
                        result.Details.Add(ToResultDetail(exceptionItem.QueryItem.DataItem.ViewInfo, "ذخیره شدن داده با خطا همراه بود", exceptionItem.DataUpdateMessage));
                    }
                    else
                    {
                        result.Details.Add(ToResultDetail("خطای عمومی ثبت", "ذخیره شدن داده با خطا همراه بود", transactionresult.Message));
                    }
                }
            }

            return(result);
        }
        private void View_ButtonClicked(object sender, ConfirmModeClickedArg e)
        {
            I_ViewDeleteInquiry view = sender as I_ViewDeleteInquiry;

            if (view != null)
            {
                if (e.Result == UserDialogResult.Ok || e.Result == UserDialogResult.No)
                {
                    AgentUICoreMediator.GetAgentUICoreMediator.UIManager.CloseDialog(view);
                }
                else if (e.Result == UserDialogResult.Yes)
                {
                    AgentUICoreMediator.GetAgentUICoreMediator.UIManager.CloseDialog(view);
                    var requester            = AgentUICoreMediator.GetAgentUICoreMediator.GetRequester();
                    DR_DeleteRequest request = new DR_DeleteRequest(requester);
                    request.DataItems = dataList;

                    var reuslt = AgentUICoreMediator.GetAgentUICoreMediator.requestRegistration.SendDeleteRequest(request);
                    if (reuslt.Result == Enum_DR_ResultType.SeccessfullyDone)
                    {
                        AgentUICoreMediator.GetAgentUICoreMediator.UIManager.ShowInfo(EditArea.SimpleEntity.Alias + " : " + "عملیات حذف با موفقیت انجام شد", reuslt.Details, MyUILibrary.Temp.InfoColor.Green);
                    }
                    else if (reuslt.Result == Enum_DR_ResultType.JustMajorFunctionDone)
                    {
                        AgentUICoreMediator.GetAgentUICoreMediator.UIManager.ShowInfo(EditArea.SimpleEntity.Alias + " : " + "عملیات حذف با موفقیت انجام شد اما برخی عملیات جانبی کامل انجام نشد", reuslt.Details, MyUILibrary.Temp.InfoColor.Blue);
                    }
                    else if (reuslt.Result == Enum_DR_ResultType.ExceptionThrown)
                    {
                        AgentUICoreMediator.GetAgentUICoreMediator.UIManager.ShowInfo(EditArea.SimpleEntity.Alias + " : " + "عملیات حذف با خطا همراه بود", reuslt.Details, MyUILibrary.Temp.InfoColor.Red);
                    }

                    if (reuslt.Result == Enum_DR_ResultType.SeccessfullyDone)
                    {
                        if (EditArea.AreaInitializer.DataMode == DataMode.One)
                        {
                            (EditArea as I_EditEntityAreaOneData).ClearData(true);
                        }
                        else if (EditArea.AreaInitializer.DataMode == DataMode.Multiple)
                        {
                            (EditArea as I_EditEntityAreaMultipleData).ClearData(false);
                        }
                    }
                    //if (reuslt.ResultItems.All(x => x.Result == Enum_DR_ResultType.SeccessfullyDone))
                    //{
                    //    AgentUICoreMediator.GetAgentUICoreMediator.UIManager.ShowMessage("", "عملیات حذف داده/داده های منتخب با موفقیت انجام شد");
                    //}
                    //else if (reuslt.ResultItems.Any(x => x.Result == Enum_DR_ResultType.SeccessfullyDone)
                    //    && reuslt.ResultItems.Any(x => x.Result == Enum_DR_ResultType.ExceptionThrown))
                    //{
                    //    AgentUICoreMediator.GetAgentUICoreMediator.UIManager.ShowMessage("", "عملیات حذف برخی از داده ها با موفقیت و برخی با خطا همراه بود");
                    //}
                    //else if (reuslt.ResultItems.All(x => x.Result == Enum_DR_ResultType.ExceptionThrown))
                    //{
                    //    AgentUICoreMediator.GetAgentUICoreMediator.UIManager.ShowMessage("", "به علت وقوع خطا عملیات حذف داده/داده های منتخب انجام نشد");
                    //}
                    //foreach (var item in reuslt.ResultItems)
                    //{
                    //    DP_DataRepository data = AgentHelper.GetEquivalentDataItem(EditArea, item.DataItem);

                    //    if (item.Result == Enum_DR_ResultType.ExceptionThrown)
                    //    {
                    //        AgentUICoreMediator.GetAgentUICoreMediator.UIManager.ShowInfo("خطا در حذف" + " " + data.ViewInfo, item.Message, MyUILibrary.Temp.InfoColor.Green);

                    //    }
                    //    else if (item.Result == Enum_DR_ResultType.SeccessfullyDone)
                    //    {
                    //        if (EditArea.AreaInitializer.DataMode == DataMode.One)
                    //            (EditArea as I_EditEntityAreaOneData).ClearData(true, true);
                    //        else if (EditArea.AreaInitializer.DataMode == DataMode.Multiple)
                    //        {
                    //            (EditArea as I_EditEntityAreaMultipleData).RemoveData(data, true);
                    //        }
                    //    }
                    //}
                }
            }
        }