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 Project API /// /// 프로젝트 목록 조회 /// public string Project_GetProjects(string status, string userFilter) { try { var sql = @"SELECT * FROM EETGW_Project WITH (nolock) WHERE gcode = @gcode"; var parameters = new List(); parameters.Add(new SqlParameter("@gcode", info.Login.gcode)); if (!string.IsNullOrEmpty(status)) { sql += " AND 상태 = @status"; parameters.Add(new SqlParameter("@status", status)); } if (userFilter == "my") { sql += " AND (프로젝트관리자 LIKE @userName OR 설계담당 LIKE @userName OR 전장담당 LIKE @userName OR 프로그램담당 LIKE @userName)"; parameters.Add(new SqlParameter("@userName", "%" + info.Login.nameK + "%")); } sql += " ORDER BY 시작일 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, CurrentUser = info.Login.nameK }, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); } catch (Exception ex) { return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message }); } } /// /// 프로젝트 상세 조회 /// public string Project_GetProject(int id) { try { var sql = "SELECT * FROM EETGW_Project 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", 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 Project_CreateProject(string name, string process, string sdate, string edate, string ddate, string odate, string userManager, string status, string memo) { try { var sql = @"INSERT INTO EETGW_Project (gcode, 프로젝트명, 프로젝트공정, 시작일, 완료일, 만료일, 출고일, 프로젝트관리자, 상태, memo, wuid, wdate) VALUES (@gcode, @name, @process, @sdate, @edate, @ddate, @odate, @userManager, @status, @memo, @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("@name", name ?? ""); cmd.Parameters.AddWithValue("@process", process ?? ""); cmd.Parameters.AddWithValue("@sdate", string.IsNullOrEmpty(sdate) ? (object)DBNull.Value : sdate); cmd.Parameters.AddWithValue("@edate", string.IsNullOrEmpty(edate) ? (object)DBNull.Value : edate); cmd.Parameters.AddWithValue("@ddate", string.IsNullOrEmpty(ddate) ? (object)DBNull.Value : ddate); cmd.Parameters.AddWithValue("@odate", string.IsNullOrEmpty(odate) ? (object)DBNull.Value : odate); cmd.Parameters.AddWithValue("@userManager", userManager ?? ""); cmd.Parameters.AddWithValue("@status", status ?? "진행"); cmd.Parameters.AddWithValue("@memo", memo ?? ""); 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 Project_UpdateProject(int idx, string name, string process, string sdate, string edate, string ddate, string odate, string userManager, string status, string memo) { try { var sql = @"UPDATE EETGW_Project SET 프로젝트명 = @name, 프로젝트공정 = @process, 시작일 = @sdate, 완료일 = @edate, 만료일 = @ddate, 출고일 = @odate, 프로젝트관리자 = @userManager, 상태 = @status, memo = @memo, 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("@name", name ?? ""); cmd.Parameters.AddWithValue("@process", process ?? ""); cmd.Parameters.AddWithValue("@sdate", string.IsNullOrEmpty(sdate) ? (object)DBNull.Value : sdate); cmd.Parameters.AddWithValue("@edate", string.IsNullOrEmpty(edate) ? (object)DBNull.Value : edate); cmd.Parameters.AddWithValue("@ddate", string.IsNullOrEmpty(ddate) ? (object)DBNull.Value : ddate); cmd.Parameters.AddWithValue("@odate", string.IsNullOrEmpty(odate) ? (object)DBNull.Value : odate); cmd.Parameters.AddWithValue("@userManager", userManager ?? ""); cmd.Parameters.AddWithValue("@status", status ?? "진행"); cmd.Parameters.AddWithValue("@memo", memo ?? ""); 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 Project_DeleteProject(int id) { try { var sql = "DELETE FROM EETGW_Project 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", id); 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 } }