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