示例#1
0
 /**
  * 显示毕业要求
  * @author FuRongxin
  * @date    2016-01-23
  * @version 2.0
  * @return  \Illuminate\Http\Response 毕业要求列表
  */
 public function index()
 {
     // 获取毕业要求学分
     $graduation = Requirement::credits(Auth::user())->get();
     // 获取已选课程学分
     $selected = Selcourse::selectedCredits(Auth::user())->get();
     // 获取已修读学分
     $studied = Score::studiedCredits(Auth::user())->get();
     $credits = [];
     foreach ($graduation as $item) {
         if ('B' == $item->xz) {
             $credits['B'][$item->pt . $item->xz] = ['title' => $item->platform->mc . $item->property->mc, 'graduation' => $item->xf];
         } else {
             $credits['X'][$item->pt . $item->xz] = ['title' => $item->platform->mc . $item->property->mc, 'graduation' => $item->xf];
         }
     }
     foreach ($selected as $item) {
         if ('B' == $item->xz) {
             $credits['B'][$item->pt . $item->xz]['selected'] = $item->xf;
         } else {
             $credits['X'][$item->pt . $item->xz]['selected'] = $item->xf;
         }
     }
     foreach ($studied as $item) {
         if ('B' == $item->kcxz) {
             $credits['B'][$item->pt . $item->kcxz]['studied'] = $item->xf;
         } else {
             $credits['X'][$item->pt . $item->kcxz]['studied'] = $item->xf;
         }
     }
     $title = '毕业要求';
     return view('requirement.index', compact('title', 'credits'));
 }
示例#2
0
 /**
  * 显示课程学生名单
  * @author FuRongxin
  * @date    2016-03-18
  * @version 2.0
  * @param  \Illuminate\Http\Request  $request 学生名单请求
  * @param   string $kcxh 12位课程序号
  * @return  \Illuminate\Http\Response 学生名录列表
  */
 public function show(Request $request, $kcxh)
 {
     $inputs = $request->all();
     $year = isset($inputs['year']) ? $inputs['year'] : session('year');
     $term = isset($inputs['term']) ? $inputs['term'] : session('term');
     $students = Selcourse::whereKcxh($kcxh)->whereNd($year)->whereXq($term)->orderBy('xh')->get();
     $task = Task::whereKcxh($kcxh)->whereNd($year)->whereXq($term)->whereJsgh(Auth::user()->jsgh)->firstOrFail();
     $title = $task->nd . '年度' . $task->term->mc . '学期' . $task->kcxh . $task->course->kcmc . '课程';
     return view('task.show')->withTitle($title . '学生名单')->withStudents($students);
 }
示例#3
0
 /**
  * 显示学生选课申请表单
  * @author FuRongxin
  * @date    2016-02-23
  * @version 2.0
  * @param  \Illuminate\Http\Request  $request 申请请求
  * @return  \Illuminate\Http\Response 选课申请表单
  */
 public function create(Request $request)
 {
     $inputs = $request->all();
     if ('retake' == $inputs['type']) {
         $courses = Selcourse::studied(Auth::user())->orderBy('kcxh')->get();
     }
     $view = view('application.create')->withTitle('其他课程选课申请表')->withType($inputs['type'])->withKcxh($inputs['kcxh']);
     if ('retake' == $inputs['type']) {
         $view = $view->withTitle('重修课程选课申请表')->withCourses($courses);
     }
     return $view;
 }
