Exemplo n.º 1
0
        /// <summary>
        /// 대시보드 테이블 html 양식을 업데이트한다.
        /// </summary>
        public FormHtmlTemplate UpdateFormHtmlTemplate(Guid formId, Guid templateId, IFormHtmlTemplateUpdatable fields)
        {
            using (var repo = new FormTableRepository())
            {
                var template = repo.SelectFormHtmlTemplate(formId, templateId);
                if (template == null)
                {
                    throw new ObjectNotFoundException($"업데이트 할 대상 대시보드 양식을 찾을 수 없습니다.\r\n양식 ID: \"{templateId}\"");
                }

                List <UpdatedField> updated = null;
                template.Update(fields, out updated);

                if (repo.UpdateFormHtmlTemplate(template))
                {
                    logger.Info($"대시보드 양식이 업데이트 되었습니다. 대시보드: \"{template.FormName}\""
                                + $"\r\n\r\n"
                                + $"updated: {UpdatedField.Print(updated)}"
                                + $"\r\n\r\n"
                                + $"{template}");

                    return(template);
                }

                return(null);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 대시보드 테이블을 업데이트한다.
        /// </summary>
        public FormTable UpdateFormTable(Guid formId, IFormTableUpdatable fields)
        {
            using (var repo = new FormTableRepository())
            {
                var formTable = repo.SelectFormTable(formId);
                if (formTable == null)
                {
                    throw new ObjectNotFoundException($"업데이트 할 대상 대시보드를 찾을 수 없습니다.\r\n대시보드 ID: \"{formId}\"");
                }

                List <UpdatedField> updated = null;
                formTable.Update(fields, out updated);

                if (repo.UpdateFormTable(formTable))
                {
                    logger.Info($"대시보드 정보가 업데이트 되었습니다. 대시보드: \"{formTable.Name}\""
                                + $"\r\n\r\n"
                                + $"updated: {UpdatedField.Print(updated)}"
                                + $"\r\n\r\n"
                                + $"{formTable}");

                    return(formTable);
                }

                return(null);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 대시보드 테이블 업무 영역을 업데이트한다. (필드만 업데이트한다.)
        /// </summary>
        public FormTableSection UpdateFormTableSectionFields(Guid formId, Guid formSectionId, IFormTableSectionUpdatable fields)
        {
            using (var repo = new FormTableRepository())
            {
                var formSection = repo.SelectFormTableSection(formId, formSectionId);
                if (formSection == null)
                {
                    throw new ObjectNotFoundException($"업데이트 할 대상 업무 영역을 찾을 수 없습니다.\r\n업무 영역 ID: \"{formSectionId}\"");
                }

                List <UpdatedField> updated = null;
                formSection.Update(fields, out updated);

                repo.BeginTransaction();

                try
                {
                    if (repo.UpdateFormTableSection(formSection, CurrentUser.UserId))
                    {
                        repo.InsertFormTableSectionGroupMembers(formId, formSectionId, fields.FileSourceUploaders, DateTimeOffset.Now);
                        repo.UpdateDateFileTemplate(formSection.FileTemplate);
                        repo.CommitTransaction();

                        logger.Info($"업무영이 업데이트 되었습니다. 업무영역: \"{formSection.FormSectionName}\""
                                    + $"\r\n\r\n"
                                    + $"updated: {UpdatedField.Print(updated)}"
                                    + $"\r\n\r\n"
                                    + $"{formSection}");

                        return(formSection);
                    }
                }
                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(null); // not reached
                }

                return(null);
            }
        }
Exemplo n.º 4
0
        UpdatedField getUpdatedField(FieldDefinition field)
        {
            int          token = field.MetadataToken.ToInt32();
            UpdatedField updatedField;

            if (updatedFields.TryGetValue(token, out updatedField))
            {
                return(updatedField);
            }
            return(updatedFields[token] = new UpdatedField(field));
        }
Exemplo n.º 5
0
        UpdatedField GetUpdatedField(FieldDef field)
        {
            int          token = field.MDToken.ToInt32();
            UpdatedField updatedField;

            if (updatedFields.TryGetValue(token, out updatedField))
            {
                return(updatedField);
            }
            return(updatedFields[token] = new UpdatedField(field));
        }
Exemplo n.º 6
0
        /// <summary>
        /// 대시보드 테이블 업무 영역을 업데이트한다.
        /// </summary>
        public FormTableSection UpdateFormTableSection(FormTableSection formSection, IEnumerable <string> fileSourceUploaders)
        {
            formSection.ThrowIfNull(nameof(formSection));

            using (var repo = new FormTableRepository())
            {
                var old = repo.SelectFormTableSection(formSection.FormId, formSection.FormSectionId);
                if (old == null)
                {
                    throw new ObjectNotFoundException($"업데이트될 업무영역을 찾을 수 없습니다. 업무영역: \"{formSection.FormSectionName}\""
                                                      + $"\r\n"
                                                      + $"업무영역 ID: {formSection.FileSourceId}");
                }

                repo.BeginTransaction();

                try
                {
                    var diff = old.Diff(formSection);

                    if (repo.UpdateFormTableSection(formSection, CurrentUser.UserId))
                    {
                        repo.InsertFormTableSectionGroupMembers(formSection.FormId, formSection.FormSectionId, fileSourceUploaders, DateTimeOffset.Now);

                        if (old.FileTemplateId != formSection.FileTemplateId)
                        {
                            repo.InsertDateFileTemplate(formSection.FileTemplate);
                        }
                        else
                        {
                            repo.UpdateDateFileTemplate(formSection.FileTemplate);
                        }

                        repo.CommitTransaction();

                        logger.Info($"업무영역이 업데이트 되었습니다. 업무영역: \"{formSection.FormSectionName}\""
                                    + $"\r\n\r\n"
                                    + $"updated: {UpdatedField.Print(diff)}"
                                    + $"\r\n\r\n"
                                    + $"{formSection}");

                        return(formSection);
                    }
                }
                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(null); // not reached
                }

                return(null);
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// 메뉴 아이템을 업데이트한다.
        /// </summary>
        public MenuItem UpdateMenu(Guid menuId, IMenuItemUpdatable fields)
        {
            using (var repo = new MenuRepository())
            {
                var menu = repo.SelectMenu(menuId);
                if (menu == null)
                {
                    throw new ObjectNotFoundException($"업데이트 대상 메뉴를 찾을 수 없습니다.\r\n메뉴 ID: \"{menuId}\"");
                }

                List <UpdatedField> updated = null;
                menu.Update(fields, out updated);

                repo.BeginTransaction();

                try
                {
                    if (repo.UpdateMenu(menu))
                    {
                        repo.UpdateMenuFormMap(menuId, fields.FormTables, DateTimeOffset.Now);
                        repo.CommitTransaction();

                        menu = repo.SelectMenu(menuId);

                        logger.Info(
                            $"메뉴 정보가 업데이트 되었습니다. 메뉴: \"{menu.Name}\""
                            + $"\r\n\r\n"
                            + $"Fields: {UpdatedField.Print(updated)}"
                            + $"\r\n\r\n"
                            + $"{menu}");

                        return(menu);
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex, $"메뉴 정보를 업데이트 하는 도중 알 수 없는 오류가 발생하였습니다. 메뉴: \"{menu.Name}\""
                                 + $"\r\n\r\n"
                                 + $"{menu}");

                    try
                    {
                        repo.RollBackTransaction();
                    }
                    catch (Exception rex)
                    {
                        logger.Fatal(ex, $"메뉴 정보 업데이트 함수에서 롤백 실행중 치명적인 에러가 발생했습니다. 메뉴: \"{menu.Name}\""
                                     + $"\r\n\r\n"
                                     + $"{menu}");

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

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

                return(null);
            }
        }