Пример #1
0
 public function scopeGetTotalCalled($scope)
 {
     $current_gen = Gen::getCurrentGen();
     $classes = StudyClass::where('gen_id', $current_gen->id)->get();
     $class_id_list = $classes->pluck('id')->all();
     $count = Register::whereIn('class_id', $class_id_list)->select('user_id')->where('call_status', 1)->groupBy('user_id')->get()->count();
     return $count;
 }
Пример #2
0
 public function transform($course)
 {
     if ($this->user) {
         $this->classTransformer->setUser($this->user);
     }
     $current_gen = Gen::getCurrentGen();
     return ['name' => $course->name, 'detail' => $course->detail, 'description' => $course->description, 'icon_url' => $course->icon_url, 'image_url' => $course->image_url, 'cover_url' => $course->cover_url, 'classes' => $this->classTransformer->transformCollection($course->classes()->where('gen_id', $current_gen->id)->orderBy('name', 'desc')->get())];
 }
Пример #3
0
 public function scopeGetCurrentGen()
 {
     //status = 1: gen dang duoc tuyen sinh
     $gens = Gen::where('status', 1)->get();
     if ($gens->count() > 0) {
         $gen = $gens[0];
     } else {
         $gen = new Gen();
         $gen->id = -1;
         $gen->name = "Không có";
     }
     return $gen;
 }
Пример #4
0
 public function search_student(Request $request)
 {
     $search = "";
     if ($request->q) {
         $search = $request->q;
     }
     $gen = Gen::getCurrentGen();
     $students = User::where('role', 0)->whereExists(function ($query) use($gen) {
         $query->select(DB::raw(1))->from('registers')->where('status', 0)->where('gen_id', $gen->id)->where('call_status', 0)->whereRaw('registers.user_id = users.id');
     })->where(function ($query) use($search) {
         $query->where('email', 'like', '%' . $search . '%')->orWhere('phone', 'like', '%' . $search . '%')->orWhere('name', 'like', '%' . $search . '%');
     })->orderBy('created_at', 'desc')->take(5)->get();
     return response()->json(['students' => $this->studentTransformer->transformCollection($students)]);
 }
Пример #5
0
 public function enroll($domain, $classId)
 {
     $register = $this->user->registers()->where('class_id', $classId)->first();
     if ($register) {
         return $this->respond(['message' => "Bạn đă đăng kí lớp học này. "]);
     } else {
         $register = new Register();
         $register->user_id = $this->user->id;
         $register->gen_id = Gen::getCurrentGen()->id;
         $register->class_id = $classId;
         $register->status = 0;
         $register->save();
         send_mail_confirm_registration($this->user, $classId, ["*****@*****.**", "*****@*****.**"]);
         return $this->respond(['message' => "Bạn đă đăng kí thành công. Bạn hãy check email để kiểm tra thông tin đăng kí."]);
     }
 }
Пример #6
0
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     $date = new \DateTime();
     $date->modify('+3 days');
     $formatted_date_from = $date->format('Y-m-d');
     $date->modify('+6 days');
     $formatted_date_to = $date->format('Y-m-d');
     $dates = createDateRangeArray(strtotime($formatted_date_from), strtotime($formatted_date_to));
     $bases = Base::where('center', 1)->get();
     $current_gen = Gen::getCurrentGen();
     $shiftSessions = ShiftSession::where('active', 1)->get();
     $lastShift = Shift::where('gen_id', $current_gen->id)->orderBy('week', 'desc')->first();
     $week = $lastShift ? $lastShift->week : 0;
     foreach ($dates as $date) {
         foreach ($bases as $base) {
             foreach ($shiftSessions as $shiftSession) {
                 $shift = new Shift();
                 $shift->gen_id = $current_gen->id;
                 $shift->base_id = $base->id;
                 $shift->shift_session_id = $shiftSession->id;
                 $shift->week = $week + 1;
                 $shift->date = $date;
                 $shift->save();
             }
         }
     }
     $role_ids = Tab::find(35)->roles->pluck('id')->unique()->toArray();
     $roles = Role::whereIn('id', $role_ids)->get();
     if ($week == 0) {
         $week = 1;
     }
     foreach ($roles as $role) {
         $users = $role->users;
         foreach ($users as $user) {
             send_mail_regis_shift($user, $week, $current_gen, ['*****@*****.**']);
         }
     }
     $this->info('done');
 }
Пример #7
0
 public function send_rating(Request $request = null)
 {
     $gen = Gen::find($request->gen_id);
     $this->data['gen'] = $gen;
     $this->data['gens'] = Gen::all();
     return view('manage.send_rating', $this->data);
 }
