예제 #1
0
        /// <summary>
        /// 대시보드 테이블 업무 영역을 추가한다.
        /// </summary>
        public bool AddFormTableSection(FormTableSection formSection, IEnumerable <string> fileSourceUploaders)
        {
            using (var repo = new FormTableRepository())
            {
                repo.BeginTransaction();

                try
                {
                    if (repo.InsertFormTableSection(formSection))
                    {
                        repo.InsertFormTableSectionGroupMembers(formSection.FormId, formSection.FormSectionId, fileSourceUploaders, formSection.CreatedDate);

                        if (formSection.FileTemplate != null)
                        {
                            repo.InsertDateFileTemplate(formSection.FileTemplate);
                        }
                        else
                        {
                            logger.Warn($"업무영역 정보로부터 파일 템플릿 정보를 찾을 수 없습니다. 업무영역: \"{formSection.FormSectionName}\""
                                        + $"\r\n\r\n"
                                        + $"{formSection}");
                        }

                        repo.CommitTransaction();

                        logger.Info($"새 업무영역을 추가하였습니다. 업무영역: \"{formSection.FormSectionName}\""
                                    + $"\r\n\r\n"
                                    + $"{formSection}");

                        return(true);
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex, $"업무영역 추가 중 알 수 없는 오류가 발생하였습니다. 업무영역: \"{formSection.FormName}/{formSection.FormSectionName}\""
                                 + $"\r\n\r\n"
                                 + $"{formSection}");

                    try
                    {
                        repo.RollBackTransaction();
                    }
                    catch (Exception rex)
                    {
                        logger.Fatal(ex, $"업무영역 추가 함수에서 롤백 실행중 치명적인 에러가 발생했습니다. 업무영역: \"{formSection.FormName}/{formSection.FormSectionName}\""
                                     + $"\r\n\r\n"
                                     + $"{formSection}");

                        ExceptionDispatchInfo.Capture(rex).Throw();
                        // not reached
                    }

                    ExceptionDispatchInfo.Capture(ex).Throw();
                    return(false); // not reached
                }

                return(false);
            }
        }