/// <summary> /// 대시보드 테이블 아이템을 반환한다. /// </summary> public FormTable SelectFormTable(Guid formId) { string procCommandName = "up_FormTable_Select"; try { var command = Connection.GetStoredProcCommand(procCommandName); Connection.AddInParameter(command, "FormID", DbType.Guid, formId); using (DataSet ds = Connection.ExecuteDataSet(command)) { ValidateTableCount(ds, 2); // 1. 대시보드 테이블 if (ds.Tables[0].Rows.Count > 0) { var form = FormTable.ParseFrom(ds.Tables[0].Rows[0]); // 2. 대시보드 테이블 양식 if (ds.Tables[1].Rows.Count > 0) { form.HtmlTemplate = FormHtmlTemplate.ParseFrom(ds.Tables[1].Rows[0]); } return(form); } return(null); } } catch (Exception ex) { throw new DataException($"프로시져 실행 중 예기치 못한 에러가 발생했습니다.\r\n 프로시저: \"{procCommandName}\"", ex); } }
/// <summary> /// 페이징 처리된 대시보드 테이블 리스트를 반환한다. /// </summary> public PagedModel <FormTable> SelectFormTablePagedList(PagingOption option) { string procCommandName = "up_FormTable_SelectPagedList"; try { var command = Connection.GetStoredProcCommand(procCommandName); Connection.AddInParameter(command, "PageNumber", DbType.Int32, option.PageNumber); Connection.AddInParameter(command, "PageCount", DbType.Int32, option.PageCount); Connection.AddInParameter(command, "SortBy", DbType.String, option.SortBy); Connection.AddInParameter(command, "OrderBy", DbType.String, option.OrderBy.ToEnumMemberString()); using (DataSet ds = Connection.ExecuteDataSet(command)) { ValidateTableCount(ds, 2); var result = new PagedModel <FormTable>(option) { PagingOption = option }; int totalCount = 0; // 1. 대시보드 테이블 리스트 foreach (DataRow dr in ds.Tables[0].Rows) { var form = FormTable.ParseFrom(dr, out totalCount); result.Items.Add(form); } // 2. 대시보드 테이블 양식 리스트 foreach (DataRow dr in ds.Tables[1].Rows) { var template = FormHtmlTemplate.ParseFrom(dr); var forms = result.Items.FindAll(o => o.FormId == template.FormId && o.HtmlTemplateId == template.HtmlTemplateId); if (forms.Any()) { forms.ForEach(o => { o.HtmlTemplate = template; }); } } result.TotalCount = totalCount; return(result); } } catch (Exception ex) { throw new DataException($"프로시져 실행 중 예기치 못한 에러가 발생했습니다.\r\n 프로시저: \"{procCommandName}\"", ex); } }
/// <summary> /// 페이징 처리된 메뉴 리스트를 반환한다. /// </summary> public PagedModel <MenuItem> SelectMenuPagedList(PagingOption option) { string procCommandName = "up_Menu_SelectPagedList"; try { var command = Connection.GetStoredProcCommand(procCommandName); Connection.AddInParameter(command, "PageNumber", DbType.Int32, option.PageNumber); Connection.AddInParameter(command, "PageCount", DbType.Int32, option.PageCount); Connection.AddInParameter(command, "SortBy", DbType.String, option.SortBy); Connection.AddInParameter(command, "OrderBy", DbType.String, option.OrderBy.ToEnumMemberString()); using (DataSet ds = Connection.ExecuteDataSet(command)) { ValidateTableCount(ds, 2); var result = new PagedModel <MenuItem>(option) { PagingOption = option }; int totalCount = 0; // 메뉴 정보 foreach (DataRow dr1 in ds.Tables[0].Rows) { var menu = MenuItem.ParseFrom(dr1, out totalCount); result.Items.Add(menu); // 메뉴와 매핑된 대시보드 테이블 정보 foreach (DataRow dr2 in ds.Tables[1].Rows) { var formTableMenuId = dr2.Get <Guid>("MenuId"); if (formTableMenuId == menu.MenuId) { menu.FormTables.Add(FormTable.ParseFrom(dr2)); } } } result.TotalCount = totalCount; return(result); } } catch (Exception ex) { throw new DataException($"프로시져 실행 중 예기치 못한 에러가 발생했습니다.\r\n 프로시저: \"{procCommandName}\"", ex); } }
/// <summary> /// 메뉴 아이템을 반환한다. /// </summary> public MenuItem SelectMenu(Guid menuId) { string procCommandName = "up_Menu_Select"; try { var command = Connection.GetStoredProcCommand(procCommandName); Connection.AddInParameter(command, "MenuID", DbType.Guid, menuId); using (DataSet ds = Connection.ExecuteDataSet(command)) { ValidateTableCount(ds, 2); MenuItem menu = null; // 메뉴 정보 if (ds.Tables[0].Rows.Count > 0) { menu = MenuItem.ParseFrom(ds.Tables[0].Rows[0]); // 메뉴와 매핑된 대시보드 테이블 정보 foreach (DataRow dr in ds.Tables[1].Rows) { var formTable = FormTable.ParseFrom(dr); var formTableMenuId = dr.Get <Guid>("MenuId"); if (formTableMenuId == menu.MenuId) { menu.FormTables.Add(formTable); } else { logger.Warn($"대상 메뉴 ID와 대시보드 테이블이 매핑된 메뉴의 ID가 서로 일치하지 않습니다." + $"\r\n* 대상 메뉴: {menu}" + $"\r\n* 대상 대시보드 테이블: {formTable}" + $"\r\n* 대상 대시보드 테이블이 매핑된 메뉴 ID: '{formTableMenuId}'"); } } } return(menu); } } catch (Exception ex) { throw new DataException($"프로시져 실행 중 예기치 못한 에러가 발생했습니다.\r\n 프로시저: \"{procCommandName}\"", ex); } }
/// <summary> /// 대시보드 테이블 리스트를 반환한다. /// </summary> /// <param name="queryUserId">값이 있는 경우, 해당 유저가 접근 가능한 데이터만 반환</param> public IEnumerable <FormTable> SelectFormTableList(string queryUserId = null) { string procCommandName = "up_FormTable_SelectList"; try { var command = Connection.GetStoredProcCommand(procCommandName); Connection.AddInParameter(command, "QueryUserID", DbType.String, queryUserId); using (DataSet ds = Connection.ExecuteDataSet(command)) { ValidateTableCount(ds, 2); var result = new List <FormTable>(); // 1. 대시보드 테이블 리스트 foreach (DataRow dr in ds.Tables[0].Rows) { var form = FormTable.ParseFrom(dr); result.Add(form); } // 2. 대시보드 테이블 양식 리스트 foreach (DataRow dr in ds.Tables[1].Rows) { var template = FormHtmlTemplate.ParseFrom(dr); var forms = result.FindAll(o => o.FormId == template.FormId && o.HtmlTemplateId == template.HtmlTemplateId); if (forms.Any()) { forms.ForEach(o => { o.HtmlTemplate = template; }); } } return(result); } } catch (Exception ex) { throw new DataException($"프로시져 실행 중 예기치 못한 에러가 발생했습니다.\r\n 프로시저: \"{procCommandName}\"", ex); } }
/// <summary> /// 메뉴 리스트를 반환한다. /// </summary> public IEnumerable <MenuItem> SelectMenuList(string queryUserId = null) { string procCommandName = "up_Menu_SelectList"; try { var command = Connection.GetStoredProcCommand(procCommandName); Connection.AddInParameter(command, "QueryUserID", DbType.String, queryUserId); using (DataSet ds = Connection.ExecuteDataSet(command)) { ValidateTableCount(ds, 2); var list = new List <MenuItem>(); // 메뉴 정보 foreach (DataRow dr1 in ds.Tables[0].Rows) { var menu = MenuItem.ParseFrom(dr1); list.Add(menu); // 메뉴와 매핑된 대시보드 테이블 정보 foreach (DataRow dr2 in ds.Tables[1].Rows) { var formTableMenuId = dr2.Get <Guid>("MenuId"); if (formTableMenuId == menu.MenuId) { menu.FormTables.Add(FormTable.ParseFrom(dr2)); } } } return(list); } } catch (Exception ex) { throw new DataException($"프로시져 실행 중 예기치 못한 에러가 발생했습니다.\r\n 프로시저: \"{procCommandName}\"", ex); } }