Пример #8
0
 public function get_current_shifts($gen_id = null)
 {
     if ($gen_id) {
         $current_gen = Gen::find($gen_id);
     } else {
         $current_gen = Gen::getCurrentGen();
     }
     $shifts = $current_gen->shifts()->get();
     $weeks = $shifts->pluck('week')->unique()->sortByDesc(function ($week, $key) {
         return $week;
     });
     $return_arr = [];
     foreach ($weeks as $week) {
         $week_shifts = $shifts->where('week', $week);
         $dates = $week_shifts->pluck('date')->unique();
         $return_dates = [];
         foreach ($dates as $date) {
             $obj = new \stdClass();
             $obj->date = date_shift(strtotime($date));
             $obj->shifts = $shifts->filter(function ($item) use($date) {
                 return $item->date == $date;
             });
             $shiftsData = $this->shiftTransfromer->transformCollection($obj->shifts);
             $obj->shifts = $shiftsData;
             $return_dates[] = $obj;
         }
         $return_arr[] = ['dates' => $return_dates, 'week' => $week];
     }
     return response()->json(['weeks' => $return_arr]);
 }
Пример #9
0
 public function landing_register(Request $request)
 {
     $user = User::where('email', '=', $request->email)->first();
     //        dd('WORK');
     if ($user == null) {
         $user = new User();
         $user->name = $request->name;
         $user->phone = $request->phone;
         $user->email = $request->email;
         $user->university = $request->university;
         $user->work = $request->work;
         $user->address = $request->address;
         $user->how_know = $request->how_know;
         $user->username = $request->email;
         $user->facebook = $request->facebook;
         $user->gender = $request->gender;
         $user->dob = strtotime($request->dob);
         $user->password = bcrypt($request->phone);
         $user->save();
     } else {
         $user->university = $request->university;
         $user->work = $request->work;
         $user->address = $request->address;
         $user->phone = $request->phone;
         $user->gender = $request->gender;
         $user->dob = date('Y-m-d', strtotime($request->dob));
         $user->facebook = $request->facebook;
         $user->save();
     }
     $register = new Register();
     $register->user_id = $user->id;
     $register->gen_id = Gen::getCurrentGen()->id;
     $register->class_id = $request->class_id;
     $register->status = 0;
     $register->leader_phone = $request->leader_phone;
     $register->coupon = $request->coupon;
     $register->save();
     send_mail_confirm_registration($user, $request->class_id, ["*****@*****.**", "*****@*****.**"]);
     return redirect('register_success');
 }
