/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Click(object sender, EventArgs e) { Button btn = sender as Button; string btnStr = string.Empty; try { if (btn != null) { btnStr = btn.Text; btn.Text = "处理中..."; btn.Enabled = false; } string[] checkStudentWorks = GetSelectedThumbnails(this.panelWork); if (checkStudentWorks == null || checkStudentWorks.Length == 0) { this.OnMessageEvent(MessageType.Normal | MessageType.PopupInfo, "请选中学生作业后方可保存!"); btn.Text = btnStr; btn.Enabled = true; return; } LocalWorkReview teaReview = Tools.GetEvaluateFromWin(this.store, this.cbbReviewValue, this.txtSubjectiveReviews); if (teaReview == null) { this.OnMessageEvent(MessageType.Normal | MessageType.PopupInfo, "请评阅后方可保存!"); btn.Text = btnStr; btn.Enabled = true; return; } btn.Text = "保存中.."; bool bPublish = this.chkPublish.Checked, bUpload = this.chkUpload.Checked; this.store = LocalStudentWorkStore.DeSerializer(this.store.FileSavePath()); for (int i = 0; i < checkStudentWorks.Length; i++) { LocalStudent ls = this.store.Students[checkStudentWorks[i]]; if (ls != null && ls.Work != null) { WorkStoreHelper.WorkReviewQueueEntity entity = new WorkStoreHelper.WorkReviewQueueEntity(ls.StudentID, ls.Work.WorkID, bPublish ? (EnumWorkStatus.Review | EnumWorkStatus.Release) : EnumWorkStatus.Review, teaReview, this.store.FileSavePath()); entity.Changed += new RaiseChangedHandler(delegate(string msg) { this.OnMessageEvent(MessageType.Normal, msg); }); //添加到保存队列。 WorkStoreHelper.ReviewWorkToQueueStore(entity); this.OnMessageEvent(MessageType.Normal, string.Format("开始保存[{0},{1}]作业批阅...",ls.StudentName, ls.Work.WorkName)); } } if (bUpload) { btn.Text = "上传中..."; WorkUploadToServer win = new WorkUploadToServer(this.CoreService, this.store, checkStudentWorks); win.StartPosition = FormStartPosition.CenterParent; win.Changed += new RaiseChangedHandler(delegate(string msg) { this.OnMessageEvent(MessageType.Normal, msg); }); win.ShowDialog(this); } btn.Text = "刷新状态..."; //刷新学生作品评阅状态。 for (int i = 0; i < checkStudentWorks.Length; i++) { StudentEx stuEx = Program.STUDENTS != null ? Program.STUDENTS[checkStudentWorks[i]] : null; if (stuEx != null && ((stuEx.Status & StudentControl.EnumStudentState.Review) != StudentControl.EnumStudentState.Review)) { stuEx.Status |= StudentControl.EnumStudentState.Review; if (this.NetService != null) this.NetService.OnUpdateControls(stuEx); } } // this.DialogResult = DialogResult.OK; this.Close(); } catch (Exception ex) { Program.GlobalExceptionHandler(ex); this.OnMessageEvent(MessageType.Normal, "发生异常:" + ex.Message); } finally { if (btn != null) { btn.Text = btnStr; btn.Enabled = true; } } }
/// <summary> /// 上传作业 /// </summary> /// <param name="poxy"></param> /// <param name="swp"></param> private void uploadWorks(TeaClientServicePoxyFactory poxy, StudentWorkUpload swp) { try { if (swp.Number > this.repeatNumber) { swp.Progress.UploadFailure("已重复上传[" + (swp.Number - 1) + "]次达到最大限定次数!"); return; } string err = null; swp.Number += 1; if ((swp.Status = poxy.UploadStudentWorks(swp, out err) ? 1 : -1) == 1) { WorkStoreHelper.WorkReviewQueueEntity entity = new WorkStoreHelper.WorkReviewQueueEntity(swp.Student.StudentID, swp.Student.Work.WorkID, EnumWorkStatus.Upload, null, swp.Store.FileSavePath()); entity.Changed += this.OnChanged; WorkStoreHelper.UpdateWorkStatusToQueueStore(entity); this.OnChanged("开始保存[" + swp.Student.StudentName + "," + swp.Title + "]作业状态..."); } else if (!string.IsNullOrEmpty(err)) { this.OnChanged("[" + swp.Title + "]" + err); } if (swp.Status == -1 && swp.Number <= this.repeatNumber) { this.uploadFailureQueue.Enqueue(swp); } } catch (Exception exp) { swp.Progress.UploadFailure(exp.Message); this.OnChanged("上传[" + swp.Student.StudentName + "," + swp.Title + "]时发生异常:" + exp.Message); Yaesoft.SFIT.Client.Utils.UtilTools.OnExceptionRecord(exp, this.GetType()); } }