Add Dashboard todo edit/delete/complete features and Note view count tracking

This commit is contained in:
backuppc
2025-12-02 15:03:51 +09:00
parent 6a2485176b
commit e82f86191a
25 changed files with 3512 additions and 324 deletions

View File

@@ -0,0 +1,158 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using FCOMMON;
namespace Project.Web
{
public partial class MachineBridge
{
/// <summary>
/// 게시판 목록 조회 (bidx로 구분: 5=패치내역, 기타=일반게시판)
/// </summary>
public string Board_GetList(int bidx, string searchKey)
{
try
{
if (string.IsNullOrEmpty(info.Login.no) || string.IsNullOrEmpty(info.Login.gcode))
{
return JsonConvert.SerializeObject(new { Success = false, Message = "로그인이 필요합니다." });
}
var connStr = Project.Properties.Settings.Default.CS;// Properties.Settings.Default.CS;
using (var conn = new SqlConnection(connStr))
{
conn.Open();
var sql = @"
SELECT idx, bidx, header, cate, title, contents, [file], guid, url, wuid, wdate, project, pidx, gcode, [close], remark,
dbo.getUserName(wuid) AS wuid_name
FROM Board WITH (nolock)
WHERE gcode = @gcode AND bidx = @bidx
AND (ISNULL(title,'') LIKE @search OR ISNULL(contents,'') LIKE @search OR ISNULL(wuid,'') LIKE @search)
ORDER BY wdate DESC";
if(bidx == 5) //패치내역은 모두가 다 확인할 수있도록 그룹코드를 제한하지 않는다
{
sql = @"
SELECT idx, bidx, header, cate, title, contents, [file], guid, url, wuid, wdate, project, pidx, gcode, [close], remark,
dbo.getUserName(wuid) AS wuid_name
FROM Board WITH (nolock)
WHERE bidx = @bidx
AND (ISNULL(title,'') LIKE @search OR ISNULL(contents,'') LIKE @search OR ISNULL(wuid,'') LIKE @search)
ORDER BY wdate DESC";
}
var cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@gcode", SqlDbType.VarChar).Value = info.Login.gcode;
cmd.Parameters.Add("@bidx", SqlDbType.Int).Value = bidx;
cmd.Parameters.Add("@search", SqlDbType.NVarChar).Value = $"%{searchKey}%";
var list = new List<object>();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
list.Add(new
{
idx = reader.GetInt32(0),
bidx = reader.GetInt32(1),
header = reader.IsDBNull(2) ? "" : (reader.GetBoolean(2) ? "공지" : ""),
cate = reader.IsDBNull(3) ? "" : reader.GetString(3),
title = reader.IsDBNull(4) ? "" : reader.GetString(4),
contents = reader.IsDBNull(5) ? "" : reader.GetString(5),
file = reader.IsDBNull(6) ? "" : reader.GetString(6),
guid = reader.IsDBNull(7) ? "" : reader.GetString(7),
url = reader.IsDBNull(8) ? "" : reader.GetString(8),
wuid = reader.IsDBNull(9) ? "" : reader.GetString(9),
wdate = reader.IsDBNull(10) ? (DateTime?)null : reader.GetDateTime(10),
project = reader.IsDBNull(11) ? "" : reader.GetInt32(11).ToString(),
pidx = reader.IsDBNull(12) ? -1 : reader.GetInt32(12),
gcode = reader.IsDBNull(13) ? "" : reader.GetString(13),
close = reader.IsDBNull(14) ? false : reader.GetBoolean(14),
remark = reader.IsDBNull(15) ? "" : reader.GetString(15),
wuid_name = reader.IsDBNull(16) ? "" : reader.GetString(16)
});
}
}
return JsonConvert.SerializeObject(new { Success = true, Data = list });
}
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message });
}
}
/// <summary>
/// 게시판 상세 조회
/// </summary>
public string Board_GetDetail(int idx)
{
try
{
if (string.IsNullOrEmpty(info.Login.no) || string.IsNullOrEmpty(info.Login.gcode))
{
return JsonConvert.SerializeObject(new { Success = false, Message = "로그인이 필요합니다." });
}
var connStr = Project.Properties.Settings.Default.CS;//Properties.Settings.Default.CS;
using (var conn = new SqlConnection(connStr))
{
conn.Open();
var cmd = new SqlCommand(@"
SELECT idx, bidx, header, cate, title, contents, [file], guid, url, wuid, wdate, project, pidx, gcode, [close], remark,
dbo.getUserName(wuid) AS wuid_name
FROM Board WITH (nolock)
WHERE idx = @idx AND gcode = @gcode", conn);
cmd.Parameters.Add("@idx", SqlDbType.Int).Value = idx;
cmd.Parameters.Add("@gcode", SqlDbType.VarChar).Value = info.Login.gcode;
using (var reader = cmd.ExecuteReader())
{
if (reader.Read())
{
var data = new
{
idx = reader.GetInt32(0),
bidx = reader.GetInt32(1),
header = reader.IsDBNull(2) ? "" : (reader.GetBoolean(2) ? "공지" : ""),
cate = reader.IsDBNull(3) ? "" : reader.GetString(3),
title = reader.IsDBNull(4) ? "" : reader.GetString(4),
contents = reader.IsDBNull(5) ? "" : reader.GetString(5),
file = reader.IsDBNull(6) ? "" : reader.GetString(6),
guid = reader.IsDBNull(7) ? "" : reader.GetString(7),
url = reader.IsDBNull(8) ? "" : reader.GetString(8),
wuid = reader.IsDBNull(9) ? "" : reader.GetString(9),
wdate = reader.IsDBNull(10) ? (DateTime?)null : reader.GetDateTime(10),
project = reader.IsDBNull(11) ? "" : reader.GetInt32(11).ToString(),
pidx = reader.IsDBNull(12) ? -1 : reader.GetInt32(12),
gcode = reader.IsDBNull(13) ? "" : reader.GetString(13),
close = reader.IsDBNull(14) ? false : reader.GetBoolean(14),
remark = reader.IsDBNull(15) ? "" : reader.GetString(15),
wuid_name = reader.IsDBNull(16) ? "" : reader.GetString(16)
};
return JsonConvert.SerializeObject(new { Success = true, Data = data });
}
else
{
return JsonConvert.SerializeObject(new { Success = false, Message = "데이터를 찾을 수 없습니다." });
}
}
}
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message });
}
}
}
}