예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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);
            }
        }
예제 #3
0
        /// <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);
            }
        }
예제 #4
0
        /// <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);
            }
        }
예제 #5
0
        /// <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);
            }
        }
예제 #6
0
        /// <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);
            }
        }