304 lines
15 KiB
C#
304 lines
15 KiB
C#
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 });
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 게시판 추가
|
|
/// </summary>
|
|
public string Board_Add(int bidx, string header, string cate, string title, string contents)
|
|
{
|
|
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;
|
|
using (var conn = new SqlConnection(connStr))
|
|
{
|
|
conn.Open();
|
|
|
|
var cmd = new SqlCommand(@"
|
|
INSERT INTO Board (bidx, header, cate, title, contents, wuid, wdate, gcode)
|
|
VALUES (@bidx, @header, @cate, @title, @contents, @wuid, GETDATE(), @gcode);
|
|
SELECT SCOPE_IDENTITY();", conn);
|
|
|
|
cmd.Parameters.Add("@bidx", SqlDbType.Int).Value = bidx;
|
|
cmd.Parameters.Add("@header", SqlDbType.NVarChar).Value = string.IsNullOrEmpty(header) ? (object)DBNull.Value : header;
|
|
cmd.Parameters.Add("@cate", SqlDbType.NVarChar).Value = string.IsNullOrEmpty(cate) ? (object)DBNull.Value : cate;
|
|
cmd.Parameters.Add("@title", SqlDbType.NVarChar).Value = title;
|
|
cmd.Parameters.Add("@contents", SqlDbType.NVarChar).Value = contents;
|
|
cmd.Parameters.Add("@wuid", SqlDbType.VarChar).Value = info.Login.no;
|
|
cmd.Parameters.Add("@gcode", SqlDbType.VarChar).Value = info.Login.gcode;
|
|
|
|
var newIdx = Convert.ToInt32(cmd.ExecuteScalar());
|
|
|
|
return JsonConvert.SerializeObject(new { Success = true, Message = "등록되었습니다.", Data = new { idx = newIdx } });
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message });
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 게시판 수정
|
|
/// </summary>
|
|
public string Board_Edit(int idx, string header, string cate, string title, string contents)
|
|
{
|
|
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;
|
|
using (var conn = new SqlConnection(connStr))
|
|
{
|
|
conn.Open();
|
|
|
|
// 권한 확인: 작성자 본인이거나 레벨 9 이상만 수정 가능
|
|
var checkCmd = new SqlCommand("SELECT wuid FROM Board WHERE idx = @idx", conn);
|
|
checkCmd.Parameters.Add("@idx", SqlDbType.Int).Value = idx;
|
|
var originalWuid = checkCmd.ExecuteScalar()?.ToString();
|
|
|
|
if (originalWuid != info.Login.no && info.Login.level < 9)
|
|
{
|
|
return JsonConvert.SerializeObject(new { Success = false, Message = "수정 권한이 없습니다." });
|
|
}
|
|
|
|
var cmd = new SqlCommand(@"
|
|
UPDATE Board
|
|
SET header = @header, cate = @cate, title = @title, contents = @contents
|
|
WHERE idx = @idx", conn);
|
|
|
|
cmd.Parameters.Add("@idx", SqlDbType.Int).Value = idx;
|
|
cmd.Parameters.Add("@header", SqlDbType.NVarChar).Value = string.IsNullOrEmpty(header) ? (object)DBNull.Value : header;
|
|
cmd.Parameters.Add("@cate", SqlDbType.NVarChar).Value = string.IsNullOrEmpty(cate) ? (object)DBNull.Value : cate;
|
|
cmd.Parameters.Add("@title", SqlDbType.NVarChar).Value = title;
|
|
cmd.Parameters.Add("@contents", SqlDbType.NVarChar).Value = contents;
|
|
|
|
var affected = cmd.ExecuteNonQuery();
|
|
|
|
if (affected > 0)
|
|
{
|
|
return JsonConvert.SerializeObject(new { Success = true, Message = "수정되었습니다." });
|
|
}
|
|
else
|
|
{
|
|
return JsonConvert.SerializeObject(new { Success = false, Message = "수정할 데이터를 찾을 수 없습니다." });
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message });
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 게시판 삭제
|
|
/// </summary>
|
|
public string Board_Delete(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;
|
|
using (var conn = new SqlConnection(connStr))
|
|
{
|
|
conn.Open();
|
|
|
|
// 권한 확인: 작성자 본인이거나 레벨 9 이상만 삭제 가능
|
|
var checkCmd = new SqlCommand("SELECT wuid FROM Board WHERE idx = @idx", conn);
|
|
checkCmd.Parameters.Add("@idx", SqlDbType.Int).Value = idx;
|
|
var originalWuid = checkCmd.ExecuteScalar()?.ToString();
|
|
|
|
if (originalWuid != info.Login.no && info.Login.level < 9)
|
|
{
|
|
return JsonConvert.SerializeObject(new { Success = false, Message = "삭제 권한이 없습니다." });
|
|
}
|
|
|
|
var cmd = new SqlCommand("DELETE FROM Board WHERE idx = @idx", conn);
|
|
cmd.Parameters.Add("@idx", SqlDbType.Int).Value = idx;
|
|
|
|
var affected = cmd.ExecuteNonQuery();
|
|
|
|
if (affected > 0)
|
|
{
|
|
return JsonConvert.SerializeObject(new { Success = true, Message = "삭제되었습니다." });
|
|
}
|
|
else
|
|
{
|
|
return JsonConvert.SerializeObject(new { Success = false, Message = "삭제할 데이터를 찾을 수 없습니다." });
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message });
|
|
}
|
|
}
|
|
}
|
|
}
|