Exemplo n.º 1
0
        public static bool NHibernateStaleObjectStateExceptionHandler(Exception exception, IApplicationInfo application, UserBase user, IInteractiveMessage interactiveMessage)
        {
            var staleObjectStateException = ExceptionHelper.FindExceptionTypeInInner <NHibernate.StaleObjectStateException>(exception);

            if (staleObjectStateException != null)
            {
                var type       = OrmConfig.FindMappingByFullClassName(staleObjectStateException.EntityName).MappedClass;
                var objectName = DomainHelper.GetSubjectNames(type);

                string message;

                switch (objectName?.Gender)
                {
                case GrammaticalGender.Feminine:
                    message = "Сохраняемая <b>{0}</b> c номером <b>{1}</b> была кем то изменена.";
                    break;

                case GrammaticalGender.Neuter:
                    message = "Сохраняемое <b>{0}</b> c номером <b>{1}</b> было кем то изменено.";
                    break;

                case GrammaticalGender.Masculine:
                default:
                    message = "Сохраняемый <b>{0}</b> c номером <b>{1}</b> был кем то изменен.";
                    break;
                }
                message = String.Format(message + "\nВаши изменения не будут записаны, чтобы не потерять чужие изменения. \nПереоткройте вкладку.", objectName?.Nominative ?? type.Name, staleObjectStateException.Identifier);

                interactiveMessage.ShowMessage(QS.Dialog.ImportanceLevel.Warning, message);
                return(true);
            }
            return(false);
        }
        public static void ShowExceptionMessage(Exception ex)
        {
            if (ex is StaleObjectStateException staleObjectStateException)
            {
                var type       = OrmConfig.FindMappingByFullClassName(staleObjectStateException.EntityName).MappedClass;
                var objectName = DomainHelper.GetSubjectNames(type);

                string message;

                switch (objectName.Gender)
                {
                case GrammaticalGender.Feminine:
                    message = "Сохраняемая <b>{0}</b> c номером <b>{1}</b> была кем то изменена.";
                    break;

                case GrammaticalGender.Neuter:
                    message = "Сохраняемое <b>{0}</b> c номером <b>{1}</b> было кем то изменено.";
                    break;

                case GrammaticalGender.Masculine:
                default:
                    message = "Сохраняемый <b>{0}</b> c номером <b>{1}</b> был кем то изменен.";
                    break;
                }
                message = String.Format(message + "\nВаши изменения не будут записаны, чтобы не потерять чужие изменения. \nПереоткройте вкладку.", objectName?.Nominative ?? type.Name, staleObjectStateException.Identifier);

                MessageDialogHelper.RunErrorDialog(message);
            }
        }