using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using Newtonsoft.Json; using FCOMMON; namespace Project.Web { public partial class MachineBridge { #region Jobreport API /// /// 업무일지 목록 조회 /// public string Jobreport_GetList(string sd, string ed, string uid, string cate, string doit) { try { var sql = @"SELECT j.idx, j.jdate, j.uid, j.cate, j.title, j.doit, j.remark, j.jfrom, j.jto, u.name as userName, j.wdate FROM EETGW_Jobreport j WITH (nolock) LEFT JOIN Users u ON j.uid = u.id WHERE j.gcode = @gcode"; var parameters = new List(); parameters.Add(new SqlParameter("@gcode", info.Login.gcode)); if (!string.IsNullOrEmpty(sd)) { sql += " AND j.jdate >= @sd"; parameters.Add(new SqlParameter("@sd", sd)); } if (!string.IsNullOrEmpty(ed)) { sql += " AND j.jdate <= @ed"; parameters.Add(new SqlParameter("@ed", ed)); } if (!string.IsNullOrEmpty(uid)) { sql += " AND j.uid = @uid"; parameters.Add(new SqlParameter("@uid", uid)); } if (!string.IsNullOrEmpty(cate)) { sql += " AND j.cate = @cate"; parameters.Add(new SqlParameter("@cate", cate)); } if (!string.IsNullOrEmpty(doit)) { sql += " AND j.doit = @doit"; parameters.Add(new SqlParameter("@doit", doit)); } sql += " ORDER BY j.jdate DESC, j.idx DESC"; var cs = Properties.Settings.Default.gwcs; var cn = new SqlConnection(cs); var cmd = new SqlCommand(sql, cn); cmd.Parameters.AddRange(parameters.ToArray()); 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 }); } catch (Exception ex) { return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message }); } } /// /// 업무일지 사용자 목록 조회 /// public string Jobreport_GetUsers() { try { var sql = @"SELECT u.id, u.name FROM vGroupUser u WITH (nolock) WHERE u.gcode = @gcode AND u.useJobReport = 1 ORDER BY u.name"; var cs = Properties.Settings.Default.gwcs; var cn = new SqlConnection(cs); var cmd = new SqlCommand(sql, cn); cmd.Parameters.AddWithValue("@gcode", info.Login.gcode); var da = new SqlDataAdapter(cmd); var dt = new DataTable(); da.Fill(dt); da.Dispose(); cmd.Dispose(); cn.Dispose(); return JsonConvert.SerializeObject(dt, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); } catch (Exception ex) { Console.WriteLine($"Jobreport_GetUsers 오류: {ex.Message}"); return "[]"; } } /// /// 업무일지 상세 조회 /// public string Jobreport_GetDetail(int id) { try { var sql = @"SELECT j.*, u.name as userName FROM EETGW_Jobreport j WITH (nolock) LEFT JOIN Users u ON j.uid = u.id WHERE j.idx = @idx AND j.gcode = @gcode"; 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); var da = new SqlDataAdapter(cmd); var dt = new DataTable(); da.Fill(dt); da.Dispose(); cmd.Dispose(); cn.Dispose(); if (dt.Rows.Count > 0) { return JsonConvert.SerializeObject(new { Success = true, Data = dt.Rows[0] }, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); } return JsonConvert.SerializeObject(new { Success = false, Message = "데이터를 찾을 수 없습니다." }); } catch (Exception ex) { return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message }); } } /// /// 업무일지 추가 /// public string Jobreport_Add(string jdate, string cate, string title, string doit, string remark, string jfrom, string jto) { try { var sql = @"INSERT INTO EETGW_Jobreport (gcode, uid, jdate, cate, title, doit, remark, jfrom, jto, wuid, wdate) VALUES (@gcode, @uid, @jdate, @cate, @title, @doit, @remark, @jfrom, @jto, @wuid, GETDATE()); SELECT SCOPE_IDENTITY();"; 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); cmd.Parameters.AddWithValue("@jdate", jdate ?? DateTime.Now.ToString("yyyy-MM-dd")); cmd.Parameters.AddWithValue("@cate", cate ?? ""); cmd.Parameters.AddWithValue("@title", title ?? ""); cmd.Parameters.AddWithValue("@doit", doit ?? ""); cmd.Parameters.AddWithValue("@remark", remark ?? ""); cmd.Parameters.AddWithValue("@jfrom", jfrom ?? ""); cmd.Parameters.AddWithValue("@jto", jto ?? ""); cmd.Parameters.AddWithValue("@wuid", info.Login.no); cn.Open(); var newId = Convert.ToInt32(cmd.ExecuteScalar()); cn.Close(); cmd.Dispose(); cn.Dispose(); return JsonConvert.SerializeObject(new { Success = true, Message = "저장되었습니다.", Data = new { idx = newId } }); } catch (Exception ex) { return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message }); } } /// /// 업무일지 수정 /// public string Jobreport_Edit(int idx, string jdate, string cate, string title, string doit, string remark, string jfrom, string jto) { try { var sql = @"UPDATE EETGW_Jobreport SET jdate = @jdate, cate = @cate, title = @title, doit = @doit, remark = @remark, jfrom = @jfrom, jto = @jto, wuid = @wuid, wdate = GETDATE() WHERE idx = @idx AND gcode = @gcode"; 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("@jdate", jdate ?? DateTime.Now.ToString("yyyy-MM-dd")); cmd.Parameters.AddWithValue("@cate", cate ?? ""); cmd.Parameters.AddWithValue("@title", title ?? ""); cmd.Parameters.AddWithValue("@doit", doit ?? ""); cmd.Parameters.AddWithValue("@remark", remark ?? ""); cmd.Parameters.AddWithValue("@jfrom", jfrom ?? ""); cmd.Parameters.AddWithValue("@jto", jto ?? ""); 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 Jobreport_Delete(int idx) { try { var sql = "DELETE FROM EETGW_Jobreport WHERE idx = @idx AND gcode = @gcode"; 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); 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 } }