using System; using System.Data; using System.Data.SqlClient; using Newtonsoft.Json; using FCOMMON; using Project.Web.Model; namespace Project.Web { public partial class MachineBridge { #region Todo API /// /// 급한 할일 목록 조회 /// public string GetUrgentTodos() { try { if (string.IsNullOrEmpty(info.Login.no)) { return JsonConvert.SerializeObject(new { Success = false, Message = "로그인되지 않은 상태입니다." }); } var sql = @"SELECT * FROM EETGW_Todo WHERE gcode = @gcode AND uid = @uid and isnull(status,'0') not in ('2','3','5') ORDER BY flag DESC, seqno DESC, expire ASC, wdate ASC"; var todos = DBM.Query(sql, new { gcode = info.Login.gcode, uid = info.Login.no }); return JsonConvert.SerializeObject(new { Success = true, Data = todos }, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DateFormatString = "yyyy-MM-dd HH:mm:ss" }); } catch (Exception ex) { return JsonConvert.SerializeObject(new { Success = false, Message = "급한 Todo 목록을 가져오는 중 오류가 발생했습니다: " + ex.Message }); } } /// /// 할일 상세 조회 /// public string GetTodo(int id) { try { if (string.IsNullOrEmpty(info.Login.no)) { return JsonConvert.SerializeObject(new { Success = false, Message = "로그인되지 않은 상태입니다." }); } if (id <= 0) { return JsonConvert.SerializeObject(new { Success = false, Message = "유효하지 않은 Todo ID입니다." }); } var sql = "SELECT * FROM EETGW_Todo WHERE idx = @idx AND gcode = @gcode AND uid = @uid"; var todo = DBM.QuerySingleOrDefault(sql, new { idx = id, gcode = info.Login.gcode, uid = info.Login.no }); if (todo == null) { return JsonConvert.SerializeObject(new { Success = false, Message = "할일을 찾을 수 없습니다." }); } return JsonConvert.SerializeObject(new { Success = true, Data = todo }, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DateFormatString = "yyyy-MM-dd HH:mm:ss" }); } catch (Exception ex) { return JsonConvert.SerializeObject(new { Success = false, Message = "할일 조회 중 오류가 발생했습니다: " + ex.Message }); } } /// /// 할일 추가 /// public string CreateTodo(string title, string remark, string expire, int seqno, bool flag, string request, string status) { try { if (string.IsNullOrEmpty(info.Login.no)) { return JsonConvert.SerializeObject(new { Success = false, Message = "로그인되지 않은 상태입니다." }); } if (string.IsNullOrEmpty(remark)) { return JsonConvert.SerializeObject(new { Success = false, Message = "할일 내용은 필수입니다." }); } DateTime? expireDate = null; if (!string.IsNullOrEmpty(expire)) { if (DateTime.TryParse(expire, out DateTime parsed)) expireDate = parsed; } DateTime? okdateValue = null; if (status == "5") { okdateValue = DateTime.Now; } var sql = @" INSERT INTO EETGW_Todo (gcode, uid, title, remark, flag, expire, seqno, request, status, okdate, wuid, wdate) VALUES (@gcode, @uid, @title, @remark, @flag, @expire, @seqno, @request, @status, @okdate, @wuid, @wdate); SELECT SCOPE_IDENTITY();"; var newId = DBM.QuerySingle(sql, new { gcode = info.Login.gcode, uid = info.Login.no, title = title, remark = remark, flag = flag, expire = expireDate, seqno = seqno, request = request, status = string.IsNullOrEmpty(status) ? "0" : status, okdate = okdateValue, wuid = info.Login.no, wdate = DateTime.Now }); return JsonConvert.SerializeObject(new { Success = true, Message = "할일이 추가되었습니다.", Data = new { idx = newId } }); } catch (Exception ex) { return JsonConvert.SerializeObject(new { Success = false, Message = "할일 추가 중 오류가 발생했습니다: " + ex.Message }); } } #endregion #region Todo Extended API /// /// 할일 전체 목록 조회 /// public string Todo_GetTodos() { try { if (string.IsNullOrEmpty(info.Login.no)) { return JsonConvert.SerializeObject(new { Success = false, Message = "로그인되지 않은 상태입니다." }); } var sql = @"SELECT * FROM EETGW_Todo WHERE gcode = @gcode AND uid = @uid ORDER BY flag DESC, seqno DESC, expire ASC, wdate ASC"; var cs = Properties.Settings.Default.gwcs; var cn = new SqlConnection(cs); var cmd = new SqlCommand(sql, cn); cmd.Parameters.AddWithValue("@gcode", info.Login.gcode); cmd.Parameters.AddWithValue("@uid", info.Login.no); var da = new SqlDataAdapter(cmd); var dt = new DataTable(); da.Fill(dt); da.Dispose(); cmd.Dispose(); cn.Dispose(); return JsonConvert.SerializeObject(new { Success = true, Data = dt }, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DateFormatString = "yyyy-MM-dd HH:mm:ss" }); } catch (Exception ex) { return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message }); } } /// /// 할일 수정 /// public string Todo_UpdateTodo(int idx, string title, string remark, string expire, int seqno, bool flag, string request, string status) { try { if (string.IsNullOrEmpty(info.Login.no)) { return JsonConvert.SerializeObject(new { Success = false, Message = "로그인되지 않은 상태입니다." }); } DateTime? expireDate = null; if (!string.IsNullOrEmpty(expire)) { if (DateTime.TryParse(expire, out DateTime parsed)) expireDate = parsed; } DateTime? okdateValue = null; if (status == "5") { okdateValue = DateTime.Now; } var sql = @"UPDATE EETGW_Todo SET title = @title, remark = @remark, expire = @expire, seqno = @seqno, flag = @flag, request = @request, status = @status, okdate = @okdate, wuid = @wuid, wdate = GETDATE() WHERE idx = @idx AND gcode = @gcode AND uid = @uid"; var cs = Properties.Settings.Default.gwcs; var cn = new SqlConnection(cs); var cmd = new SqlCommand(sql, cn); cmd.Parameters.AddWithValue("@idx", idx); cmd.Parameters.AddWithValue("@gcode", info.Login.gcode); cmd.Parameters.AddWithValue("@uid", info.Login.no); cmd.Parameters.AddWithValue("@title", title ?? ""); cmd.Parameters.AddWithValue("@remark", remark ?? ""); cmd.Parameters.AddWithValue("@expire", expireDate.HasValue ? (object)expireDate.Value : DBNull.Value); cmd.Parameters.AddWithValue("@seqno", seqno); cmd.Parameters.AddWithValue("@flag", flag); cmd.Parameters.AddWithValue("@request", request ?? ""); cmd.Parameters.AddWithValue("@status", string.IsNullOrEmpty(status) ? "0" : status); cmd.Parameters.AddWithValue("@okdate", okdateValue.HasValue ? (object)okdateValue.Value : DBNull.Value); cmd.Parameters.AddWithValue("@wuid", info.Login.no); cn.Open(); var result = cmd.ExecuteNonQuery(); cn.Close(); cmd.Dispose(); cn.Dispose(); return JsonConvert.SerializeObject(new { Success = result > 0, Message = result > 0 ? "수정되었습니다." : "수정에 실패했습니다." }); } catch (Exception ex) { return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message }); } } /// /// 할일 삭제 /// public string Todo_DeleteTodo(int id) { try { if (string.IsNullOrEmpty(info.Login.no)) { return JsonConvert.SerializeObject(new { Success = false, Message = "로그인되지 않은 상태입니다." }); } var sql = "DELETE FROM EETGW_Todo WHERE idx = @idx AND gcode = @gcode AND uid = @uid"; var cs = Properties.Settings.Default.gwcs; var cn = new SqlConnection(cs); var cmd = new SqlCommand(sql, cn); cmd.Parameters.AddWithValue("@idx", id); cmd.Parameters.AddWithValue("@gcode", info.Login.gcode); cmd.Parameters.AddWithValue("@uid", info.Login.no); cn.Open(); var result = cmd.ExecuteNonQuery(); cn.Close(); cmd.Dispose(); cn.Dispose(); return JsonConvert.SerializeObject(new { Success = result > 0, Message = result > 0 ? "삭제되었습니다." : "삭제에 실패했습니다." }); } catch (Exception ex) { return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message }); } } #endregion } }