123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?php
- namespace App\Models;
- use Carbon\Carbon;
- use function foo\func;
- use Illuminate\Database\Eloquent\Model;
- class Student extends Model
- {
- protected $table = 'students';
- protected $guarded = [];
- public $marry_list;
- public function __construct(array $attributes = [])
- {
- parent::__construct($attributes);
- $this->marry_list = collect([
- ['key' => 1, 'value' => 1, 'show_value' => '未婚'],
- ['key' => 2, 'value' => 2, 'show_value' => '已婚'],
- // ['key' => 3, 'value' => 3, 'show_value' => '离婚'],
- ]);
- }
- public function getMarryList()
- {
- return $this->marry_list;
- }
- public function getBindPhone()
- {
- return $this['bind_phone'] == 2 ? '已绑定' : '未绑定';
- }
- public function getMarry($key = null)
- {
- $key = empty($key) ? $this['marry'] : 1;
- $item = $this->marry_list->where('key', $key)->first();
- return empty($item) ? '未婚' : $item['show_value'];
- }
- public function course()
- {
- return $this->belongsTo('App\Models\Course');
- }
- public function getCheckCardDates()
- {
- return CheckCard::where('student_id', $this['id'])->whereNotNull('begin_date_time')->whereNotNull('end_date_time')->get()->pluck('begin_date_time')->map(function ($item) {
- return substr($item, 0, 10);
- })->unique();
- }
- public function getStudentCourse()
- {
- return StudentCourse::where('student_id', $this['id'])->first();
- }
- public function getCourseInfo()
- {
- $student_course = StudentCourse::where('student_id', $this['id'])->first();
- if(empty($student_course)) {
- return [
- 'course_name' => '',
- 'apply_date' => '',
- 'end_date' => '',
- 'teacher_names' => ''
- ];
- }
- $course = Course::find($student_course->course_id);
- if(empty($course)) {
- $course_name = '';
- } else {
- $course_name = $course->name;
- }
- $apply_date = $student_course->apply_date;
- if(empty($apply_date) || empty($student_course->duration)) {
- $end_date = '';
- } else {
- $end_date = Carbon::createFromTimestamp(strtotime($apply_date))->addDays($student_course->duration)->toDateString();
- }
- $teacher_names = $student_course->getTeacherFullNames();
- return [
- 'course_name' => $course_name,
- 'apply_date' => $apply_date,
- 'end_date' => $end_date,
- 'teacher_names' => $teacher_names
- ];
- }
- public function getCourseName()
- {
- $student_course = StudentCourse::where('student_id', $this['id'])->first();
- if(empty($student_course)) return '';
- $course = Course::find($student_course->course_id);
- return empty($course) ? '' : $course->name;
- }
- public function getIsNew()
- {
- $today = Carbon::today();
- $this_week_begin = null;
- while($today->dayOfWeekIso != 1) {
- $today = $today->subDay();
- }
- $this_week_begin = $today->toDateTimeString();
- $this_week_end = $today->addDays(7)->toDateTimeString();
- $tmp = Remark::where([
- ['student_id', '=', $this['id']],
- ['created_at', '>=', $this_week_begin],
- ['created_at', '<', $this_week_end],
- ])->first();
- return empty($tmp) ? true : false;
- }
- public function getThisWeekAverageScore(Remark $remark)
- {
- $today = Carbon::today();
- $this_week_begin = null;
- while($today->dayOfWeekIso != 1) {
- $today = $today->subDay();
- }
- $this_week_begin = $today->toDateTimeString();
- return RemarkDetail::where([
- ['remark_id', '=', $remark['id']],
- ['created_at', '>=', $this_week_begin],
- ])->get()->avg('score');
- }
- }
|