using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using EMIS.CommonLogic.Students; using Bowin.Common.Exceptions; using EMIS.ViewModel.ExaminationApply; using EMIS.CommonLogic.ExaminationApply; using EMIS.ViewModel.Students; using EMIS.ViewModel; using EMIS.Entities; using EMIS.Web.Controls; using EMIS.Utility; using System.IO; using EMIS.ViewModel.FeeManage; namespace EMIS.Web.Controllers.StudentSystem.Examine { [Authorization] public class ExamineApplyController : Controller { public IStudentsServices StudentsServices { get; set; } public IStudentRecordServices StudentRecordService { get; set; } public IExamineApplyServices ExamineApplyService { get; set; } public IExaminationSubjectServices ExaminationSubjectServices { get; set; } // // GET: /ExamineApply/ [HttpGet] public ActionResult Apply() { var user = HttpContext.User as EMIS.Utility.FormValidate.CustomPrincipal; var Student = StudentRecordService.GetStudentByStudentNo(user.UserID); return View(Student); } [HttpGet] public ActionResult RegisterList() { var user = HttpContext.User as EMIS.Utility.FormValidate.CustomPrincipal; var Student = StudentRecordService.GetStudentByStudentNo(user.UserID); return View(Student); } /// /// 获取可报名列表 /// /// /// [HttpPost] public ActionResult GetExaminationSubjectList() { var user = HttpContext.User as EMIS.Utility.FormValidate.CustomPrincipal; return base.Json(ExamineApplyService.GetExaminationSubjectList(user.UserID)); } /// /// 获取已报名列表 /// /// [HttpPost] public ActionResult GetExaminationRegisterList() { var user = HttpContext.User as EMIS.Utility.FormValidate.CustomPrincipal; return base.Json(ExamineApplyService.GetExaminationRegisterList(user.UserID)); } [HttpGet] public ActionResult Register(Guid? ExaminationBatchProjectID) { var user = HttpContext.User as EMIS.Utility.FormValidate.CustomPrincipal; StudentListView registerView = new StudentListView(); if (ExaminationBatchProjectID.HasValue) { registerView = ExamineApplyService.GetRegisterViewByExaminationBatchProjectID(ExaminationBatchProjectID, user.UserID); } return View(registerView); } [HttpPost] public ActionResult Register(StudentListView registerView) { try { var user = HttpContext.User as EMIS.Utility.FormValidate.CustomPrincipal; var accepts = new List { ".jpg" }; var postedFile = Request.Files["RegistView.PhotoUrl"]; if (postedFile != null && !string.IsNullOrEmpty(postedFile.FileName) && !accepts.Contains(Path.GetExtension(postedFile.FileName).ToLower())) { throw new Exception("只允许上传.jpg格式的文件。"); } if (postedFile != null && !string.IsNullOrEmpty(postedFile.FileName) && (postedFile.ContentLength > (200 * 1024) || postedFile.ContentLength < (50 * 1024))) { throw new Exception("只允许上传50-200k大小的照片。"); } string photoUrl = FileUploadHelper.UploadFile(postedFile); if (photoUrl != null) { registerView.RegistView.PhotoUrl = photoUrl; } var register = ExamineApplyService.StudentRegister(registerView, user.UserID); //return Json(new ReturnMessage() //{ // IsSuccess = true, // Message = "报名成功", // Type = 1, //}); if (register.IsOnlinePay) { return RedirectToAction("MsgShowAndOpenAddUrl", "Common", new { title = "在线缴费", WindowID = Request["WindowID"], msg = "报名成功,请进入”已报项目“在规定时间内完成缴费", url = Url.Content("~/Weixin/NativePay").AddMenuParameter() + "&examinationRegistrationID=" + register.ExaminationRegistrationID + "&fee=" + register.Fee + "&feeTypeName=" + register.FeeTypeName, }); } else { return RedirectToAction("MsgShow", "Common", new { WindowID = Request["WindowID"], msg = "报名成功,请进入”已报项目“在规定时间内完成缴费", url = Url.Action("Apply").AddMenuParameter() }); } } catch (Exception ex) { return RedirectToAction("MsgShow", "Common", new { WindowID = Request["WindowID"], msg = "报名失败,原因:" + ex.Message, url = Url.Action("Apply").AddMenuParameter() }); //return Json(new ReturnMessage() //{ // IsSuccess = false, // Message = "报名失败,原因:" + ex.Message //}); } } public ActionResult Cancel(string ExaminationRegistrationIDs) { try { var examinationRegistrationIDList = ExaminationRegistrationIDs.Split(',').Where(x => x.IndexOf("-") >= 0).Select(x => new Guid(x)).ToList(); var user = HttpContext.User as EMIS.Utility.FormValidate.CustomPrincipal; var registrationList = ExamineApplyService.GetExaminationRegistrationPayViewByRegistrationID(examinationRegistrationIDList); if (registrationList.Where(x => x.RecordStatus != (int)EX_ExaminationRegistrationStatus.Paid && x.RecordStatus != (int)EX_ExaminationRegistrationStatus.ForPay).Count() > 0) { throw new Exception("只有待缴费或者已缴费状态的数据才能取消报名!"); } var changeIDList = registrationList.Where(x => x.RecordStatus == (int)EX_ExaminationRegistrationStatus.Paid).Select(x => x.ExaminationRegistrationID).ToList(); var deleteIDList = registrationList.Where(x => x.RecordStatus == (int)EX_ExaminationRegistrationStatus.ForPay).Select(x => x.ExaminationRegistrationID).ToList(); //待缴费的需要按照原来的判断(已打包,报名时间) ExamineApplyService.CheckCanCancelOnline(deleteIDList); ExamineApplyService.ChangeAndDelete(new List(), deleteIDList); //已缴费的撤销报名需要进行退费申请 if (changeIDList.Count() > 0) { return Json(new ReturnMessage() { IsSuccess = true, Message = ExaminationRegistrationIDs, Type = 99, }); } //foreach (var registration in registrationList.Where(x => x.RecordStatus == (int)EX_ExaminationRegistrationStatus.Paid)) //{ // //是否线上缴费 // var isOnlinePay = ExamineApplyService.CheckIsOnlinePay(registration.ExaminationRegistrationID); // if (isOnlinePay) // { // WechatHelper.Refund(registration.OrderID, registration.Fee ?? 0, (registration.Fee ?? 0) - (registration.RefundTotal ?? 0)); // } //} //ExamineApplyService.ChangeAndDelete(changeIDList, deleteIDList); return Json(new ReturnMessage() { IsSuccess = true, Message = "撤销成功", }); } catch (Exception ex) { return Json(new ReturnMessage() { IsSuccess = false, Message = "撤销失败,原因:" + ex.Message, }); } } public ActionResult CheckIsOnlinePay(string ExaminationRegistrationIDs) { try { var examinationRegistrationIDList = ExaminationRegistrationIDs.Split(',').Where(x => x.IndexOf("-") >= 0).Select(x => new Guid(x)).ToList(); var registrationList = ExamineApplyService.GetExaminationRegistrationPayViewByRegistrationID(examinationRegistrationIDList); List isOnlinePayList = new List(); foreach (var registration in registrationList.Where(x => x.RecordStatus == (int)EX_ExaminationRegistrationStatus.Paid)) { var isOnlinePay = ExamineApplyService.CheckIsOnlinePay(registration.ExaminationRegistrationID); isOnlinePayList.Add(isOnlinePay); } if (isOnlinePayList.Where(x => x == true).Count() > 0 && isOnlinePayList.Where(x => x == false).Count() > 0) { return Json(new ReturnMessage() { IsSuccess = false, Message = "批量撤销已缴费的报名,只能撤销同样是线上缴费或者同样是线下缴费的数据", }); } else if (isOnlinePayList.Where(x => x == true).Count() == isOnlinePayList.Count()) { Cancel(ExaminationRegistrationIDs); } else { return Json(new ReturnMessage() { IsSuccess = true, Message = ExaminationRegistrationIDs, Type = 99, }); //return RedirectToAction("MsgShowAndOpenAddUrl", "Common", new //{ // title = "退款信息确认", // WindowID = Request["WindowID"], // msg = "请对开户银行和银行卡号信息进行填写确认", // url = Url.Content("~/ExamineApply/Refund").AddMenuParameter() + "&examinationRegistrationIDs=" + ExaminationRegistrationIDs, //}); } return Json(new ReturnMessage() { IsSuccess = true, Message = "撤销成功", }); } catch (Exception ex) { string mge = ex.Message; return Json(new ReturnMessage() { IsSuccess = false, Message = "撤销失败,原因:" + mge, }); } } [HttpPost] [AllowAnonymous] public ActionResult CanPay(Guid examinationRegistrationID) { try { this.ExamineApplyService.CheckCanPay(examinationRegistrationID); return Json(new ReturnMessage() { IsSuccess = true, Message = "可以缴费" }); } catch (Exception ex) { return Json(new ReturnMessage() { IsSuccess = false, Message = "缴费失败,原因:" + ex.Message }); } } public ActionResult NativePay(Guid examinationRegistrationID, decimal fee, string feeTypeName) { var nativePayView = new NativePayView(); nativePayView.ExaminationRegistrationID = examinationRegistrationID; nativePayView.Fee = fee; nativePayView.FeeTypeName = feeTypeName; return View(nativePayView); } [HttpGet] public ActionResult Refund(string examinationRegistrationIDs) { var refundView = new RefundView(); var user = HttpContext.User as EMIS.Utility.FormValidate.CustomPrincipal; refundView = ExamineApplyService.GetRefundViewByUserID(user.UserID); ViewBag.ExaminationRegistrationIDs = examinationRegistrationIDs; return View(refundView); } [HttpPost] public ActionResult Refund(RefundView refundView) { try { var examinationRegistrationIDs = Request.Form["SelectIDs"]; var examinationRegistrationIDList = examinationRegistrationIDs.Split(',').Where(x => x.IndexOf("-") >= 0).Select(x => new Guid(x)).ToList(); ExamineApplyService.RefundApply(refundView, examinationRegistrationIDList); return RedirectToAction("MsgShow", "Common", new { WindowID = Request["WindowID"], msg = "已提交退费申请,请在24小时内带齐办理资料(收费票据、银行卡复印件)到鉴定考试中心审核是否可以退费。", url = Url.Action("RegisterList").AddMenuParameter() }); //return Json(new ReturnMessage() //{ // IsSuccess = true, // Message = "退费申请提交成功,请等待老师审核!" //}); } catch (Exception ex) { return RedirectToAction("MsgShow", "Common", new { WindowID = Request["WindowID"], msg = "退费申请提交失败,原因:" + ex.Message, url = Url.Action("RegisterList").AddMenuParameter() }); //return Json(new ReturnMessage() //{ // IsSuccess = false, // Message = "退费申请提交失败,原因:" + ex.Message //}); } } //public ActionResult ApplySubmit(string ExaminationSubjectID) //{ // try // { // Guid subjectID = Guid.Parse(Request.Params["ExaminationSubjectID"]); // int version = int.Parse(Request.Params["Version"]); // var user = HttpContext.User as EMIS.Utility.FormValidate.CustomPrincipal; // ExamineApplyService.Value.ApplySubmit(subjectID, user.UserID); // return base.Json("报名成功"); // } // catch (Exception ex) // { // GetExceptionDetailMessage(ex); // string mge = GetExceptionDetailMessage(ex).Message; // return base.Json("报名失败,原因:" + mge); // } //} //Exception GetExceptionDetailMessage(Exception ex) //{ // if (ex.InnerException == null) // { // return ex; // } // else // return GetExceptionDetailMessage(ex.InnerException); //} } }