示例#4
0
 /**
  * 列出选课情况交叉比较信息
  * @author FuRongxin
  * @date    2016-05-13
  * @version 2.1
  * @return  \Illuminate\Http\Response 选课交叉比较信息
  */
 public function match()
 {
     $credits = [];
     $plan_total = 0;
     $selected_total = 0;
     $score_total = 0;
     // 获取教学计划学分
     $plans = Plan::with(['course' => function ($query) {
         $query->select('kch', 'kcmc', 'kcywmc');
     }])->whereNj(Auth::user()->profile->nj)->whereZy(Auth::user()->profile->zy)->whereZsjj(Auth::user()->profile->zsjj)->orderBy('kch', 'asc')->get();
     foreach ($plans as $plan) {
         $credits[$plan->kch] = ['kch' => $plan->kch, 'kcmc' => $plan->course->kcmc, 'plan_credit' => $plan->zxf, 'selected_credit' => 0, 'score_credit' => 0];
         $plan_total += $plan->zxf;
     }
     // 获取选课学分
     $selects = Selcourse::with(['course' => function ($query) {
         $query->select('kch', 'kcmc', 'kcywmc');
     }])->whereXh(Auth::user()->xh)->orderBy('kch', 'asc')->get();
     foreach ($selects as $select) {
         if (array_key_exists($select->kch, $credits)) {
             $credits[$select->kch]['selected_credit'] = $select->xf;
         } else {
             $credits[$select->kch] = ['kch' => $select->kch, 'kcmc' => $select->course->kcmc, 'plan_credit' => 0, 'selected_credit' => $select->xf, 'score_credit' => 0];
         }
         $selected_total += $select->xf;
     }
     // 获取成绩学分
     $scores = Score::with(['course' => function ($query) {
         $query->select('kch', 'kcmc', 'kcywmc');
     }])->whereXh(Auth::user()->xh)->orderBy('kch', 'asc')->get();
     foreach ($scores as $score) {
         if (array_key_exists($score->kch, $credits)) {
             $credits[$score->kch]['score_credit'] = $score->xf;
         } else {
             $credits[$select->kch] = ['kch' => $score->kch, 'kcmc' => $score->course->kcmc, 'plan_credit' => 0, 'selected_credit' => 0, 'score_credit' => $score->xf];
         }
         $score_total += $score->xf;
     }
     $title = '选课学分交叉对比表';
     return view('course.match', compact('title', 'credits', 'plan_total', 'selected_total', 'score_total'));
 }
示例#5
0
 /**
  * 显示可录入成绩学生名单
  * @author FuRongxin
  * @date    2016-03-19
  * @version 2.0
  * @param  	string $kcxh 12位课程序号
  * @return  \Illuminate\Http\Response 学生名单
  */
 public function edit($kcxh)
 {
     $course = Mjcourse::whereNd(session('year'))->whereXq(session('term'))->whereKcxh($kcxh)->firstOrFail();
     $task = Task::whereKcxh($kcxh)->whereNd(session('year'))->whereXq(session('term'))->whereJsgh(Auth::user()->jsgh)->firstOrFail();
     $ratios = [];
     $items = Ratio::whereFs($task->cjfs)->orderBy('id')->get();
     foreach ($items as $ratio) {
         $ratios[] = ['id' => $ratio->id, 'name' => $ratio->idm, 'value' => $ratio->bl];
     }
     $exists = Score::whereNd(session('year'))->whereXq(session('term'))->whereKcxh($course->kcxh)->whereTjzt(config('constants.score.uncommitted'))->exists();
     $statuses = Status::orderBy('dm')->get()->filter(function ($status) {
         return config('constants.score.deferral') != $status->dm && config('constants.score.retake') != $status->dm;
     });
     $noScoreStudents = Selcourse::whereNd(session('year'))->whereXq(session('term'))->whereKcxh($kcxh)->whereNotExists(function ($query) {
         $query->from('cj_web')->whereRaw('t_cj_web.nd = t_xk_xkxx.nd AND t_cj_web.xq = t_xk_xkxx.xq AND t_cj_web.kcxh = t_xk_xkxx.kcxh AND t_cj_web.xh = t_xk_xkxx.xh');
     })->get();
     if (count($noScoreStudents)) {
         foreach ($noScoreStudents as $student) {
             $score = new Score();
             $score->xh = $student->xh;
             $score->xm = $student->xm;
             $score->kcxh = $student->kcxh;
             $score->kcpt = $student->pt;
             $score->kcxz = $student->xz;
             $score->xl = $student->xl;
             $score->nd = $student->nd;
             $score->xq = $student->xq;
             $score->kh = $course->plan->kh;
             $score->zpcj = 0;
             $score->kszt = 0;
             // 考试状态:正常
             $score->zy = $student->zy;
             $score->tjzt = 0;
             // 提交状态:未提交
             $score->kkxy = $student->kkxy;
             for ($i = 1; $i <= 6; ++$i) {
                 $score->{'cj' . $i} = 0;
             }
             $score->save();
         }
     }
     $scoreNoStudents = Score::whereNd(session('year'))->whereXq(session('term'))->whereKcxh($kcxh)->whereNotExists(function ($query) {
         $query->from('xk_xkxx')->whereRaw('t_xk_xkxx.nd = t_cj_web.nd AND t_xk_xkxx.xq = t_cj_web.xq AND t_xk_xkxx.kcxh = t_cj_web.kcxh AND t_xk_xkxx.xh = t_cj_web.xh');
     })->select('nd', 'xq', 'xh', 'kcxh')->get();
     if (count($scoreNoStudents)) {
         foreach ($scoreNoStudents as $student) {
             $student->delete();
         }
     }
     $students = Score::with('status')->wherend(session('year'))->whereXq(session('term'))->whereKcxh($kcxh)->orderBy('xh')->get();
     $title = $course->college->mc . $course->nd . '年度' . $course->term->mc . '学期' . $course->kcxh . $course->plan->course->kcmc . '课程';
     return view('score.edit')->withTitle($title . '成绩录入')->withRatios($ratios)->withStudents($students)->withCourse($course)->withExists($exists)->withStatuses($statuses);
 }
