YNICTE/Base/Controller/ACommonCM.cs

836 lines
40 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using NP.Model;
using System.Collections;
using NP.Base.Auth;
using NP.Base.ENUM;
namespace NP.Base.Controllers
{
public partial class ACommonController : NP.Base.BaseController
{
[HttpPost]
public JsonResult TermSave(VMCM vm)
{
if (Dao.Get<Term>("cm.terms", new Hashtable() { {"tmnonot", vm.Term.tmno },{"tyear", vm.Term.tyear },{"tseq", vm.Term.tseq } }).Count() > 0)
{
return JsonOK(-1);
}
vm.Term.uno = SUserInfo.UserNo;
vm.Term.uip = GetUserIP();
return JsonOK(Dao.Save("cm.term."+ GetIU(vm.Term.tmno), vm.Term));
}
[HttpPost]
public JsonResult CGSave(CG cg)
{
cg.uno = SUserInfo.UserNo; cg.uip = GetUserIP();
if (cg.isdel == 1)
{
cg.saveflag = "del";
}
else
{
if (Dao.Get<CG>("cm.cgs", new Hashtable() { { "cgnonot", cg.cgno }, { "cgcode", cg.cgcode } }).Count() > 0)
{
return JsonOK(-1);
}
}
return JsonOK(Dao.Save("cm.cg." + GetIU(cg.cgno), cg));
}
[HttpPost]
public JsonResult CGGet(int cgno = 0, int pcgno = 0)
{
if (cgno > 0)
{
return JsonBack(Dao.Get<CG>("cm.cgs", new Hashtable { { "cgno", cgno } }).First());
}
else if (pcgno > 0)
{
return JsonBackList(Dao.Get<CG>("cm.cgs", new Hashtable { { "pcgno", pcgno },{ "isuse",1},{"isdel",0 } }));
}
return JsonNoData();
}
[HttpPost]
public JsonResult CMCreateByCMMaster(int cgno)
{
return JsonBackList(Dao.Get<CM>("cm.datacreatecmbycmmaster", cgno));
}
[HttpPost]
public JsonResult CMGet(int? ismaster,int? iscurrent,String orderby, int? cgno, String cname, String notcmnos, int? notcmno, int? pno, int? cshape, int? tmno, String cshapes, int? isall)
{
return JsonBackList(Dao.Get<CM>("cm.cms", new Hashtable { { "tmno", tmno }, { "cshape", cshape },{ "cgno", cgno }, { "isuse"+(isall==1?"x":""), 1 }, { "ismaster" + ((ismaster??0) == 91?"02":""), ismaster},{ "listcolumn",1 }, { "cname", cname },{ "notcmnos", notcmnos==""?null:notcmnos }, { "notcmno", (notcmno ?? 0) < 1 ? (int?)null : notcmno }, { "pagenum", pno }, { "pagerowsize", 10 },{ "cshapes", cshapes }, { "iscurrent", iscurrent }, { "orderby", orderby } }));
}
[HttpPost]
public JsonResult BookFind(String bkname)
{
return JsonBackList(Dao.Get<Book>("cm.books", new Hashtable { { "isuse", 1 }, { "bknamelike", bkname } }));
}
[HttpPost]
public JsonResult NcsFind(int ncsdepth, String ncsname)
{
return JsonBackList(Dao.Get<NCS>("cm.ncses" + ncsdepth, new Hashtable { { "ncsname", ncsname } }));
}
[HttpPost]
public JsonResult CMPRPfee(int userno, String sd)
{
var cmpr = new CMPR() { userno = userno, uno = SUserInfo.UserNo, uip = GetUserIP(), CMPRs = new List<CMPR>() { } };
foreach(var d in sd.Split(';'))
{
cmpr.CMPRs.Add(new CMPR() { cmno = GetInt(d.Split(':')[0]), pfee = GetInt(d.Split(':')[1]) });
}
return JsonOK(Dao.Save("cm.cmprpfee", cmpr));
}
[HttpPost]
[ValidateInput(false)]
public JsonResult BookSave(VMCM vm)
{
vm.Book.uno = SUserInfo.UserNo; vm.Book.uip = GetUserIP();
if (Request.Files.GetMultiple("fgnothumb").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
vm.Book.fgnothumb = SetFile(Request.Files.GetMultiple("fgnothumb").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), vm.Book.fgnothumb ?? 0, "book", "fgnothumb");
}
if (Request.Files.GetMultiple("fgno").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
vm.Book.fgno = SetFile(Request.Files.GetMultiple("fgno").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), vm.Book.fgno ?? 0, "book", "fgno");
}
if (vm.Book.bkno < 1) { return JsonOK(Dao.Save("cm.bookin", vm.Book)); }
else { return JsonOK(Dao.Save("cm.bookup", vm.Book)); }
}
[HttpPost]
[ValidateInput(false)]
public JsonResult BookDel(Int64 bkno)
{
return JsonOK(Dao.Save("cm.bookdel", new Hashtable() { {"bkno",bkno } }));
}
[HttpPost]
[ValidateInput(false)]
public JsonResult CMSave(VMCM vm)
{
if(vm.CM.ismaster == 0)
{
vm.CM.retime = Convert.ToDateTime(vm.CM.retimeymd + " 23:59:59");
vm.CM.setime = Convert.ToDateTime(vm.CM.setimeymd + " 23:59:59");
vm.CM.getime = Convert.ToDateTime(vm.CM.getimeymd + " 23:59:59");
}
if (vm.CM.isrefund == 0)
{
vm.CM.ncsnos = null;
}
int orgcmno = vm.CM.cmno;
vm.CM.uno = SUserInfo.UserNo; vm.CM.uip = GetUserIP();
if (Request.Files.GetMultiple("fgnocm").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
vm.CM.fgnocm = SetFile(Request.Files.GetMultiple("fgnocm").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), vm.CM.fgnocm ?? 0, "cm", "fgnocm");
}
if (vm.CM.cmno < 1) {
Dao.Insert("cm.cmin", vm.CM);
if (vm.CM.cmno < 1)
{
return JsonOK(0);
}
//평가기준 기본등록
Dao.Save("cm.cmev.in", new Hashtable() { { "cmno", vm.CM.cmno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
//강의실메뉴 기본값 삽입
Dao.Save("cm.cmmenu.in", new Hashtable() { { "cmno", vm.CM.cmno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
}
else if (Dao.Save("cm.cmup", vm.CM) < 1)
{
return JsonOK(0);
}
//담당자, 교재, 선행, 후행, ncs직무저장
if (orgcmno > 0)
{
//삭제정리
Dao.Save("cm.data.delete", new Hashtable() { { "cmno", vm.CM.cmno }, { "usernos", vm.CM.usernos }, { "bknos", vm.CM.bknos }, { "rcmnospre", vm.CM.cmnospre }, { "rcmnosnext", vm.CM.cmnosnext }, { "ndnos", vm.CM.ncsnos } });
}
//저장
Dao.Save("cm.data.save", new Hashtable() { { "cmno", vm.CM.cmno }, { "usernos", vm.CM.usernos ?? "0" }, { "bknos", vm.CM.bknos ?? "0" }, { "rcmnospre", vm.CM.cmnospre ?? "0" }, { "rcmnosnext", vm.CM.cmnosnext ?? "0" }, { "ndnos", vm.CM.ncsnos ?? "0" }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
if (orgcmno > 0)
{
//회차강사 정리
Dao.Save("cm.cminning.profclear", vm.CM.cmno);
}
return JsonOK(vm.CM.cmno);
}
[HttpPost]
public JsonResult CMPCSave(VMCM vm)
{
vm.CM.sstime = vm.CM.setime = DateTime.Now;
vm.CM.uno = SUserInfo.UserNo; vm.CM.uip = GetUserIP();
if (vm.CM.cmno < 1)
{
Dao.Insert("cm.cmpcin", vm.CM);
if (vm.CM.cmno < 1)
{
return JsonOK(0);
}
}
else
{
if (Dao.Save("cm.cmpcup", vm.CM) < 1)
{
return JsonOK(0);
}
//결제내역있으면 강좌 추가, 삭제 막기, 설계안에 없지만 나중에 할인가를 변경해야 할 수도 있겠지.
if (Dao.Get<int>("cm.check.cmpcpay", vm.CM.cmno).First() > 0)
{
//강좌정보 저장
//isnew:cmno:dseq:orginfee:orgoutfee:drate:infee:outfee
vm.CM.cmnos = "";
vm.CM.inquery = "";
vm.CM.upquery = "";
vm.CM.Ds = new List<CM>() { };
foreach (var s in vm.savedata.Split(';'))
{
var cm = s.Split(':');
vm.CM.cmnos += "," + cm[1];
if (cm[0] != "1")
{
vm.CM.Ds.Add(new CM() { cmno = GetInt(cm[1]), dseq = GetInt(cm[2]), orginfee = GetInt(cm[3]), orgoutfee = GetInt(cm[4]), drate = GetInt(cm[5]), infee = GetInt(cm[6]), outfee = GetInt(cm[7]) });
}
}
vm.CM.cmnos = vm.CM.cmnos.Substring(1);
vm.CM.inquery = vm.CM.inquery == "" ? null : vm.CM.inquery.Substring(1);
vm.CM.upquery = vm.CM.Ds.Count() > 0 ? "1" : null;
//삭제, 삽입, 수정, 금액롤업
Dao.Save("cm.cmpccm.save", vm.CM);
return JsonOK(vm.CM.cmno);
}
}
//강좌정보 저장
//isnew:cmno:dseq:orginfee:orgoutfee:drate:infee:outfee
vm.CM.cmnos = "";
vm.CM.inquery = "";
vm.CM.upquery = "";
vm.CM.Ds = new List<CM>() { };
foreach (var s in vm.savedata.Split(';'))
{
var cm = s.Split(':');
vm.CM.cmnos += "," + cm[1];
if (cm[0] == "1")
{
vm.CM.inquery += string.Format(",({0},{1},{2},{3},{4},{5},{6},{7},now(),{8},now(),{8},'{9}')", vm.CM.cmno, cm[1], cm[2], cm[3], cm[4], cm[5], cm[6], cm[7],vm.CM.uno, vm.CM.uip);
}
else
{
vm.CM.Ds.Add(new CM() { cmno = GetInt(cm[1]), dseq = GetInt(cm[2]), orginfee = GetInt(cm[3]), orgoutfee = GetInt(cm[4]), drate = GetInt(cm[5]), infee = GetInt(cm[6]), outfee = GetInt(cm[7]) });
}
}
vm.CM.cmnos = vm.CM.cmnos.Substring(1);
vm.CM.inquery = vm.CM.inquery == "" ? null : vm.CM.inquery.Substring(1);
vm.CM.upquery = vm.CM.Ds.Count() > 0 ? "1" : null;
//삭제, 삽입, 수정, 금액롤업
Dao.Save("cm.cmpccm.save", vm.CM);
return JsonOK(vm.CM.cmno);
}
[HttpPost]
public JsonResult CMDel(int cmno)
{
//패키지 등록 현황 확인
if (Dao.Get<int>("cm.check.cmpcpay",cmno ).First() > 0)
{
return JsonBack(new JsonRtn() { code = 1 });
}
return JsonOK(Dao.Save("cm.del", new Hashtable() { { "cmno", cmno },{"uno",SUserInfo.UserNo },{"uip",GetUserIP() } }));
}
[HttpPost]
public JsonResult CMInningDel(int im, Int64 cmino)
{
return JsonOK(Dao.Save("cm.cminning.del" + (im==1?"2":""), cmino));
}
[HttpPost]
public JsonResult CMInningByScdDel(int im, Int64 cmino)
{
return JsonOK(Dao.Save("cm.cminning.del3" + (im == 1 ? "2" : ""), cmino));
}
[HttpPost]
public JsonResult CMInningScdDel(int im, Int64 cmisno)
{
return JsonOK(Dao.Save("cm.cminningscd.del" + (im == 1 ? "2" : ""), cmisno));
}
[HttpPost]
public JsonResult CMSeqSave(int cmno, int isseq)
{
return JsonOK(Dao.Save("cm.cmseqsave", new Hashtable() { { "cmno", cmno },{ "isseq", isseq }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
[HttpPost]
public JsonResult CMInningGet(Int64 cmino)
{
return JsonBack(Dao.Get<CMInning>("cm.cminnings", new Hashtable() { { "cmino", cmino } }).First());
}
[HttpPost]
public JsonResult CMInningScdGet(Int64 cmino ,Int64 cmisno)
{
var data = Dao.Get<CMinningscd>("cm.cminningscds", new Hashtable() { { "cmino", cmino }, { "cmisno", cmisno } }).First();
data.estart2 = data.estart.ToString("yyyy-MM-dd HH:mm");
data.eend2 = data.eend.ToString("yyyy-MM-dd HH:mm");
return JsonBack(data);
}
[HttpPost]
public JsonResult CMInningSave(CMInning cmi)
{
cmi.uno = SUserInfo.UserNo; cmi.uip = GetUserIP();
cmi.week = 1;
int rtn = 0;
if (Request.Files.GetMultiple("filetf").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
cmi.fgnotf = SetFile(Request.Files.GetMultiple("filetf").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), cmi.fgnotf ?? 0, "cminning", "fgnotf");
}
if (cmi.cmino < 1)
{
Dao.Insert("cm.cminnings.in", cmi);
rtn = cmi.cmino > 0 ? 1 : 0;
}
else
{
rtn = Dao.Save("cm.cminnings." + (cmi.cmino > 0 ? "up" : "in"), cmi);
}
if (cmi.istaste == 1){
Dao.Save("cm.cminnings.istasteclear", cmi);
}
return JsonOK(rtn, true);
}
[HttpPost]
public JsonResult CMInningScdSave(CMinningscd cmis)
{
if(!string.IsNullOrEmpty(cmis.estart2))
cmis.estart = Convert.ToDateTime(cmis.estart2);
if (!string.IsNullOrEmpty(cmis.eend2))
cmis.eend = Convert.ToDateTime(cmis.eend2);
cmis.uno = SUserInfo.UserNo;
cmis.uip = GetUserIP();
int rtn = 0;
if (cmis.cmisno < 1)
{
Dao.Insert("cm.cminningscd.in", cmis);
rtn = cmis.cmisno > 0 ? 1 : 0;
}
else
{
rtn = Dao.Save("cm.cminningscd." + (cmis.cmisno > 0 ? "up" : "in"), cmis);
}
return JsonOK(rtn, true);
}
[HttpPost]
public JsonResult ContentFind(int? cmno, String ctname, int pno)
{
return JsonBackList(Dao.Get<CT>("cm.contents", new Hashtable() { { "cmno", cmno }, { "ctname", ctname }, { "pagenum", pno }, { "pagerowsize", 10 },{"isuse",1 } }));
}
[HttpPost]
public JsonResult CMEVSave(CMEV cmev)
{
cmev.uno = SUserInfo.UserNo; cmev.uip = GetUserIP();
return JsonOK(Dao.Save("cm.cmevsave", cmev));
}
[HttpPost]
public JsonResult CMEXSave(VMCM vm)
{
vm.CMEX.uip = GetUserIP();
vm.CMEX.uno = SUserInfo.UserNo;
//최종평가는 과정/강좌당 1개만
if (vm.CMEX.extype == 1 && Dao.Get<int>("cm.cmex.extype1count", new Hashtable() { { "cmno", vm.CMEX.cmno }, { "exno", vm.CMEX.exno } }).First() > 0)
{
return JsonBack(new JsonRtn() { code = 1, obj = -1 });
}
if (vm.CMEX.exno > 0 && ExamSaveValid(vm.CMEX.exno) != "")
{
//응시자데이터 존재하므로 일부데이터만 저장
return JsonOK(Dao.Save("cm.cmex.savetop", vm.CMEX), false);
}
vm.CMEX.cmexqs = new List<CMEXQ>();
vm.CMEX.cmexlayers = new List<CMEXLayer>();
if (vm.CMEX.eqtype == 1 && !string.IsNullOrEmpty(vm.savedata))
{
//임의문항
foreach (String s in vm.savedata.Split(';'))
{
var s2 = s.Split(':');
vm.CMEX.cmexlayers.Add(new CMEXLayer() { exno = vm.CMEX.exno, qdiff = GetInt(s2[0])
, cc1 = GetInt(s2[1]), cc2 = GetInt(s2[2]), cc3 = GetInt(s2[3]), cc4 = GetInt(s2[4]), cc5 = GetInt(s2[5]), qcount = GetInt(s2[6]), rpoint = GetInt(s2[7])});
vm.CMEX.tpoint += GetInt(s2[6]) * GetInt(s2[7]);
vm.CMEX.qcount += GetInt(s2[6]);
}
}
if (!string.IsNullOrEmpty(vm.savedata2))
{
foreach (var q in vm.savedata2.Split(';'))
{
var qi = q.Split(':');
vm.CMEX.cmexqs.Add(new CMEXQ() { eqno = GetInt(qi[0]), qseq = GetInt(qi[1]), qno = GetInt(qi[2]), rpoint = GetInt(qi[3]) });
if (vm.CMEX.eqtype == 0)
{
vm.CMEX.tpoint += GetInt(qi[3]);
}
}
if (vm.CMEX.eqtype == 0)
{
vm.CMEX.qcount = vm.CMEX.cmexqs.Count();
}
}
return JsonOK(Dao.SaveExam(vm.CMEX), false);
}
/// <summary>
/// 가상번호 extype 1: 진행평가, 2: 최종평가, 11: 과제, 21: 토론, 31: 사전설문, 32: 강의평가
/// </summary>
/// <param name="extype"></param>
/// <param name="no"></param>
/// <returns></returns>
public JsonResult ESTDel(int extype, int no)
{
if (extype == 1 || extype == 2) {if (ExamSaveValid(no) == ""){return JsonOK(Dao.Save("cm.cmex.del", no));}}
else if(extype == 11 || extype == 21){ if (SDSaveValid(no) == "") { return JsonOK(Dao.Save("cm.cmsd.del", no)); } }
else if (extype == 31 || extype == 32){ if (RSSaveValid(no) == "") { return JsonOK(Dao.Save("cm.cmrs.del", no)); } }
return JsonOK(0);
}
[HttpPost]
public JsonResult QuestionDel(String qnos)
{
return JsonOK(Dao.Save("cm.question.del", new Hashtable() { { "qnos", qnos } }), true);
}
[HttpPost]
public JsonResult QuestionChangeUYN(String qnos, int flag)
{
return JsonOK(Dao.Save("cm.question.isusechange", new Hashtable() { { "qnos", qnos }, { "isuse", flag == 8 ? 1 : 0 } }), true);
}
[HttpPost]
[ValidateInput(false)]
public JsonResult QuestionSave(VMCM vm)
{
vm.Question.uip = GetUserIP();
vm.Question.uno = SUserInfo.UserNo;
vm.Question.QIs = new List<QuestionItem>();
if (vm.Question.atype != 2)
{
foreach (var idx in vm.savedata.Split(','))
{
if (vm.Question.atype == 0 || !string.IsNullOrEmpty(Request["qitext2" + idx]))
{
var qi = new QuestionItem() { qino = GetInt(Request["qino" + idx]), fgno = GetLong(Request["qifile" + idx]) < 1 ? (Int64?)null : GetLong(Request["qifile" + idx]), isright = vm.Question.atype == 1 ? 1 : GetInt(Request["chkqi" + idx]), qitext = vm.Question.atype == 0 ? Request["qitext" + idx] : Request["qitext2" + idx] };
if (vm.Question.atype == 0)
{
if (Request.Files.GetMultiple("file" + idx).Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
qi.fgno = SetFile(Request.Files.GetMultiple("file" + idx).Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), qi.fgno ?? 0, "questionitem", "fgno");
}
}
vm.Question.rightcount += qi.isright;
vm.Question.QIs.Add(qi);
}
}
}
return JsonOK(Dao.SaveQuestion(vm.Question, 1), false);
}
[HttpPost]
public JsonResult CMSDSave(VMCM vm)
{
vm.CMSD.uno = SUserInfo.UserNo; vm.CMSD.uip = GetUserIP();
if (Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
vm.CMSD.fgno = SetFile(Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), vm.CMSD.fgno ?? 0, "cmsd", "fgno");
}
if (vm.CMSD.sdno < 1)
{
Dao.Insert("cm.cmsd.in", vm.CMSD);
return JsonOK(vm.CMSD.sdno);
}
if (base.SDSaveValid(vm.CMSD.sdno) == "")
{
return JsonOK(Dao.Save("cm.cmsd.up", vm.CMSD));
}
return JsonOK(Dao.Save("cm.cmsd.uplock", vm.CMSD));
}
[HttpPost]
public JsonResult CMRSSave(VMCM vm)
{
vm.CMRS.uno = SUserInfo.UserNo; vm.CMRS.uip = GetUserIP();
if (vm.CMRS.rstype == 1)
{
vm.CMRS.rscondition = 0;
}
if (vm.CMRS.rsno < 1)
{
//설문(강의평가, 사전설문)은 1개씩만 등록가능
if (Dao.Get<int>("cm.cmrs.check", new Hashtable() { {"cmno",vm.CMRS.cmno }, { "rsno", vm.CMRS.rsno }, { "rstype", vm.CMRS.rstype } }).First() > 0)
{
return JsonOK(0);
}
Dao.Insert("cm.cmrs.in", vm.CMRS);
return JsonOK(vm.CMRS.rsno);
}
if (base.RSSaveValid(vm.CMRS.rsno) == "")
{
return JsonOK(Dao.Save("cm.cmrs.up", vm.CMRS));
}
return JsonOK(Dao.Save("cm.cmrs.uplock", vm.CMRS));
}
[HttpPost]
public JsonResult CMMenuSave(VMCM vm)
{
vm.CMMenu.uno = SUserInfo.UserNo; vm.CMMenu.uip = GetUserIP();
vm.CMMenu.bmnos = vm.CMMenu.bmnos == "" ? null : vm.CMMenu.bmnos;
return JsonOK(Dao.Save("cm.cmmenu.up", vm.CMMenu));
}
[HttpPost]
public JsonResult RSCSave(VMCM vm)
{
vm.RSC.uno = SUserInfo.UserNo; vm.RSC.uip = GetUserIP();
if (!string.IsNullOrEmpty(vm.savedata2))
{
vm.RSC.Ds = new List<RSCQ>() { };
foreach (var q in vm.savedata2.Split(';'))
{
var qi = q.Split(':');
vm.RSC.Ds.Add(new RSCQ() { rscqno = GetInt(qi[0]), dseq = GetInt(qi[1]), qno = GetInt(qi[2]) });
}
}
if (vm.RSC.rscno < 1)
{
Dao.Insert("cm.rsc.in", vm.RSC);
if (vm.RSC.rscno > 0)
{
Dao.Save("cm.rscq.in", vm.RSC);
return JsonOK(vm.RSC.rscno);
}
}
else
{
vm.RSC.Dsin = vm.RSC.Ds.Where(w => w.rscqno < 1).ToList();
vm.RSC.Dsup = vm.RSC.Ds.Where(w => w.rscqno > 0).ToList();
vm.RSC.QNosin = string.Join(",", vm.RSC.Dsin.Select(s => s.qno));
vm.RSC.QNosup = string.Join(",", vm.RSC.Dsup.Select(s => s.qno));
if ("".Equals(base.RSCSaveValid(vm.RSC.rscno)))
{
return JsonOK(Dao.Save("cm.rsc.up", vm.RSC));
}
else
{
return JsonOK(Dao.Save("cm.rsc.uplock", vm.RSC));
}
}
return Json(0);
}
[HttpPost]
public JsonResult CMCopy(int cmno, String cname, int? tmno = null, bool nomaster = false)
{
int uno = SUserInfo.UserNo;
String uip = GetUserIP();
//해당 강좌가 회차정보가 존재하는지 확인
if (nomaster && Dao.Get<CMInning>("cm.cminnings", new System.Collections.Hashtable() { { "cmno", cmno } }).Count < 1 )
{
return JsonBack(new JsonRtn() { code = 1 });
}
//복제할 대상 중 첨부파일이 있는 데이터 확인하여 파일 복제
var datas = Dao.Get<Data>("cm.cminfile", cmno).ToList();
var dtype = 0;
var intval = 0;
Int64 longval3 = 0;
foreach (var d in datas.Where(w=>w.dtype == 1))
{
var vm = new VMCM() { };
//과제토론첨부파일복제
if (dtype != d.dtype || intval != d.intval)
{
//테이블키(테이블유형 및 테이블키번호가 달라지면 파일그룹번호를 생성한다)
var fg = new NP.Model.File() { tablename = "cmsd", columnname = "fgno", uno = uno, uip = uip };
Dao.Insert<File>("sys.filegroup.insert", fg);
longval3 = d.longval3 = fg.fgno;
dtype = d.dtype;
intval = d.intval;
//파일정보 복사
Dao.Save("sys.file.copy", new Hashtable() { { "ofgno", d.longval }, { "nfgno", d.longval3 }, { "uno", uno }, { "uip", uip },{ "copytype",tmno == null || nomaster ? "copy" : "inherit" } });
}
//파일복제
System.IO.FileInfo fi = new System.IO.FileInfo(Server.MapPath(vm.Files + d.strval));
System.IO.File.Copy(Server.MapPath(vm.Files + d.strval)
, Server.MapPath(vm.Files + d.strval.Substring(0, d.strval.IndexOf('.')) + "_"+ (tmno == null || nomaster ? "copy" : "inherit") + "_" + uno + "_" + longval3 + d.strval.Substring(d.strval.IndexOf('.'))));
}
longval3 = 0;
Int64 longval4 = 0;
foreach (var d in datas.Where(w => w.dtype == 2))
{
var vm = new VMCM() { };
//오프라인학습교안파일복제
if (longval4 != d.longval4)
{
//테이블키(테이블유형 및 테이블키번호가 달라지면 파일그룹번호를 생성한다)
var fg = new NP.Model.File() { tablename = "cminning", columnname = "fgnotf", uno = uno, uip = uip };
Dao.Insert<File>("sys.filegroup.insert", fg);
longval3 = d.longval3 = fg.fgno;
longval4 = d.longval4;
//파일정보 복사
Dao.Save("sys.file.copy", new Hashtable() { { "ofgno", d.longval }, { "nfgno", d.longval3 }, { "uno", uno }, { "uip", uip }, { "copytype", tmno == null || nomaster ? "copy" : "inherit" } });
}
//파일복제
System.IO.FileInfo fi = new System.IO.FileInfo(Server.MapPath(vm.Files + d.strval));
System.IO.File.Copy(Server.MapPath(vm.Files + d.strval)
, Server.MapPath(vm.Files + d.strval.Substring(0, d.strval.IndexOf('.')) + "_" + (tmno == null || nomaster ? "copy" : "inherit") + "_" + uno + "_" + longval3 + d.strval.Substring(d.strval.IndexOf('.'))));
}
longval3 = 0;
longval4 = 0;
foreach (var d in datas.Where(w => w.dtype == 3))
{
var vm = new VMCM() { };
//강좌첨부파일복제
if (longval4 != d.longval)
{
//테이블키(테이블유형 및 테이블키번호가 달라지면 파일그룹번호를 생성한다)
var fg = new NP.Model.File() { tablename = "cm", columnname = "fgnocm", uno = uno, uip = uip };
Dao.Insert<File>("sys.filegroup.insert", fg);
longval3 = d.longval3 = fg.fgno;
longval4 = d.longval;
//파일정보 복사
Dao.Save("sys.file.copy", new Hashtable() { { "ofgno", d.longval }, { "nfgno", d.longval3 }, { "uno", uno }, { "uip", uip }, { "copytype", tmno == null || nomaster ? "copy" : "inherit" } });
}
//파일복제
System.IO.FileInfo fi = new System.IO.FileInfo(Server.MapPath(vm.Files + d.strval));
System.IO.File.Copy(Server.MapPath(vm.Files + d.strval)
, Server.MapPath(vm.Files + d.strval.Substring(0, d.strval.IndexOf('.')) + "_" + (tmno == null || nomaster ? "copy" : "inherit") + "_" + uno + "_" + longval3 + d.strval.Substring(d.strval.IndexOf('.'))));
}
return JsonOK(Dao.CMCopy(cmno,uno,uip,datas, tmno == null?1:0, tmno, cname));
}
[HttpPost]
public JsonResult CMCheck(int cmno, String check)
{
switch (check)
{
case "cmpcpay":
//패키지 등록 현황 확인
if (Dao.Get<int>("cm.check.cmpcpay", cmno).First() > 0)
{
return JsonBack(new JsonRtn() { code = 1 });
}
else
{
return JsonBack(new JsonRtn() { code = 1000, obj = Dao.Get<int>("cm.check.cmpcpay",new Hashtable() { {"cmno",cmno } } ).First() });
}
}
return JsonOK(0);
}
[HttpPost]
public JsonResult CTPDel(int ctno, int cpno)
{
return JsonOK(Dao.Save("cm.ctpdel", new Hashtable() { { "ctno", ctno }, { "cpno", cpno }, { "uno", SUserInfo.UserNo}, {"uip", GetUserIP() } }));
}
[HttpPost]
[ValidateInput(false)]
public JsonResult CTSave(VMCM vm)
{
vm.CT.uno = SUserInfo.UserNo; vm.CT.uip = GetUserIP();
if (!string.IsNullOrEmpty(vm.CT.ccode))
{
if (Dao.Get<Data>("cm.check.ctccode", new Hashtable() { { "ctnonot" + (vm.CT.ctno > 0 ? "" : "x"), vm.CT.ctno }, { "ccode", vm.CT.ccode } }).Count() > 0)
{
return JsonBack(new JsonRtn() { code = 1, obj = -9 });
}
}
if (vm.CT.ctype < 2 && Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
if ((vm.CT.fgno ?? 0) > 0)
{
//기존등록된 콘텐츠파일 삭제
Dao.Save("sys.file.del2", new Hashtable() { { "fgno", vm.CT.fgno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() }, { "isadmin", SUserInfo.IsAdmin ? 1 : 0 } });
}
vm.CT.fgno = SetFile(Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), vm.CT.fgno ?? 0, "ct", "fgno", 1, "XX", true);
//콘텐츠파일이 업로드되었는데 수정모드라면 기존 폴더이름을 현재폴더이름 + 현재시간초 로 변경
/* /Contents스토리지폴더/콘텐츠코드/* */
if (!string.IsNullOrEmpty(vm.CT.ccode))
{
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(Server.MapPath(vm.Contents+"/" + vm.CT.ccode));
if (di.Exists)
{
di.MoveTo(Server.MapPath(vm.Contents+"/" + vm.CT.ccode + "_backup_" + DateTime.Now.ToString("yyyyMMddHHmmss")));
}
}
if (!System.IO.Directory.Exists(Server.MapPath(vm.Contents+"/" + vm.CT.ccode)))
{
System.IO.Directory.CreateDirectory(Server.MapPath(vm.Contents+"/" + vm.CT.ccode));
}
if (Request.Files.GetMultiple("file").First().FileName.Split('.').Last().ToUpper() == "ZIP")
{
//압축해제
var zf = GetFiles(vm.CT.fgno.Value);
Helpers.UnZipFiles(Server.MapPath(vm.Contents + zf.First().fileurl), Server.MapPath(vm.Contents + "/" + vm.CT.ccode));
}
else
{
Request.Files.GetMultiple("file").First().SaveAs(Server.MapPath(vm.Contents+"/" + vm.CT.ccode + "/" + Request.Files.GetMultiple("file").First().FileName.Split('\\').Last()));
}
}
if (vm.CT.ctype == 0 && Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
vm.CT.isoversize2 = 0;
if (Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).First().ContentLength > 50000000)
{
vm.CT.isoversize = 1;
vm.CT.isoversize2 = 1;
}
}
if (Request.Files.GetMultiple("filetf").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
vm.CT.fgnotf = SetFile(Request.Files.GetMultiple("filetf").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), vm.CT.fgnotf ?? 0, "ct", "fgnotf");
}
if (Request.Files.GetMultiple("filethumb").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
vm.CT.fgnothumb = SetFile(Request.Files.GetMultiple("filethumb").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), vm.CT.fgnothumb ?? 0, "ct", "fgnothumb");
}
if (vm.CT.ctno < 1)
{
vm.CT.Ds = new List<CTPage>() { };
Dao.Insert("cm.ct.in", vm.CT);
int i = 1;
vm.CT.inquery = "";
foreach(var s in vm.savedata.Split(';'))
{
var sv = s.Split(':');
vm.CT.inquery += ",(" + vm.CT.ctno + "," + (i++) + ",'" + sv[1].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";") +
"','" + sv[2].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";") +
"','" + sv[3].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";") + "',0,now()," + vm.CT.uno + ",now()," + vm.CT.uno + ",'" + vm.CT.uip + "')";
}
vm.CT.inquery = vm.CT.inquery.Substring(1);
Dao.Save("cm.ctpage.in2", vm.CT);
return JsonOK(vm.CT.ctno);
}
else
{
Dao.Save("cm.ct.up", vm.CT);
vm.CT.Ds = new List<CTPage>() { };
int i = 1;
//매핑된 과정/강좌 있을 경우 페이지 추가 막는다
if (Dao.Get<int>("cm.ct.checkcmi", vm.CT.ctno).First() > 0)
{
vm.CT.inquery = "";
foreach (var s in vm.savedata.Split(';'))
{
var sv = s.Split(':');
if (sv[0] != "0")
{
vm.CT.Ds.Add(new CTPage()
{
cpno = GetInt(sv[0]),
pseq = i++,
cpname = sv[1].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";"),
srcp = sv[2].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";"),
srcm = sv[3].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";")
});
}
}
Dao.Save("cm.ctp.up", vm.CT);
return JsonBack(new JsonRtn() { code = 1000, obj = 999 });
}
else
{
vm.CT.inquery = "";
foreach (var s in vm.savedata.Split(';'))
{
var sv = s.Split(':');
if (sv[0] == "0")
{
vm.CT.inquery += ",(" + vm.CT.ctno + "," + (i++) + ",'" + sv[1].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";") +
"','" + sv[2].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";") +
"','" + sv[3].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";") + "',0,now()," + vm.CT.uno + ",now()," + vm.CT.uno + ",'" + vm.CT.uip + "')";
}
else
{
vm.CT.Ds.Add(new CTPage()
{
cpno = GetInt(sv[0]),
pseq = i++,
cpname = sv[1].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";"),
srcp = sv[2].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";"),
srcm = sv[3].Replace("nptechseconddeveloperphd", ":").Replace("nptechdeveloperphd", ";")
});
}
}
if (vm.CT.inquery != "")
{
vm.CT.inquery = vm.CT.inquery.Substring(1);
Dao.Save("cm.ctpage.in2", vm.CT);
}
if (vm.CT.Ds.Count() > 0)
{
Dao.Save("cm.ctp.up", vm.CT);
}
return JsonOK(vm.CT.ctno);
}
}
}
[HttpPost]
public JsonResult CTDel(int ctno = 0, String ctnos = "")
{
if (ctno > 0)
{
return JsonOK(Dao.Save("cm.ct.del", new Hashtable() { { "ctno", ctno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
else
{
return JsonOK(Dao.Save("cm.ct.del2", new Hashtable() { { "ctnos", ctnos }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
}
[HttpPost]
public JsonResult CMGetForBoard(int tmno)
{
if (SUserInfo.IsTeacher)
{
return JsonBack(Dao.Get<CM>("cm.mycms", new Hashtable() { { "tmno", tmno }, { "userno", SUserInfo.UserNo } }));
}
return JsonBack(Dao.Get<CM>("cm.cms", new System.Collections.Hashtable() { { "tmno", tmno }, { "ismaster", 0 }, { "orderby", "d.cname,d.classno" } }));
}
[HttpPost]
public JsonResult BMGetForBoard(int cmno)
{
CMMenu cmmenu = Dao.Get<CMMenu>("cm.cmmenus", new System.Collections.Hashtable() { { "cmno", cmno } }).First();
return JsonBack(Dao.Get<BoardMaster>("board.bms", new System.Collections.Hashtable() { { "bmposition", 1 },{"bmnos",cmmenu.bmnos } }));
}
[HttpPost]
public JsonResult CMCalc(String data)
{
var sd = new Hashtable() { { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() }, { "Ds", new List<CMCalc>() { } } };
var ds = new List<CMCalc>() { };
foreach(var s in data.Split(';'))
{
var v = s.Split(':');
ds.Add(new CMCalc()
{
cmno = GetInt(v[0]),
infee = GetInt(v[1]),
outfee = GetInt(v[2]),
feeloc = GetInt(v[3]),
feebkpr = GetInt(v[4]),
feebrt = GetInt(v[5]),
feemat = GetInt(v[6]),
feefoo = GetInt(v[7]),
feeetc = GetInt(v[8]),
prtcnt = GetInt(v[9])
});
}
sd["Ds"] = ds;
return JsonOK(Dao.Save("cm.cmcalc", sd));
}
[HttpPost]
public JsonResult CheckCmCalc(int cmno)
{
return JsonBack(new JsonRtn() { code = 1000 ,obj = Dao.Get<CMCalc>("cm.cmcalc.print", cmno)});
}
[HttpPost]
public JsonResult CMPCGet(int pcno)
{
return JsonBack(Dao.Get<CM>("cm.pcms", new System.Collections.Hashtable() { { "pcno", pcno } }));
}
[HttpPost]
public JsonResult QuestionGet(int qno)
{
var rtn = new Hashtable() { };
rtn.Add("q", Dao.Get<Question>("cm.questions", new Hashtable() { { "qno", qno } }).First());
rtn.Add("qis", Dao.Get<QuestionItem>("cm.questionitems", new Hashtable() { { "qno", qno } }));
return JsonBack(rtn);
}
}
}