Пример #10
0
 public function dashboard($domain, $gen_id, $base_id = null)
 {
     //        $current_gen = Gen::getCurrentGen();
     if ($this->user->role == 0) {
         return $this->responseUnAuthorized('Bạn không có quyền truy cập dữ liệu này');
     }
     $data = [];
     if ($gen_id) {
         $current_gen = Gen::find($gen_id);
     } else {
         return response()->json([message => "gen_id is required"], 400);
     }
     $data['current_gen'] = $this->genTransformer->transform($current_gen);
     if ($base_id == null) {
         $zero_paid_num = Register::where('gen_id', $current_gen->id)->where('status', '=', 1)->where('money', '=', 0)->count();
         $total_money = Register::where('gen_id', $current_gen->id)->sum('money');
         $num = Register::where('gen_id', $current_gen->id)->count();
         $paid_number = Register::where('gen_id', $current_gen->id)->where('code', "!=", "")->count();
         $uncalled_number = Register::where('gen_id', $current_gen->id)->where('call_status', 0)->groupBy('user_id')->count();
         $total_classes = $current_gen->studyclasses->count();
         $remain_days = strtotime($current_gen->end_time) - time();
         $registers_by_date = Register::select(DB::raw('count(1) as num'))->where('gen_id', $current_gen->id)->groupBy(DB::raw('DATE(created_at)'))->pluck('num')->toArray();
         $money_by_date = Register::select(DB::raw('sum(money) as money'))->where('gen_id', $current_gen->id)->groupBy(DB::raw('DATE(paid_time)'))->pluck('money')->toArray();
         $registers_by_hour = Register::select(DB::raw('HOUR(created_at) as \'hour\', count(1) as num'))->where('gen_id', $current_gen->id)->groupBy(DB::raw('HOUR(created_at)'))->get();
         $registers_hour_array = array();
         for ($i = 0; $i < 24; $i++) {
             $registers_hour_array[$i] = 0;
         }
         foreach ($registers_by_hour as $regis) {
             $registers_hour_array[$regis->hour] = $regis->num;
         }
         $data['money_by_date'] = $money_by_date;
         $data['zero_paid_num'] = $zero_paid_num;
         $data['classes'] = $this->classTransformer->transformCollection($current_gen->studyclasses);
         $data['total_money'] = is_numeric($total_money) ? $total_money : 0;
         $data['register_number'] = is_numeric($num) ? $num : 0;
         $data['paid_number'] = is_numeric($paid_number) ? $paid_number : 0;
         $data['uncalled_number'] = is_numeric($uncalled_number) ? $uncalled_number : 0;
         $data['total_classes'] = is_numeric($total_classes) ? $total_classes : 0;
         $data['remain_days'] = round((is_numeric($remain_days) ? $remain_days : 0) / (24 * 3600), 2);
         $data['date_array'] = createDateRangeArray(strtotime($current_gen->start_time), strtotime($current_gen->end_time));
         $data['registers_by_date'] = $registers_by_date;
         $data['registers_by_hour'] = $registers_hour_array;
     } else {
         $base = Base::find($base_id);
         $classes = $base->classes()->where('gen_id', $current_gen->id);
         $registers = Register::where('gen_id', $current_gen->id)->where('gen_id', $current_gen->id)->whereIn('class_id', $classes->pluck('id'));
         $zero_paid_num = Register::where('status', '=', 1)->where('money', '=', 0)->whereIn('class_id', $classes->pluck('id'))->count();
         $total_money = $registers->sum('money');
         $num = $registers->count();
         $paid_number = $registers->where('gen_id', $current_gen->id)->where('code', "!=", "")->count();
         $uncalled_number = $registers->where('call_status', 0)->groupBy('user_id')->count();
         $total_classes = $classes->count();
         $remain_days = strtotime($current_gen->end_time) - time();
         $classes_id = $classes->pluck("id");
         $registers_by_date = Register::select(DB::raw('count(1) as num'))->whereIn("class_id", $classes_id)->where('gen_id', $current_gen->id)->groupBy(DB::raw('DATE(created_at)'))->pluck('num')->toArray();
         $registers_by_hour = Register::select(DB::raw('HOUR(created_at) as \'hour\', count(1) as num'))->whereIn("class_id", $classes_id)->where('gen_id', $current_gen->id)->groupBy(DB::raw('HOUR(created_at)'))->get();
         $money_by_date = Register::select(DB::raw('sum(money) as money'))->whereIn("class_id", $classes_id)->where('gen_id', $current_gen->id)->groupBy(DB::raw('DATE(paid_time)'))->pluck('money')->toArray();
         $registers_hour_array = array();
         for ($i = 0; $i < 24; $i++) {
             $registers_hour_array[$i] = 0;
         }
         foreach ($registers_by_hour as $regis) {
             $registers_hour_array[$regis->hour] = $regis->num;
         }
         $data['money_by_date'] = $money_by_date;
         $data['zero_paid_num'] = $zero_paid_num;
         $data['classes'] = $this->classTransformer->transformCollection($current_gen->studyclasses);
         $data['total_money'] = is_numeric($total_money) ? $total_money : 0;
         $data['register_number'] = is_numeric($num) ? $num : 0;
         $data['paid_number'] = is_numeric($paid_number) ? $paid_number : 0;
         $data['uncalled_number'] = is_numeric($uncalled_number) ? $uncalled_number : 0;
         $data['total_classes'] = is_numeric($total_classes) ? $total_classes : 0;
         $data['remain_days'] = round((is_numeric($remain_days) ? $remain_days : 0) / (24 * 3600), 2);
         $data['date_array'] = createDateRangeArray(strtotime($current_gen->start_time), strtotime($current_gen->end_time));
         $data['registers_by_date'] = $registers_by_date;
         $data['registers_by_hour'] = $registers_hour_array;
     }
     return response()->json($data, 200);
 }
Пример #11
0
 public function download_paid_students(Request $request)
 {
     $genId = $request->genid;
     $gen = Gen::find($genId);
     $registers_id = $gen->registers()->where('status', 1)->get()->pluck('user_id')->toArray();
     $students = User::whereIn('id', $registers_id)->get();
     $students = $students->map(function ($student) use($gen) {
         $student->how_know = how_know($student->how_know);
         $student->gender = gender($student->gender);
         $student->dob = format_date($student->dob);
         $registers = $student->registers()->where('gen_id', $gen->id)->get();
         $student->class = $registers->map(function ($register) {
             $class = $register->studyClass;
             $base = $class->base;
             $className = $class->name . " (" . $base->name . ": " . $base->address . ")";
             return $className;
         })->reduce(function ($carry, $item) {
             return $carry . ", " . $item;
         }, "");
         unset($student->id);
         unset($student->created_at);
         unset($student->updated_at);
         unset($student->role);
         unset($student->code);
         unset($student->avatar_url);
         unset($student->cover_url);
         unset($student->description);
         unset($student->money);
         unset($student->status);
         unset($student->avatar_name);
         unset($student->cover_name);
         unset($student->cover_name);
         unset($student->order);
         unset($student->registers);
         return $student;
     })->toArray();
     return Excel::create('Khoá ' . $gen->name, function ($excel) use($students) {
         $excel->sheet('students', function ($sheet) use($students) {
             $sheet->fromArray($students);
         });
     })->download('xls');
 }
Пример #12
0
 public function about_us_data($domain)
 {
     $gen = Gen::getCurrentGen();
     $classes = $gen->studyclasses()->where('name', 'like', '%.%')->count();
     $student = Register::where('code', '!=', null)->count() + 2000;
     $posts = Product::count() + 4000;
     return $this->respond(['gen' => ['name' => $gen->name, 'detail' => $gen->detail], 'studentsNumber' => $student, 'classesNumber' => $classes, 'postsNumber' => $posts]);
 }