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; using System.Web.ModelBinding; namespace NP.Base.Controllers { public partial class FOCommonController : NP.Base.BaseController { protected override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); } protected override void OnException(ExceptionContext filterContext) { base.OnException(filterContext); if (Request.IsAjaxRequest()) { filterContext.Result = new RedirectResult("/Account/NoPermit?_code=" + NP.Base.ENUM.JSONCode.Error + "&_msg=알수없는오류"); } else { filterContext.Result = new RedirectResult("/Account/Error?_code=" + NP.Base.ENUM.JSONCode.Error + "&_msg=알수없는오류"); } } public JsonResult Html(int pno) { return JsonBack(Dao.Get("mm.pages", new Hashtable() { { "pno", pno } }).First()); } public JsonResult HidePop(int pno) { var p = CookieGet("popup", ""); CookieSet("popup", p == "" ? pno.ToString() : (p + "p" + pno), 7); return JsonOK(1); } public void DownFile(Int64 fno, int getdel = 0, String loginfo = "", int issubject = 0) { Dao.Save("sys.file.down", fno); var file = Dao.Get("sys.file.get" + (getdel > 0 ? "all" : ""), fno).FirstOrDefault(); //if (!string.IsNullOrEmpty(loginfo)) //{ // LogSet(GetLong(loginfo.Split('|')[0]), null, fno, GetInt(loginfo.Split('|')[1]), 5, null); //} //if (((file.tablename ?? "").ToUpper() +"."+ (file.columnname??"").ToUpper()).Equals("삭제체크테이블.삭제체크컬럼")) //{ // //프로젝트파일 권한 확인 // if (Dao.Get("sys.file.authcheck.orderfgno", new Hashtable() { {"FGNo", file.fgno }, {"UserNo", SUserInfo.UserNo } }).First() < 1) // { // return; // } //} //else if ((file.UsingTable ?? "").ToUpper().Equals("users.fgno")) //{ // //이력서파일 권한 확인 // if (Dao.Get("sys.file.authcheck.usersfgno", new Hashtable() { { "FGNo", file.FGNo }, { "UserNo", SUserInfo.UserNo } }).First() < 1) // { // return; // } //} if (Request.UrlReferrer == null || (!SUserInfo.IsAdmin && file.tablename == "lectsd" && file.columnname == "fgno" && SUserInfo.UserNo != file.cno)) { //Response.AppendHeader("Content-Disposition", cds.ToString()); //return File(string.Format("{0}\\{1}", uploadDir, entity.SaveFileName), "application/file"); Response.Clear(); Response.ClearHeaders(); Response.ClearContent(); Response.ContentType = "Application/octet-stream"; Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode("권한없음.png")); //Response.AppendHeader("Content-Length", file.filesize.ToString()); Response.TransmitFile(string.Format("{0}", Server.MapPath("/img/repute_tail.png"))); Response.Flush(); Response.End(); } else { string fileurl = Server.MapPath((issubject == 1 ? file.fullurl2 : file.fullurl)); //var cds = new System.Net.Mime.ContentDisposition //{ // FileName = Server.UrlEncode(file.orgname), // 파일의 원래이름(등록할때의 이름) // Inline = false, //}; //Response.AppendHeader("Content-Disposition", cds.ToString()); //return File(string.Format("{0}\\{1}", uploadDir, entity.SaveFileName), "application/file"); Response.Clear(); Response.ClearHeaders(); Response.ClearContent(); Response.ContentType = "Application/octet-stream"; Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(file.orgname)); Response.AppendHeader("Content-Length", file.filesize.ToString()); Response.TransmitFile(string.Format("{0}", fileurl)); Response.Flush(); Response.End(); } } [HttpPost] public JsonResult Login(String uid, String upw, bool issaveid) { if (issaveid) { CookieSet("savedid", uid); } else { CookieClear("savedid"); } if (!string.IsNullOrEmpty(uid) && !string.IsNullOrEmpty(upw)) { var u = GoLogin(uid, upw); if (u != null) { if (u.userno < 0) { return JsonBack(new JsonRtn() { code = 1000, obj = -1, msg = u.subdomain }); } return JsonOK(u.userno); } } return JsonOK(0); } [HttpPost] public JsonResult GetBoards(int btype, int pn, int prc, String sc) { return JsonBackList(Dao.Get("board.list", new Hashtable() { { "BType", btype }, { "SubjectContents", sc.Trim() == "" ? null : sc.Trim() }, { "PAGENUM", pn }, { "PAGEROWSIZE", prc } })); } [HttpPost] public JsonResult CMInnings(int cmno) { return JsonBack(Dao.Get("cm.cminnings", new System.Collections.Hashtable() { { "cmno", cmno } })); } [HttpPost] public JsonResult CMRelays(int cmno) { var cms = Dao.Get("cm.cmrelays", new System.Collections.Hashtable() { { "cmno", cmno }, { "userno", SUserInfo.UserNo } }); return JsonBack(new Hashtable() { { "pre", cms.Where(w => w.ispre == 1).ToList() }, { "after", cms.Where(w => w.ispre == 0).ToList() } }); } [HttpPost] public JsonResult AssignFind(String brno, int? pno) { brno = (brno ?? "").Replace("-", ""); return JsonBack(Dao.Get("users.assigns", new Hashtable() { { "brno", brno }, { "pagenum", pno }, { "pagerowsize", 10 } })); } [HttpPost] public JsonResult AssignSave(String brno, String asname,String ceoname) { var ht = new Hashtable() { { "asno", 0 }, { "isjoin", 0 }, { "ascode", Dao.Get("users.assign.newascode", 1).First() }, { "joinprice", 0 }, { "asname", asname }, { "brno", brno.Replace("-", "")}, { "ceoname", ceoname }, { "salesamount", 0 }, { "mcount", 0 }, { "status", 1 }, { "isdel", 0 }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }; Dao.Insert("users.assign.in", ht); return JsonOK(GetInt(ht["asno"])); } [HttpPost] public JsonResult Join(Users u) { u.uip = GetUserIP(); //이메일, 아이디 중복 체크 var u129 = Dao.Get("users.checkuser", new Hashtable() { { "userid", u.userid }, { "email", u.email },{"mobile",u.mobile } }).First(); if (u129 != 9) { return JsonOK(u129 * -1); } u.userpass = NP.Base.Lib.KISA_SHA256.SHA256Hash(u.userpass.Trim()); u.birthday = u.birthday != null && u.birthday.Length == 8 ? (u.birthday ?? "").Substring(0, 4) + "-" + (u.birthday ?? "").Substring(4, 2) + "-" + (u.birthday ?? "").Substring(6, 2) : null; u.usertype = u.status = 1; Dao.Insert("users.in", u); return JsonOK(u.userno); } [HttpPost] public JsonResult FindMe(String email) { if (string.IsNullOrEmpty(email)) { return JsonOK(-1); } email = email.Replace(" ", "").Replace(" ", ""); List users = new List() { }; bool IsEmail = false; if (email.Contains("@")) { IsEmail = true; users = Dao.Get("users.findme", new Hashtable() { { "email", email } }).ToList(); } //else //{ // users = Dao.Get("users.findme", new Hashtable() { { "Mobile1", em }, { "Mobile2", em.Replace("-", "") } }).ToList(); //} if (users.Count() != 1) { //검색결과 2개 개정이라면 보내면 안됨..다른사람일 수도 return JsonOK(-1); } var user = users.First(); //메시지 전송시간 기록 Random r = new Random(); int pwcallno = r.Next(1, 30000); Dao.Save("users.pwcalltime", new Hashtable() { { "userno", user.userno }, { "pwcallno", pwcallno } }); var masteremail = GetConfig("masteremail"); String fronturl = GetConfig("fronturl"); //if (IsEmail) //{ //var et = Dao.Get("mm.mailtp.get", 1).FirstOrDefault(); //var MHtml = ""; //if (et != null) //{ // MHtml = et.MHtml.Replace("src=\"/Files/Editor", "src=\"" + fronturl + "/Files/Editor").Replace("^비밀번호링크^", fronturl + "/Account/FindMe?PWCallNo=" + pwcallno + "&UserNo=" + user.UserNo).Replace("^회원명^", user.UserName).Replace("../img/", fronturl + "/img/").Replace("^fronturl^", fronturl); //} //else //{ var MHtml = "\"\"

안녕하세요, " + user.username + "님,
당신의 영남건설기술교육원 비밀번호를 재설정하기 위한 링크를 전달합니다.
" + "아래 링크를 클릭하셔서 비밀번호를 재설정해주세요.

" + "비밀번호 재설정

이 링크는 24시간 뒤 만료됩니다."; //} //return JsonOK(SendEmail(0, user.userid, null, null, user.username + "님, 유앤파트너즈 비밀번호를 재설정할 수 있는 링크를 전달합니다.", MHtml)); return JsonOK(SendEmail(masteremail.Split(';')[1], GetInt(masteremail.Split(';')[2]), masteremail.Split(';')[3], masteremail.Split(';')[4], 999, user.email, masteremail.Split(';')[0], "영남건설기술교육원 운영자", "[영남건설기술교육원] 비밀번호 찾기 안내", MHtml, "", "0:0")); //} //else //{ // var html = "회원님의 이메일주소는 " + user.UserId + " 아래 링크를 클릭해주셔서 인증을 완료해주세요. [" + fronturl + "/Account/FindMe?PWCallNo=" + pwcallno + "&UserNo=" + user.UserNo + "]"; // return JsonOK(SendSms(null, user.Mobile, "[유앤파트너즈] 계정찾기", html, null, true, "7")); // //Sms.Save("test", new Hashtable() { }); // //return JsonOK(1); //} } [HttpPost] public JsonResult FindMeFinal(VMUser vm) { if (vm.userno > 0 && vm.pwcallno > 0 && !string.IsNullOrEmpty(vm.User.userpass) && vm.User.userpass.Trim() != "") { if (Dao.Save("users.resetuser", new Hashtable() { { "userpass", NP.Base.Lib.KISA_SHA256.SHA256Hash(vm.User.userpass) }, { "userno", vm.userno }, { "pwcallno", vm.pwcallno } }) == 1) { //자동로그인처리 var u = GoLogin(vm.User.userid, vm.User.userpass); if (u != null) { return JsonOK(1); } } } return JsonOK(0); } [HttpPost] public JsonResult MyPageLeftMenu(String on) { CookieSet("mypageleftmenutoggle", on); return JsonOK(1); } [HttpPost] public JsonResult CRoomPageLeftMenu(String on) { CookieSet("croompageleftmenutoggle", on); return JsonOK(1); } [HttpPost] public JsonResult IsAuth() { if (SUserInfo.UserNo > 0) { return JsonOK(1); } return JsonOK(0); } [HttpPost] public JsonResult PRGRS(Int64 lectno, Int64 cmino) { if (SUserInfo.UserNo > 0) { try { return Json(Dao.Get("cr.getprogress", new Hashtable() { { "lectno", lectno }, { "cmino", cmino } }).First(), JsonRequestBehavior.AllowGet); } catch (Exception ex) { Console.WriteLine(ex.Message); } } return Json(-1, JsonRequestBehavior.AllowGet); } [HttpPost] public JsonResult StudyLog(Int64 logno, Int64 lectno, Int64 cmino, int cpno, int studysec, int ispc, int nextcpno, int getiframe, int issample = 0, int psec = 0) { if (SUserInfo.UserNo > 0 || issample > 0) { int rtn = 0; if (issample < 1) { rtn = Dao.Save("cr.studylog", new Hashtable() { { "logno", logno }, { "lectno", lectno }, { "cmino", cmino },{ "userno",SUserInfo.UserNo}, {"psec", psec }, { "cpno", cpno }, { "studysec", studysec }, { "ispc", ispc }, {"uno", SUserInfo.UserNo },{"uip",GetUserIP() } }); } if (nextcpno > 0) { String ua = ""; try { ua = (Request.UserAgent ?? "").ToLower(); } catch (Exception ex) { Logger.Error("ExamStart Get UserAgent Info Error" + ex.StackTrace); } var lip = new LectInningPage() { lectno = lectno, cmino = cmino, cpno = nextcpno, userno = SUserInfo.UserNo, uno = SUserInfo.UserNo, uip = GetUserIP(), ispc = ispc, webkitinfo = ua }; if (issample < 1) { Dao.Insert("cr.lectinningpage.in", lip); if (lip.logno < 1 || getiframe == 0) { return JsonOK(lip.logno); } } return JsonBack(new JsonRtn() { code = 1000, msg = Dao.Get("cr.ctpage.iframe", new Hashtable() { { "cpno", nextcpno }, { "src", ispc > 1 ? "srcp" : "srcm" } }).First(), obj = lip.logno }); } return JsonOK(rtn); } else { return JsonOK(0); } } [HttpPost] public JsonResult StudyLogMid(Int64 lectno, Int64 cmino) { if (SUserInfo.UserNo > 0) { return JsonOK(Dao.Save("cr.studymid", new Hashtable() { { "lectno", lectno }, { "cmino", cmino } })); } return JsonOK(0); } [HttpPost] public JsonResult CheckInningChange(Int64 lectno, Int64 cmino, bool ispre) { if (SUserInfo.UserNo > 0) { var cmi = Dao.Get("cr.inningchange." + (ispre ? "pre" : "next"), new Hashtable() { { "lectno", lectno }, { "cmino", cmino } }).FirstOrDefault(); if (cmi == null) { return JsonBack(new JsonRtn() { code = 1000, obj = -1 }); } else if (cmi.iseq > 1 && cmi.precmino > 0 && cmi.isseq == 1 && cmi.preistatus != 2) { return JsonBack(new JsonRtn() { code = 1000, obj = -2 }); } else if (cmi.isrebate == 1) { var intval = Dao.Get("cr.lectinnings", new System.Collections.Hashtable() { { "lectno", lectno }, { "isfinishtoday", 1 } }).Count(); if (intval > 5 && cmi.istatus < 2) { return JsonBack(new JsonRtn() { code = 1000, obj = -3 }); } } return JsonOK(cmi.cmino); } return JsonOK(0); } [HttpPost] public JsonResult idchk(String id) { //이메일, 아이디 중복 체크 var u129 = Dao.Get("users.usersbyuserids", new Hashtable() { { "userids", "'"+id+"'" },{"usertype",1} }); if (u129.Count() > 0) { return JsonOK(-1); } return JsonOK(1); } [HttpPost] public JsonResult GetSubCm(int cmno, int? studyplace = null) { var result = Dao.Get("cm.subcms", new System.Collections.Hashtable() { { "cmno", cmno }, { "studyplace", studyplace } }); return JsonBack(result); } [HttpPost] public JsonResult GetCmUser(int cmno) { var result = Dao.Get("cm.cmuser", new System.Collections.Hashtable() { { "cmno", cmno } }); return JsonBack(result); } [HttpPost] public JsonResult GetScdForMixEdu(int cmno, int? month) { var result = Dao.Get("cm.cminningscds.applyedu", new System.Collections.Hashtable() { { "cmno", cmno }, { "month", (month == null) ? null : month } }); foreach (var item in result) { item.scdInfoSummary = string.Format("[{0}] {1}", item.studyplacename, item.estart.ToString("yyyy년 MM월 dd일 ddd요일 HH:mm")); if (item.estart < DateTime.Now) item.isEnd = true; } return JsonBack(result); } [HttpPost] public JsonResult GetCheckLectIsComplete(int cmno) { var result = Dao.Get("cm.lectcheckuser", new System.Collections.Hashtable() { { "userno", SUserInfo.UserNo },{ "cmno", cmno } }).First(); return JsonBack(result); } [HttpPost] public JsonResult UpdateScd(int cmisno, int lectno) { var pass = Dao.Get("cm.cminningscdcheck", new System.Collections.Hashtable() { { "cmisno", cmisno }}).First(); if (pass == 0) return JsonBack(new JsonRtn() { code = 0, msg = "해당 일정은 모집 인원이 마감되었습니다." }); else if(pass > 0) { Dao.Save("cm.lectcmisno.up" , new System.Collections.Hashtable() { { "cmisno", cmisno }, { "lectno", lectno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }); return JsonBack(new JsonRtn() { code = 1, msg = "일정을 변경하였습니다." }); } return JsonBack(new JsonRtn() { code = -1, msg = "개발자에게 문의하세요." }); } [HttpPost] public JsonResult CheckExistSnsId(string snsid, int jointype) { var result = Dao.Get("users.check.snsid", new Hashtable() { { "snsid", snsid }, { "jointype", jointype } }).Count(); if (result > 0) { return JsonBack(new JsonRtn() { code = 1 }); } else { return JsonBack(new JsonRtn() { code = -1 }); } } [HttpPost] public JsonResult SnsLogin(String uid, bool isSns = false) { if (!string.IsNullOrEmpty(uid)) { var u = GoLogin(uid, "", isSns); if (u != null) { if (u.userno < 0) { return JsonBack(new JsonRtn() { code = 1000, obj = -1, msg = u.subdomain }); } return JsonOK(u.userno); } } return JsonOK(0); } [HttpPost] public JsonResult SnsLink(String snsid, int jointype = 0) { try { Dao.Save("users.snslink.up", new System.Collections.Hashtable() { { "userno", SUserInfo.UserNo }, { "snsid", snsid }, { "jointype", jointype }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }); return JsonBack(new JsonRtn() { code = 1 }); } catch (Exception e) { return JsonBack(new JsonRtn() { code = -1 }); } } [HttpPost] public JsonResult SendLakey(Int64 lectno, String mobile) { Random r = new Random(); int lakey = r.Next(100000, 999999); SmsAuth sa = new SmsAuth() { lakey = lakey.ToString(),lectno=lectno }; String msg = "[영남건설기술교육원]\n\n영남건설기술교육원 인증번호 [" + lakey + "] 입니다."; var users = Dao.Get("users.findme", new Hashtable() { { "mobile", mobile } }).ToList(); if(users.Count() == 0) { return JsonBack(new JsonRtn() { code = -2 }); } if(users.Count() != 1) { return JsonBack(new JsonRtn() { code = -1 }); } Dao.Insert("common.smsauth", sa); IList us = new List(); us.Add(new MemoUser() { userno = SUserInfo.UserNo, mobile = mobile, title = "인증번호", mcontents = msg, smstype = "A", isok = 1 }); SaveTalk(us, "alarm"); //Dao.Insert("common.atalk.send", new Hashtable() { { "senderkey", GetConfig("mastersms").Split(';')[0] },{"method","alarm" }, { "DEST_PHONE", mobile.Replace(" ", "").Replace("-", "") }, { "SEND_PHONE", GetConfig("mastersms").Split(';')[1] },{"title","인증번호" }, { "MSG_BODY", msg },{"replace_type","S" } }); return JsonOK(sa.authno); } [HttpPost] public JsonResult ExtendLakey(int authno) { return JsonOK(Dao.Save("common.sms.extend", new Hashtable() { { "authno", authno } })); } [HttpPost] public JsonResult ChkLakey(String lakey, int authno) { IList datas = Dao.Get("common.sms.chk", new Hashtable() { { "authno", authno } }); if (datas.Count() < 1) { return JsonOK(0); } else if (datas.Where(w => w.strval.Replace(" ", "").Equals(lakey.Replace(" ", "")) && w.time.AddMinutes(3) < DateTime.Now).Count() > 0) { return JsonBack(new JsonRtn() { code = 1 }); } else if (datas.Where(w => w.strval.Replace(" ", "").Equals(lakey.Replace(" ", "")) && w.time.AddMinutes(3) >= DateTime.Now).Count() > 0) { Dao.Save("lect.isatt.in", new System.Collections.Hashtable() { { "lectno", datas.FirstOrDefault().intval2 }, { "lakey", datas.FirstOrDefault().strval } }); return JsonBack(new JsonRtn() { code = 1000, obj = datas.First() }); } return JsonOK(0); } } }