示例#6
0
 /**
  * 退选课程
  * @author FuRongxin
  * @date    2016-02-23
  * @version 2.0
  * @param   string $kcxh 12位课程序号
  * @return  \Illuminate\Http\Response 课程表
  */
 public function destroy($kcxh)
 {
     $course = Selcourse::whereXh(Auth::user()->xh)->whereNd(session('year'))->whereXq(session('term'))->whereKcxh($kcxh)->firstOrFail();
     $course->delete();
     return back()->withStatus('退选课程成功');
 }
示例#7
0
 /**
  * 查询听课列表
  * @author FuRongxin
  * @date    2016-05-17
  * @version 2.1
  * @param   \Illuminate\Http\Request $request 听课查询请求
  * @return  \Illuminate\Http\Response 听课列表
  */
 public function search(Request $request)
 {
     $departments = Department::where('dw', '<>', '')->whereLx('1')->whereZt(config('constants.status.enable'))->orderBy('dw')->get();
     $title = session('year') . '年度' . Term::find(session('term'))->mc . '学期' . '听课查询';
     $courses = [];
     if ($request->isMethod('post')) {
         $this->validate($request, ['department' => 'required', 'week' => 'required', 'class' => 'required']);
         $input = $request->all();
         $query = Timetable::with(['classroom' => function ($query) {
             $query->select('jsh', 'mc');
         }, 'user' => function ($query) {
             $query->select('jsgh', 'xm', 'zc');
         }, 'user.position', 'campus'])->whereNd(session('year'))->whereXq(session('term'))->whereZc($input['week'])->where('ksj', '<=', $input['class'])->where('jsj', '>=', $input['class']);
         $kcxhs = Mjcourse::whereNd(session('year'))->whereXq(session('term'))->whereKkxy($input['department'])->select('kcxh')->distinct()->get()->pluck('kcxh');
         $query = $query->whereIn('kcxh', $kcxhs);
         $results = $query->get();
         foreach ($results as $result) {
             $courses[] = ['kcmc' => Course::find(Helper::getCno($result->kcxh))->kcmc, 'xqh' => $result->campus->mc, 'jsmc' => count($result->classroom) ? $result->classroom->mc : '', 'kkxy' => count($result->mjcourse) ? $result->mjcourse->college->mc : '', 'xy' => count($result->mjcourse) ? $result->mjcourse->major->college->mc : '', 'zy' => count($result->mjcourse) ? $result->mjcourse->major->mc : '', 'nj' => count($result->mjcourse) ? $result->mjcourse->nj : '', 'rs' => Selcourse::whereNd(session('year'))->whereXq(session('term'))->whereKcxh($result->kcxh)->count(), 'jsxm' => $result->user->xm, 'jszc' => $result->user->position->mc];
         }
         $department_name = 'all' == $input['department'] ? '所有学院' : Department::find($input['department'])->mc;
         $week_name = 'all' == $input['week'] ? '所有周次' : '星期' . config('constants.week.' . $input['week']);
         $class_name = '第 ' . $input['class'] . ' 节课';
         $subtitle = '查询条件:' . $department_name . $week_name . $class_name;
     }
     return view('timetable.search', compact('title', 'departments', 'courses', 'subtitle'));
 }