Example #1
0
        //     RequestManager requestManager = new RequestManager();
        //public DR_ResultRequest RecieveRequest(DR_Request request)
        //{
        //    var requestManager = new RequestProcessManager();
        //    return requestManager.ProcessRequest(request);
        //}

        public DR_ResultEdit SendEditRequest(DR_EditRequest request)
        {
            EditRequestManager requestManager = new MyDataEditManagerBusiness.EditRequestManager();

            return(requestManager.Process(request));
        }
        public DR_ResultEdit Process(DR_EditRequest request)
        {
            DR_ResultEdit result = new DR_ResultEdit();
            var           preEditQueryResults = new List <EditQueryPreItem>();

            foreach (var item in request.EditPackages)
            {
                preEditQueryResults.Add(new EditQueryPreItem(item));
            }

            actionActivityManager.DoBeforeEditActionActivities(request.Requester, preEditQueryResults);
            if (preEditQueryResults.Any(x => x.BeforeSaveActionActivitiesResult == Enum_DR_SimpleResultType.ExceptionThrown))
            {
                var exceptionItem = preEditQueryResults.First(x => x.BeforeSaveActionActivitiesResult == Enum_DR_SimpleResultType.ExceptionThrown);
                result.Result = Enum_DR_ResultType.ExceptionThrown;
                var logResult = bizLogManager.AddLog(GetBeforeSaveExceptionLog(exceptionItem), request.Requester);
                if (!string.IsNullOrEmpty(logResult))
                {
                    result.Details.Add(ToResultDetail("خطا در ثبت لاگ", "", logResult));
                }
                result.Details.Add(ToResultDetail(exceptionItem.DataItem.ViewInfo, "فعالیتهای قبل از ذخیره شدن داده با خطا همراه بود", exceptionItem.BeforeSaveActionActivitiesMessage));
            }
            else
            {
                //var internalResult = GetInternalResult(request as DR_EditRequest);
                var allQueryItems = editQueryItemManager.GetQueryItems(request.Requester, request.EditPackages);
                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);
                }

                var editQueryResults = new List <EditQueryResultItem>();
                foreach (var item in allQueryItems)
                {
                    editQueryResults.Add(new EditQueryResultItem(item));
                }

                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));
                        }

                        foreach (var item in request.EditPackages)
                        {
                            var baseData          = new DP_BaseData(item.TargetEntityID, item.TargetEntityAlias);
                            var listKeyProperties = new List <EntityInstanceProperty>();
                            if (item.IsNewItem && item.KeyProperties.Any(x => x.IsIdentity))
                            {
                                var dataItem = editQueryResults.First(x => x.QueryItem.DataItem == item).QueryItem.DataItem;
                                foreach (var key in dataItem.KeyProperties)
                                {
                                    baseData.Properties.Add(key);
                                }
                            }
                            else
                            {
                                foreach (var key in item.KeyProperties)
                                {
                                    baseData.Properties.Add(key);
                                }
                            }
                            result.UpdatedItems.Add(baseData);
                        }

                        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 ConfirmUpdateForm_Decided(object sender, ConfirmUpdateDecision e)
        {
            if (e.Confirm)
            {
                var            requester = AgentUICoreMediator.GetAgentUICoreMediator.GetRequester();
                DR_EditRequest request   = new DR_EditRequest(requester);
                request.EditPackages = Datas;

                var reuslt = AgentUICoreMediator.GetAgentUICoreMediator.requestRegistration.SendEditRequest(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 ||
                    reuslt.Result == Enum_DR_ResultType.JustMajorFunctionDone)
                {
                    DP_SearchRepository searchDataItem = new DP_SearchRepository(EditArea.AreaInitializer.EntityID);
                    foreach (var item in reuslt.UpdatedItems)
                    {
                        var            listProperties = new List <EntityInstanceProperty>();
                        LogicPhraseDTO logicPhrase    = new LogicPhraseDTO();
                        foreach (var keyProperty in item.KeyProperties)
                        {
                            logicPhrase.Phrases.Add(new SearchProperty()
                            {
                                ColumnID = keyProperty.ColumnID, Value = keyProperty.Value
                            });
                        }
                        searchDataItem.AndOrType = AndOREqualType.Or;
                        searchDataItem.Phrases.Add(logicPhrase);
                    }
                    ///   var requestSearchEdit = new DR_SearchEditRequest(requester, searchDataItem, EditArea.AreaInitializer.SecurityReadOnly, true);
                    var requestSearchEdit = new DR_SearchEditRequest(requester, searchDataItem);
                    var results           = AgentUICoreMediator.GetAgentUICoreMediator.requestRegistration.SendSearchEditRequest(requestSearchEdit);
                    if (results.ResultDataItems.Count > 0)
                    {
                        if (EditArea is I_EditEntityAreaOneData)
                        {
                            (EditArea as I_EditEntityAreaOneData).ClearData(false);

                            var data = results.ResultDataItems[0];
                            data.DataView = EditArea.AreaInitializer.EditAreaDataManager.GetDataView(data);
                            var addResult = (EditArea as I_EditEntityAreaOneData).AddData(data, true);
                            if (!addResult)
                            {
                                AgentUICoreMediator.GetAgentUICoreMediator.UIManager.ShowInfo("عدم دسترسی به داده و یا داده های وابسته", results.ResultDataItems[0].ViewInfo, Temp.InfoColor.Red);
                            }
                        }
                        else if (EditArea is I_EditEntityAreaMultipleData)
                        {
                            (EditArea as I_EditEntityAreaMultipleData).ClearData(false);
                            foreach (var data in results.ResultDataItems)
                            {
                                data.DataView = EditArea.AreaInitializer.EditAreaDataManager.GetDataView(data);
                                var addResult = (EditArea as I_EditEntityAreaMultipleData).AddData(data, true);
                                if (!addResult)
                                {
                                    AgentUICoreMediator.GetAgentUICoreMediator.UIManager.ShowInfo("عدم دسترسی به داده و یا داده های وابسته", results.ResultDataItems[0].ViewInfo, Temp.InfoColor.Red);
                                }
                            }
                        }
                    }
                    else
                    {
                        AgentUICoreMediator.GetAgentUICoreMediator.UIManager.ShowInfo("عدم دسترسی به داده", "", Temp.InfoColor.Red);
                        (EditArea as BaseEditEntityArea).ClearData(true);
                    }
                }
            }
            AgentUICoreMediator.GetAgentUICoreMediator.UIManager.CloseDialog(sender);
        }