ApiJ/app/Http/Controllers/DoctorController.php

1657 lines
82 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace App\Http\Controllers;
use App\Models\AfterQuestionnaire;
use App\Models\AppealsDoctor;
use App\Models\AppealsPatient;
use App\Models\BeforeQuestionnaire;
use App\Models\CalendarDays;
use App\Models\CoursesSportEdit;
use App\Models\DiplomModel\Products;
use App\Models\DiplomModel\Worker;
use App\Models\Patient;
use App\Models\SetOfSportsExercises;
use App\Models\SetsOfSportsActivities;
use App\Models\SportCourses;
use App\Models\Category;
use App\Models\Product;
use App\Models\SportPatient;
use App\Models\SportTasks;
use Cassandra\Date;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
use PhpParser\Node\Scalar\String_;
class DoctorController extends Controller
{
//Создание аккаунта пациенту
public function CreateAccountPatient(Request $request)
{
$Doctor = Auth::user()->makeHidden(['id']);
$error = Validator::make($request->all(), [
'login' => 'required|regex:/^[a-zA-Z0-9\-]+$/|string|max:20|min:4|unique:patient',
'password' => 'required|regex:/^[a-zA-Z0-9\-]+$/|string|max:100|min:10',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
Patient::create([
'login' => $request->login,
'password' => Hash::make($request->password),
'token' => Str::random(80),
'id_doctor' => $Doctor->id,
]);
return response(['message' => 'Новый пациент был создан'], 200);
}
}
//Обновление данных пациента
public function UpdateAccountPatient(Request $request)
{
$error = Validator::make($request->all(), [
'id' => 'required|numeric|max:10000|min:1',
'login' => 'required|regex:/^[a-zA-Z0-9\-]+$/|string|max:20|min:4|unique:patient',
'password' => 'required|regex:/^[a-zA-Z0-9\-]+$/|string|max:100|min:10',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id)->first();
if ($Patient != null) {
$pat = $Patient;
$pat->login = $request->login;
$pat->password = Crypt::encryptString($request->password);
$pat->update();
}
return response(['Данные обновлены' => $request->password], 200);
}
}
// //Обновление данных пациента
// public function AddCoursesAccountPatient(Request $request)
// {
// $error = Validator::make($request->all(), [
// 'id' => 'required',
// 'login' => 'required',
// 'password' => 'required',
// ]);//1024
// if ($error->fails()) {
// return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
// }
// else{
// $Patient = Patient::where('id', $request->id)->first();
// if ($Patient != null) {
// $pat = $Patient;
// $pat->login = $request->login;
// $pat->password = Crypt::encryptString($request->password);
// $pat->update();
// }
//
// return response(['Данные обновлены' => $request->password], 200);
// }
// }
//Редактирвоание курса
public function GetCoursesSport(Request $request)
{
$Doctor = Auth::user()->makeHidden(['id']);
$error = Validator::make($request->all(), [
'id_patient' => 'required|numeric|max:10000|min:1',
'id_sports_courses_patient' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id_patient)->first();
if ($Patient != null) {
if ($Patient->id_sport_patient != null || $Patient->id_sport_patient != "") {
$SetOfSportsExercises = SetOfSportsExercises::orderBy('id', 'ASC')
->leftJoin('sets_of_sports_activities', 'sets_of_sports_activities.id', '=', 'set_of_sports_exercises.id_sets_of_sports_activities')
->leftJoin('sports_tasks', 'sports_tasks.id', '=', 'set_of_sports_exercises.id_sports_tasks')
->leftJoin('sports_courses', 'sports_courses.id', '=', 'sets_of_sports_activities.id_sports_courses')
->leftJoin('sport_patient', 'sport_patient.id_sports_courses', '=', 'sports_courses.id')
->leftJoin('image', 'image.id', '=', 'sports_tasks.id_image')
->select('sports_tasks.id', 'sports_tasks.name', 'sports_tasks.description', 'image.url_image')->where("sport_patient.id", $Patient->id_sport_patient)
->distinct()
->where("sports_courses.id", $request->id_sports_courses_patient)->get();//, 'patient.email', 'doctor.login as loginDoctor', 'doctor.email as emailDoctor', 'patient.pause', 'patient.block', 'patient.report7day', 'patient.report15day', 'sport_patient.id_patient', 'patient.total_days_sports', 'patient.now_days_sports', 'patient.created_at', 'patient.updated_at'
return response(["set_of_sports_exercises" => $SetOfSportsExercises], 200);
} else {
return response(['message' => 'Ошибка, курса у пациента нету'], 400);
}
} else {
return response(['message' => 'Ошибка, такого пациента нету'], 400);
}
}
}
//Редактирвоание курса
//в БУДУШЕМ НУЖНО ИЗМЕНИТЬ И УБИРАТЬ ЗАБЛОКИРОВАННЫЕ НЕ ЧЕРЕЗ ПЕРЕБОРКУ ЦИКЛА А ПРОСТО ЧЕРЕЗ ЗАПРОС В БАЗУ, ПРОСТО НУЖНО ПОСИДЕТЬ И ПОНЯТЬ ЧТО Я НЕПРАВИЛЬНО ЗАБИВАЛ В БАЗУ
public function GetCoursesSportYes(Request $request)
{
$Doctor = Auth::user()->makeHidden(['id']);
$error = Validator::make($request->all(), [
'id_patient' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id_patient)->first();
if ($Patient != null) {
if ($Patient->id_sport_patient != null || $Patient->id_sport_patient != "") {
$SetOfSportsExercises2 = CoursesSportEdit::get();
$CoursesSportEdit = CoursesSportEdit::orderBy('id', 'ASC')->where('id_sport_patient', $Patient->id_sport_patient)->get();
$result = [];
$number = 0;
if (Count($CoursesSportEdit) != 0) {
$CoursesSportEdit = CoursesSportEdit::orderBy('id', 'ASC')->where('id_sport_patient', $Patient->id_sport_patient)->get();
$SetOfSportsExercises = DB::table('set_of_sports_exercises')->orderBy('id', 'ASC')
->join('sets_of_sports_activities', 'set_of_sports_exercises.id_sets_of_sports_activities', '=', 'sets_of_sports_activities.id')
->join('sports_tasks', 'set_of_sports_exercises.id_sports_tasks', '=', 'sports_tasks.id')
->join('courses_sport_edit', 'set_of_sports_exercises.id_sports_tasks', '!=', 'courses_sport_edit.id_sports_tasks')
->join('sports_courses', 'sets_of_sports_activities.id_sports_courses', '=', 'sports_courses.id')
->join('sport_patient', 'sport_patient.id_sports_courses', '=', 'sports_courses.id')
->join('image', 'sports_tasks.article_image', '=', 'image.article')
->select('sports_tasks.id', 'sports_tasks.name', 'sports_tasks.description', 'image.url_image')
->distinct('id')
->where('sport_patient.id', $Patient->id_sport_patient)
->get();
for ($i = 0; $i != Count($SetOfSportsExercises); $i++) {
$res = 0;
for ($j = 0; $j != Count($CoursesSportEdit); $j++) {
if ($SetOfSportsExercises[$i]->id != $CoursesSportEdit[$j]->id_sports_tasks) {
$res++;
}
}
if ($res == Count($CoursesSportEdit)) {
$number++;
$search_sport = [
'number' => $number,
'id' => $SetOfSportsExercises[$i]->id,
'name' => $SetOfSportsExercises[$i]->name,
'description' => $SetOfSportsExercises[$i]->description,
'url_image' => $SetOfSportsExercises[$i]->url_image,
];
array_push($result, $search_sport);
}
}
} else {
$SetOfSportsExercises = DB::table('set_of_sports_exercises')->orderBy('id', 'ASC')
->join('sets_of_sports_activities', 'set_of_sports_exercises.id_sets_of_sports_activities', '=', 'sets_of_sports_activities.id')
->join('sports_tasks', 'set_of_sports_exercises.id_sports_tasks', '=', 'sports_tasks.id')
->join('sports_courses', 'sets_of_sports_activities.id_sports_courses', '=', 'sports_courses.id')
->join('sport_patient', 'sport_patient.id_sports_courses', '=', 'sports_courses.id')
->join('image', 'sports_tasks.article_image', '=', 'image.article')
->select('sports_tasks.id', 'sports_tasks.name', 'sports_tasks.description', 'image.url_image')
->distinct('id')
->where('sport_patient.id', $Patient->id_sport_patient)
->get();
for ($i = 0; $i != Count($SetOfSportsExercises); $i++) {
$number++;
$search_sport = [
'number' => $number,
'id' => $SetOfSportsExercises[$i]->id,
'name' => $SetOfSportsExercises[$i]->name,
'description' => $SetOfSportsExercises[$i]->description,
'url_image' => $SetOfSportsExercises[$i]->url_image,
];
array_push($result, $search_sport);
}
}
return response(["set_of_sports_exercises_yes" => $result], 200);
} else {
return response(['message' => 'Ошибка, курса у пациента нету'], 400);
}
} else {
return response(['message' => 'Ошибка, такого пациента нету'], 400);
}
}
}
public function GetCoursesSportNo(Request $request)
{
$Doctor = Auth::user()->makeHidden(['id']);
$error = Validator::make($request->all(), [
'id_patient' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id_patient)->first();
if ($Patient != null) {
if ($Patient->id_sport_patient != null || $Patient->id_sport_patient != "") {
$CoursesSportEdit = CoursesSportEdit::orderBy('id', 'ASC')->distinct()
->join('sports_tasks', 'courses_sport_edit.id_sports_tasks', '=', 'sports_tasks.id')
->join('image', 'sports_tasks.article_image', '=', 'image.article')
->select('sports_tasks.id as sports_tasks_id', 'courses_sport_edit.id', 'sports_tasks.name', 'sports_tasks.description', 'image.url_image')
->distinct('id')
->where('courses_sport_edit.id_sport_patient', $Patient->id_sport_patient)
->get();
$result = [];
$number = 0;
for ($i = 0; $i != Count($CoursesSportEdit); $i++) {
$number++;
$search_sport = [
'number' => $number,
'id' => $CoursesSportEdit[$i]->id,
'name' => $CoursesSportEdit[$i]->name,
'description' => $CoursesSportEdit[$i]->description,
'url_image' => $CoursesSportEdit[$i]->url_image,
];
array_push($result, $search_sport);
}
return response(["set_of_sports_exercises_no" => $result], 200);
} else {
return response(['message' => 'Ошибка, курса у пациента нету'], 400);
}
} else {
return response(['message' => 'Ошибка, такого пациента нету'], 400);
}
}
}
public function UpdateBlockSportTasksYes(Request $request)
{
$error = Validator::make($request->all(), [
'id_patient' => 'required|numeric|max:10000|min:1',
'id_sports_tasks' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id_patient)->first();
if ($Patient != null) {
$SportPatient = SportPatient::where('id', $Patient->id_sport_patient)->first();
$SportTasks = SportTasks::where('id', $request->id_sports_tasks)->first();
if ($SportTasks != null && $SportPatient != null) {
CoursesSportEdit::create([
'id_sport_patient' => $SportPatient->id,
'id_sports_tasks' => $SportTasks->id,
]);
return response(['message' => 'Тренировка добавлена в блок'], 200);
} else {
return response(['message' => 'Таких данных нету'], 400);
}
} else {
return response(['message' => 'Такого пациента нету'], 400);
}
}
}
public function UpdateBlockSportTasksNo(Request $request)
{
$error = Validator::make($request->all(), [
'id' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$CoursesSportEdit = CoursesSportEdit::where('id', $request->id)->first();
if ($CoursesSportEdit != null) {
$CoursesSportEdit->delete();
return response(['message' => 'Тренировка убрана из блока'], 200);
} else {
return response(['message' => 'Таких данных нету'], 400);
}
}
}
//Блокировка
public function UpdateBlockAccountPatient(Request $request)
{
$error = Validator::make($request->all(), [
'id' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id)->first();
if ($Patient != null) {
$CalendarDays = CalendarDays::where('id_patient', $Patient->id)->where('id_sport_patient', $Patient->id_sport_patient)->orderBy('day', 'DESC')->first();
if ($Patient->block == null || $Patient->block == "") {
//Если есть календарный список
if ($CalendarDays != null) {
for ($i = 0; $i < 4; $i++) {
CalendarDays::create([
'id_patient' => $Patient->id,
'day' => $CalendarDays->day + $i,
'date' => date('Y-m-d', strtotime("+$i day", strtotime($CalendarDays->date))),
'id_sport_patient' => $Patient->id_sport_patient,
]);
}
$pat = $Patient;
$date = date('Y-m-d', strtotime('+3 day'));
$pat->block = $date;
$pat->update();
//Установка блока в календаре
for ($i = 0; $i < 4; $i++) {
$dateCD = date('Y-m-d', strtotime("+$i day"));
$CD = CalendarDays::where('date', $dateCD)->where('id_sport_patient', $Patient->id_sport_patient)->first();
$CD->block = $dateCD;
$CD->update();
}
} //Если нету календарного списка
else if ($CalendarDays == null) {
$pat = $Patient;
$date = date('Y-m-d', strtotime('+3 day'));
$pat->block = $date;
$pat->update();
//Установка блока в календаре
for ($i = 0; $i < 4; $i++) {
$dateCD = date('Y-m-d', strtotime("+$i day"));
$CD = CalendarDays::where('date', $dateCD)->where('id_sport_patient', $Patient->id_sport_patient)->first();
$CD->block = $dateCD;
$CD->update();
}
} else {
return response(['message' => 'Ошибка, обратитесь в поддержку. Код - 1.1'], 400);
}
return response(['message' => 'Блокировка включена'], 200);
} else if ($Patient->block != null && $Patient->block != "") {
if ($CalendarDays != null) {
$pat = $Patient;
$pat->block = null;
$pat->update();
//Проверка количества дней в календаре и их изменение
$this->AddandClearDayPatient($Patient->id);
} //Если нету календарного списка
else if ($CalendarDays == null) {
$pat = $Patient;
$pat->block = null;
$pat->update();
} else {
return response(['message' => 'Ошибка, обратитесь в поддержку. Код - 1.2'], 400);
}
//Сброс блока в календаре
$dateCD = date('Y-m-d');
$CD1 = CalendarDays::where('date', $dateCD)->where('id_sport_patient', $Patient->id_sport_patient)->first();
$CD2 = CalendarDays::where('day', '>=', $CD1->day)->where('id_sport_patient', $Patient->id_sport_patient)->get();
for ($i = 0; $i < count($CD2); $i++) {
$CDUpdate = CalendarDays::where('id', $CD2[$i]->id)->where('id_patient', $Patient->id)->where('id_sport_patient', $Patient->id_sport_patient)->first();
$CDUpdate->block = null;
$CDUpdate->update();
}
return response(['message' => 'Блокировка отключена'], 200);
} else {
return response(['message' => 'Ошибка, неизвестные данные в поле'], 400);
}
} else {
return response(['message' => 'Ошибка, такого пациента нету'], 400);
}
}
}
//Пауза
public
function UpdatePauseAccountPatient(Request $request)
{
$error = Validator::make($request->all(), [
'id' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id)->first();
if ($Patient != null) {
$CalendarDays = CalendarDays::where('id_patient', $Patient->id)->where('id_sport_patient', $Patient->id_sport_patient)->orderBy('day', 'DESC')->first();
if ($Patient->pause == null || $Patient->pause == "") {
if ($CalendarDays != null) {
for ($i = 0; $i < 2; $i++) {
CalendarDays::create([
'id_patient' => $Patient->id,
'day' => $CalendarDays->day + $i,
'date' => date('Y-m-d', strtotime("+$i day", strtotime($CalendarDays->date))),
'id_sport_patient' => $Patient->id_sport_patient,
]);
}
$pat = $Patient;
$date = date('Y-m-d', strtotime('+1 day'));
$pat->pause = $date;
$pat->update();
//Установка пауз в календаре
for ($i = 0; $i < 2; $i++) {
$dateCD = date('Y-m-d', strtotime("+$i day"));
$CD = CalendarDays::where('date', $dateCD)->where('id_sport_patient', $Patient->id_sport_patient)->first();
$CD->pause = $dateCD;
$CD->update();
}
} else if ($CalendarDays == null) {
$pat = $Patient;
$date = date('Y-m-d', strtotime('+1 day'));
$pat->pause = $date;
$pat->update();
//Установка пауз в календаре
for ($i = 0; $i < 2; $i++) {
$dateCD = date('Y-m-d', strtotime("+$i day"));
$CD = CalendarDays::where('date', $dateCD)->where('id_sport_patient', $Patient->id_sport_patient)->first();
$CD->pause = $dateCD;
$CD->update();
}
} else {
return response(['message' => 'Ошибка, обратитесь в поддержку. Код - 2.1'], 400);
}
return response(['message' => 'Пауза включена'], 200);
} else if ($Patient->pause != null && $Patient->pause != "") {
if ($CalendarDays != null) {
$pat = $Patient;
$pat->pause = null;
$pat->update();
//Проверка количества дней в календаре и их изменение
$this->AddandClearDayPatient($Patient->id);
} else if ($CalendarDays == null) {
$pat = $Patient;
$pat->pause = null;
$pat->update();
} else {
return response(['message' => 'Ошибка, обратитесь в поддержку. Код - 2.2'], 400);
}
//Сброс паузы в календаре
$dateCD = date('Y-m-d');
$CD1 = CalendarDays::where('date', $dateCD)->where('id_sport_patient', $Patient->id_sport_patient)->first();
$CD2 = CalendarDays::where('day', '>=', $CD1->day)->where('id_sport_patient', $Patient->id_sport_patient)->get();
for ($i = 0; $i < count($CD2); $i++) {
$CDUpdate = CalendarDays::where('id', $CD2[$i]->id)->where('id_patient', $Patient->id)->where('id_sport_patient', $Patient->id_sport_patient)->first();
$CDUpdate->pause = null;
$CDUpdate->update();
}
return response(['message' => 'Пауза отключена'], 200);
} else {
return response(['message' => 'Ошибка, неизвестные данные в поле'], 400);
}
} else {
return response(['message' => 'Ошибка, такого пациента нету'], 400);
}
}
}
// //Подтверждение на 7 день
// public function Addreport7dayAccountPatient(Request $request)
// {
// $error = Validator::make($request->all(), [
// 'id' => 'required',
// ]);//1024
// if ($error->fails()) {
// return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
// }
// else{
// $Patient = Patient::where('id', $request->id)->first();
// if ($Patient != null) {
// if($Patient->report7day == null || $Patient->report7day == ""){
// $pat = $Patient;
// $pat->report7day = date ('Y-m-d');
// $pat->update();
// return response(['Отчет за 7 дней отправлен'], 200);
// }
// else{
// return response(['Отчет за 7 дней уже отправлен'], 400);
// }
// }
// else{
// return response(['Ошибка, такого пациента нету'], 400);
// }
//
// }
// }
//
// //Подтверждение на 15 день
// public function Addreport15dayAccountPatient(Request $request)
// {
// $error = Validator::make($request->all(), [
// 'id' => 'required',
// ]);//1024
// if ($error->fails()) {
// return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
// }
// else{
// $Patient = Patient::where('id', $request->id)->first();
// if ($Patient != null) {
// if($Patient->report15day == null || $Patient->report15day == ""){
// $pat = $Patient;
// $pat->report15day = date ('Y-m-d');
// $pat->update();
// return response(['Отчет за 15 дней отправлен'], 200);
// }
// else{
// return response(['Отчет за 15 дней уже отправлен'], 400);
// }
// }
// else{
// return response(['Ошибка, такого пациента нету'], 400);
// }
// }
// }
public function GetPatientSearch(Request $request)
{
$error = Validator::make($request->all(), [
'login' => 'required|regex:/^[a-zA-Z0-9\-]+$/|string|max:20|min:4',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('login', 'like', '%' . $request->login . '%')->orderBy('id', 'ASC')->get();
return response()->json($Patient);
}
}
//Вывод всех пациентов
public function GetPatientAll()
{
$Patient = Patient::orderBy('id', 'ASC')
->leftJoin('doctor', 'doctor.id', '=', 'patient.id_doctor')
->leftJoin('sport_patient', 'sport_patient.id', '=', 'patient.id_sport_patient')
->select('patient.id', 'patient.login', 'patient.email', 'doctor.login as loginDoctor', 'doctor.email as emailDoctor', 'patient.pause', 'patient.block', 'patient.report7day', 'patient.report15day', 'patient.id_sport_patient as id_sport_patient', 'patient.total_days_sports', 'patient.now_days_sports', 'patient.created_at', 'patient.updated_at')
->get();//, 'patient.email', 'doctor.login as loginDoctor', 'doctor.email as emailDoctor', 'patient.pause', 'patient.block', 'patient.report7day', 'patient.report15day', 'sport_patient.id_patient', 'patient.total_days_sports', 'patient.now_days_sports', 'patient.created_at', 'patient.updated_at'
$result = [];
$number = 0;
for ($i = 0; $i != Count($Patient); $i++) {
$number++;
$search_patient = [
'number' => $number,
'id' => $Patient[$i]->id,
'login' => $Patient[$i]->login,
'loginDoctor' => $Patient[$i]->login,
'emailDoctor' => $Patient[$i]->emailDoctor,
'pause' => $Patient[$i]->pause,
'block' => $Patient[$i]->block,
'report7day' => $Patient[$i]->report7day,
'report15day' => $Patient[$i]->report15day,
'id_sport_patient' => $Patient[$i]->id_sport_patient,
'total_days_sports' => $Patient[$i]->total_days_sports,
'now_days_sports' => $Patient[$i]->now_days_sports,
'created_at' => $Patient[$i]->created_at,
'updated_at' => $Patient[$i]->updated_at,
];
array_push($result, $search_patient);
}
return response(["patient" => $result], 200);
}
//Вывод все пациентов конкретного врача с курсом
public function GetPatientAllActive()
{
$Doctor = Auth::user()->makeHidden(['id']);
$Patient = Patient::orderBy('id', 'ASC')
->leftJoin('doctor', 'doctor.id', '=', 'patient.id_doctor')
->leftJoin('sport_patient', 'sport_patient.id', '=', 'patient.id_sport_patient')
->select('patient.id', 'patient.login', 'patient.email', 'doctor.login as loginDoctor', 'doctor.email as emailDoctor', 'patient.pause', 'patient.block', 'patient.report7day', 'patient.report15day', 'patient.id_sport_patient as id_sport_patient', 'patient.total_days_sports', 'patient.now_days_sports', 'patient.created_at', 'patient.updated_at')
->where("patient.id_doctor", $Doctor->id)
->where("patient.id_sport_patient","!=", null)
->get();//, 'patient.email', 'doctor.login as loginDoctor', 'doctor.email as emailDoctor', 'patient.pause', 'patient.block', 'patient.report7day', 'patient.report15day', 'sport_patient.id_patient', 'patient.total_days_sports', 'patient.now_days_sports', 'patient.created_at', 'patient.updated_at'
$result = [];
$number = 0;
for ($i = 0; $i != Count($Patient); $i++) {
$number++;
$search_patient = [
'number' => $number,
'id' => $Patient[$i]->id,
'login' => $Patient[$i]->login,
'loginDoctor' => $Patient[$i]->login,
'emailDoctor' => $Patient[$i]->emailDoctor,
'pause' => $Patient[$i]->pause,
'block' => $Patient[$i]->block,
'report7day' => $Patient[$i]->report7day,
'report15day' => $Patient[$i]->report15day,
'id_sport_patient' => $Patient[$i]->id_sport_patient,
'total_days_sports' => $Patient[$i]->total_days_sports,
'now_days_sports' => $Patient[$i]->now_days_sports,
'created_at' => $Patient[$i]->created_at,
'updated_at' => $Patient[$i]->updated_at,
];
array_push($result, $search_patient);
}
return response(["patient" => $result], 200);
}
//Вывод все пациентов конкретного врача без курса
public function GetPatientAllNotActive()
{
$Doctor = Auth::user()->makeHidden(['id']);
$Patient = Patient::orderBy('id', 'ASC')
->leftJoin('doctor', 'doctor.id', '=', 'patient.id_doctor')
->leftJoin('sport_patient', 'sport_patient.id', '=', 'patient.id_sport_patient')
->select('patient.id', 'patient.login', 'patient.email', 'doctor.login as loginDoctor', 'doctor.email as emailDoctor', 'patient.pause', 'patient.block', 'patient.report7day', 'patient.report15day', 'patient.id_sport_patient as id_sport_patient', 'patient.total_days_sports', 'patient.now_days_sports', 'patient.created_at', 'patient.updated_at')
->where("patient.id_doctor", $Doctor->id)
->where("patient.id_sport_patient", null)
->get();//, 'patient.email', 'doctor.login as loginDoctor', 'doctor.email as emailDoctor', 'patient.pause', 'patient.block', 'patient.report7day', 'patient.report15day', 'sport_patient.id_patient', 'patient.total_days_sports', 'patient.now_days_sports', 'patient.created_at', 'patient.updated_at'
$result = [];
$number = 0;
for ($i = 0; $i != Count($Patient); $i++) {
$number++;
$search_patient = [
'number' => $number,
'id' => $Patient[$i]->id,
'login' => $Patient[$i]->login,
'loginDoctor' => $Patient[$i]->login,
'emailDoctor' => $Patient[$i]->emailDoctor,
'pause' => $Patient[$i]->pause,
'block' => $Patient[$i]->block,
'report7day' => $Patient[$i]->report7day,
'report15day' => $Patient[$i]->report15day,
'id_sport_patient' => $Patient[$i]->id_sport_patient,
'total_days_sports' => $Patient[$i]->total_days_sports,
'now_days_sports' => $Patient[$i]->now_days_sports,
'created_at' => $Patient[$i]->created_at,
'updated_at' => $Patient[$i]->updated_at,
];
array_push($result, $search_patient);
}
return response(["patient" => $result], 200);
}
public function GetPatientID(Request $request)
{
$Doctor = Auth::user()->makeHidden(['id']);
$error = Validator::make($request->all(), [
'id' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::orderBy('id', 'ASC')
->leftJoin('doctor', 'doctor.id', '=', 'patient.id_doctor')
->select('patient.id', 'patient.login', 'patient.email', 'doctor.login as loginDoctor', 'doctor.email as emailDoctor', 'patient.pause', 'patient.block', 'patient.report7day', 'patient.report15day', 'patient.id_sport_patient as id_sport_patient', 'patient.total_days_sports', 'patient.now_days_sports', 'patient.created_at', 'patient.updated_at')->where("patient.id", $request->id)->first();//, 'patient.email', 'doctor.login as loginDoctor', 'doctor.email as emailDoctor', 'patient.pause', 'patient.block', 'patient.report7day', 'patient.report15day', 'sport_patient.id_patient', 'patient.total_days_sports', 'patient.now_days_sports', 'patient.created_at', 'patient.updated_at'
return response( $Patient, 200);
}
}
//Авторизация врача
public function LoginDoctor(Request $request)
{
$validation = Validator::make($request->all(), [
'login' => 'required|regex:/^[a-zA-Z0-9\-]+$/|string|max:20|min:4',
'password' => 'required|regex:/^[a-zA-Z0-9\-]+$/|string|max:100|min:8',
]);
if ($validation->fails()) {
$result = [
'error' => [
'code' => 400,
'message' => 'Validation error',
'error' => $validation->errors()
]];
return response($result, 422);
}
if (Auth::guard('doctor')->attempt(['login' => $request->login, 'password' => $request->password])) {
$user = Auth::guard('doctor')->user();
$pat = $user;
$pat->api_token = Str::random(80);
$pat->update();
return response([
'id' => $user->id,
'token' => $user->api_token,
], 200);
}
return response([
'error' => [
'code' => 401,
'message' => 'Unauthorized',
'error' => [
'ОУ у тебя произошла ошибка']]
], 401);
}
public function LogoutDoctor()
{
$user = Auth::user()->makeHidden(['id', 'role']);
$pat = $user;
$pat->api_token = null;
$pat->update();
return response(['message' => 'Вы вышли из аккаунта'], 200);
}
//Вывод курса для врача, чтобы он смог посмотеть что входит в курс
public function GetCours(Request $request)
{
$error = Validator::make($request->all(), [
'name' => 'required|regex:/^[a-z0-9а-яё;]+$/iu|string|max:100|min:4',
'day' => 'required|numeric|max:365|min:1',
]);
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Cours = SportTasks::orderBy('id', 'ASC')
->leftJoin('image', 'image.id', '=', 'sports_tasks.id_image')
->leftJoin('set_of_sports_exercises', 'set_of_sports_exercises.id_sports_tasks', '=', 'sports_tasks.id')
->leftJoin('sets_of_sports_activities', 'sets_of_sports_activities.id', '=', 'set_of_sports_exercises.id_sets_of_sports_activities')
->leftJoin('sports_courses', 'sports_courses.id', '=', 'sets_of_sports_activities.id_sports_courses')
->select('set_of_sports_exercises.id', 'set_of_sports_exercises.number', 'sets_of_sports_activities.name as sets_of_sports_activities_Name', 'sets_of_sports_activities.description as sets_of_sports_activities_Description', 'sports_tasks.name as sports_tasks_Name', 'sports_tasks.description as sports_tasks_Description', 'sports_tasks.count as sports_tasks_Count', 'image.url_image as image_Url',)
->where('sports_courses.name', '=', $request->name)->where('sets_of_sports_activities.day', '=', $request->day)
->get();
return response()->json($Cours);
}
}
//Вывод всех курсов
public function GetCoursAll()
{
$Cours = SportCourses::get();
return response(['courses' => $Cours], 200);
}
//Вывод курса пациента
public function GetCoursAllPatient(Request $request)
{
$user = Auth::user()->makeHidden(['id']);
$error = Validator::make($request->all(), [
'id' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id)->first();
if ($Patient != null) {
$Cours = SportCourses::where('user_id',0)->get();
$SportCourses = SportCourses::join('sport_patient', 'sports_courses.id', '=', 'sport_patient.id_sports_courses')
->distinct()
->select('sports_courses.id', 'sports_courses.name', 'sports_courses.description', 'sports_courses.visibility', 'sports_courses.created_at', 'sports_courses.updated_at')
->where('id_patient', $Patient->id)
->where('sport_patient.id', $Patient->id_sport_patient)
->where('user_id',0)
->first();
$result = [];
$number = 0;
//Если у пациента есть курс
$SportPatient_ = SportPatient::where('id',$request->id)->first();
$Cours_ = SportCourses::where('user_id',0)->where('id',$SportPatient_->id_sports_courses)->first();
if ($Patient->id_sport_patient != null && $Cours_!=null && $SportCourses !=null) {
for ($i = 0; $i != Count($Cours); $i++) {
$number++;
if ($Cours[$i]->id == $SportCourses->id) {
$search_cours = [
'number' => $number,
'id' => $Cours[$i]->id,
'name' => $Cours[$i]->name,
'description' => $Cours[$i]->description,
'visibility' => 100000,
'created_at' => $Cours[$i]->created_at,
'updated_at' => $Cours[$i]->updated_at,
];
array_push($result, $search_cours);
} else {
$search_cours = [
'number' => $number,
'id' => $Cours[$i]->id,
'name' => $Cours[$i]->name,
'description' => $Cours[$i]->description,
'visibility' => 0,
'created_at' => $Cours[$i]->created_at,
'updated_at' => $Cours[$i]->updated_at,
];
array_push($result, $search_cours);
}
}
} //Если его нету
else {
for ($i = 0; $i != Count($Cours); $i++) {
$number++;
$search_cours = [
'number' => $number,
'id' => $Cours[$i]->id,
'name' => $Cours[$i]->name,
'description' => $Cours[$i]->description,
'visibility' => 0,
'created_at' => $Cours[$i]->created_at,
'updated_at' => $Cours[$i]->updated_at,
];
array_push($result, $search_cours);
}
}
return response(['courses' => $result], 200);
//return response(['courses' => $Cours], 200);
} else {
return response(['Такого пациента нету'], 401);
}
}
}
//Вывод курсов созданных врачем
function GetCoursesDoctorPatient(Request $request){
$user = Auth::user()->makeHidden(['id']);
$error = Validator::make($request->all(), [
'id' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id)->first();
if ($Patient != null) {
$Cours = SportCourses::where('user_id',$user->id)->get();
$SportCourses = SportCourses::join('sport_patient', 'sports_courses.id', '=', 'sport_patient.id_sports_courses')
->distinct()
->select('sports_courses.id', 'sports_courses.name', 'sports_courses.description', 'sports_courses.visibility', 'sports_courses.created_at', 'sports_courses.updated_at')
->where('id_patient', $Patient->id)
->where('sport_patient.id', $Patient->id_sport_patient)
->where('user_id',$user->id)
->first();
$result = [];
$number = 0;
//Если у пациента есть курс
$SportPatient_ = SportPatient::where('id',$request->id)->first();
$Cours_ = SportCourses::where('user_id',$user->id)->where('id',$SportPatient_->id_sports_courses)->first();
if ($Patient->id_sport_patient != null && $Cours_==null && $SportCourses !=null) {
for ($i = 0; $i != Count($Cours); $i++) {
$number++;
if ($Cours[$i]->id == $SportCourses->id) {
$search_cours = [
'number' => $number,
'id' => $Cours[$i]->id,
'name' => $Cours[$i]->name,
'description' => $Cours[$i]->description,
'visibility' => 100000,
'created_at' => $Cours[$i]->created_at,
'updated_at' => $Cours[$i]->updated_at,
];
array_push($result, $search_cours);
} else {
$search_cours = [
'number' => $number,
'id' => $Cours[$i]->id,
'name' => $Cours[$i]->name,
'description' => $Cours[$i]->description,
'visibility' => 0,
'created_at' => $Cours[$i]->created_at,
'updated_at' => $Cours[$i]->updated_at,
];
array_push($result, $search_cours);
}
}
} //Если его нету
else {
for ($i = 0; $i != Count($Cours); $i++) {
$number++;
$search_cours = [
'number' => $number,
'id' => $Cours[$i]->id,
'name' => $Cours[$i]->name,
'description' => $Cours[$i]->description,
'visibility' => 0,
'created_at' => $Cours[$i]->created_at,
'updated_at' => $Cours[$i]->updated_at,
];
array_push($result, $search_cours);
}
}
return response(['courses_doctor' => $result], 200);
//return response(['courses' => $Cours], 200);
} else {
return response(['Такого пациента нету'], 401);
}
}
}
//Добавление курса пациенту
public
function AddSportPatient(Request $request)
{
$user = Auth::user()->makeHidden(['id']);
$Patient = Patient::where('id', $request->id_patient)->first();
$error = Validator::make($request->all(), [
'id_patient' => 'required|numeric|max:10000|min:1',
'id_course' => 'required|numeric|max:10000|min:1',
'all_day' => 'required|numeric|max:365|min:1',
]);
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id_patient)->first();
if ($Patient != null) {
if ($Patient->id_sport_patient == null) {
//Добовляем данные для списка с курсами
$SportPatient = SportPatient::create([
'id_patient' => $request->id_patient,
'id_sports_courses' => $request->id_course,
]);
//Добавление в таблицу пациентов в запись пациента к какая запись из sport_patient относится к нему(в которой хранится ID курса который к неу относится)
$pat = $Patient;
$pat->id_sport_patient = $SportPatient->id;
$pat->total_days_sports = $request->all_day;
$pat->now_days_sports = 0;
$pat->all_days_sports = 0;
$pat->id_doctor = $user->id;
$pat->update();
//Создание списка на 30 дней в таблице calendar_days
for ($i = 0; $i < $request->all_day; $i++) {//Цикл на количество дней
$date = date('Y-m-d', strtotime("$i day"));
CalendarDays::create([
'id_patient' => $request->id_patient,
'day' => $i + 1,
'date' => $date,
'id_sport_patient' => $Patient->id_sport_patient,
]);
}
return response(['message' => 'Курс был добавлен в таблицу для хранения всех куров у пациента'], 200);
} else {
return response(['message' => 'У пациента уже есть курс, чтобы добавить новый удалите предыдуший'], 200);
}
} else {
return response(['message' => 'Такого пациента нету'], 401);
}
}
}
//Очистка курса пациента
public
function ClearPatientSport(Request $request)
{
$error = Validator::make($request->all(), [
'id_patient' => 'required|numeric|max:10000|min:1',
]);
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id_patient)->first();
if ($Patient != null) {
if ($Patient->id_sport_patient == null) {
return response(['message' => 'У пациента нету курса'], 200);
} else {
//Обновляем что курс окончен
$SportPatient = SportPatient::where('id', $Patient->id_sport_patient)->first();
$SP = $SportPatient;
$SP->finished = 1;
$SP->update();
$pat = $Patient;
$pat->pause = null;
$pat->block = null;
$pat->report7day = null;
$pat->report15day = null;
$pat->id_sport_patient = null;
$pat->total_days_sports = null;
$pat->now_days_sports = null;
$pat->all_days_sports = null;
$pat->update();
return response(['message' => 'Курс пациента был очишен'], 200);
}
} else {
return response(['message' => 'Такого пациента нету'], 401);
}
}
}
function AddandClearDayPatient(string $id)
{
$Patient = Patient::where('id', $id)->first();
$CalendarDaysAdd = CalendarDays::where('id_patient', $Patient->id)->where('id_sport_patient', $Patient->id_sport_patient)->where('date', '>=', date('Y-m-d'))->get();
$dateMax = $Patient->total_days_sports - $Patient->now_days_sports;
$CoutCD = Count($CalendarDaysAdd);
if ($dateMax != $CoutCD) {
if ($dateMax < $CoutCD) {
$max = $CoutCD - $dateMax;
for ($i = 1; $i < $max; $i++) {
CalendarDays::where('id_patient', $Patient->id)->where('id_sport_patient', $Patient->id_sport_patient)->where('date', '>=', date('Y-m-d'))->orderBy('date', 'DESC')->first()->delete();
}
} else {
$max = ($dateMax - $CoutCD) + 1;
$CalendarDaysDelete = CalendarDays::where('id_patient', $Patient->id)->where('id_sport_patient', $Patient->id_sport_patient)->where('date', '>=', date('Y-m-d'))->orderBy('date', 'DESC')->first();
for ($i = 1; $i < $max; $i++) {
CalendarDays::create([
'id_patient' => $Patient->id,
'day' => $CalendarDaysDelete->day + $i,
'date' => date('Y-m-d', strtotime("+$i day", strtotime($CalendarDaysDelete->date))),
'id_sport_patient' => $Patient->id_sport_patient,
]);
}
}
}
return response("CoutCD - $CoutCD | dateMax - $dateMax | Patient->total_days_sports - $Patient->total_days_sports | Patient->now_days_sports - $Patient->now_days_sports", 400);
}
//Вывод курса для врача, чтобы он смог посмотеть что входит в курс
public
function GetPatientBAQiestionar(Request $request)
{
$error = Validator::make($request->all(), [
'id' => '',
]);
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id)->first();
if ($Patient->id_sport_patient == null || $Patient->id_sport_patient == "") {
return response(['message' => "У пациента отсутсвует курс"], 200);
} else {
$BeforeQuestionnaire = BeforeQuestionnaire::where('id_sport_patient', $Patient->id_sport_patient)->orderBy('date', 'ASC')->get();
$result = [];
for ($i = 0; $i < Count($BeforeQuestionnaire); $i++) {
$AfterQuestionnaireSearch = AfterQuestionnaire::where('date', $BeforeQuestionnaire[$i]->date)->where('id_sport_patient', $Patient->id_sport_patient)->first();
if ($AfterQuestionnaireSearch != null) {
$search_sport = [
'date' => $BeforeQuestionnaire[$i]->date,
'idb' => $BeforeQuestionnaire[$i]->id,
'oneb' => $BeforeQuestionnaire[$i]->one,
'twob' => $BeforeQuestionnaire[$i]->two,
'threeb' => $BeforeQuestionnaire[$i]->three,
'fourb' => $BeforeQuestionnaire[$i]->four,
'fiveb' => $BeforeQuestionnaire[$i]->five,
'sixb' => $BeforeQuestionnaire[$i]->six,
'sevenb' => $BeforeQuestionnaire[$i]->seven,
'eightb' => $BeforeQuestionnaire[$i]->eight,
'nineb' => $BeforeQuestionnaire[$i]->nine,
'statusa' => "1",
'ida' => $AfterQuestionnaireSearch->id,
'onea' => $AfterQuestionnaireSearch->one,
'twoa' => $AfterQuestionnaireSearch->two,
'threea' => $AfterQuestionnaireSearch->three,
'foura' => $AfterQuestionnaireSearch->four,
'fivea' => $AfterQuestionnaireSearch->five,
'sixa' => $AfterQuestionnaireSearch->six,
'sevena' => $AfterQuestionnaireSearch->seven,
'eighta' => $AfterQuestionnaireSearch->eight,
'ninea' => $AfterQuestionnaireSearch->nine,
'tena' => $AfterQuestionnaireSearch->ten,
'elevena' => $AfterQuestionnaireSearch->eleven,
'twelvea' => $AfterQuestionnaireSearch->twelve,
];
} else {
$search_sport = [
'date' => $BeforeQuestionnaire[$i]->date,
'idb' => $BeforeQuestionnaire[$i]->id,
'oneb' => $BeforeQuestionnaire[$i]->one,
'twob' => $BeforeQuestionnaire[$i]->two,
'threeb' => $BeforeQuestionnaire[$i]->three,
'fourb' => $BeforeQuestionnaire[$i]->four,
'fiveb' => $BeforeQuestionnaire[$i]->five,
'sixb' => $BeforeQuestionnaire[$i]->six,
'sevenb' => $BeforeQuestionnaire[$i]->seven,
'eightb' => $BeforeQuestionnaire[$i]->eight,
'nineb' => $BeforeQuestionnaire[$i]->nine,
'statusa' => "0",
'onea' => 0,
'twoa' => 0,
'threea' => 0,
'foura' => 0,
'fivea' => 0,
'sixa' => 0,
'sevena' => 0,
'eighta' => 0,
'ninea' => 0,
'tena' => 0,
'elevena' => 0,
'twelvea' => 0,
];
}
array_push($result, $search_sport);
}
return response(['questionnaire' => $result], 200);
}
}
}
function CheckTokenDoctor()
{
$User = Auth::user();
if ($User != null) {
return response(['status' => "300"], 200);
} else {
return response(['status' => "600"], 200);
}
}
public function UpdatePatientLogin(Request $request)
{
$error = Validator::make($request->all(), [
'id' => 'required|numeric|max:10000|min:1',
'login' => 'required|regex:/^[a-zA-Z0-9\-]+$/|string|max:20|min:4',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id)->first();
if ($Patient != null) {
$PatientLogin = Patient::where('login', $request->login)->first();
if ($PatientLogin == null) {
$P = $Patient;
$P->login = $request->login;
$P->update();
return response(['message' => 'Логин обновлен'], 200);
} else {
return response(['message' => 'Данный логин уже занят'], 200);
}
} else {
return response(['message' => 'Ошибка, такого пациента нету'], 400);
}
}
}
public function UpdatePatientPassword(Request $request)
{
$error = Validator::make($request->all(), [
'id' => 'required|numeric|max:10000|min:1',
'password' => 'required|regex:/^[a-zA-Z0-9\-]+$/|string|max:100|min:10',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id)->first();
if ($Patient != null) {
$P = $Patient;
$P->password = Hash::make($request->password);
$P->update();
return response(['message' => 'Пароль обновлен'], 200);
} else {
return response(['message' => 'Ошибка, такого пациента нету'], 400);
}
}
}
//Вывод новых необработанных заявлений
public function GetAppealsDoctorNew()
{
$User = Auth::user();
if ($User != null) {
$Appeals = AppealsDoctor::where('check', 0)->where('id_doctor', $User->id)->first();
$result = [];
$number=0;
if($Appeals!=null){
$AppealsList = AppealsDoctor::where('check', 0)->where('id_doctor', $User->id)->get();
for ($i = 0; $i != Count($AppealsList); $i++) {
$Patient = Patient::where('id',$AppealsList[$i]->id_patient)->first();
$number = $number+1;
$search_check = [
'number' => $number,
'id' => $AppealsList[$i]->id,
'text' => $AppealsList[$i]->text,
'id_patient' => $AppealsList[$i]->id_patient,
'id_doctor'=>$AppealsList[$i]->id_doctor,
'check'=>$AppealsList[$i]->check,
'login'=>$Patient->login,
'created_at'=>$AppealsList[$i]->created_at,
'updated_at'=>$AppealsList[$i]->updated_at,
];
array_push($result, $search_check);
}
return response(['appeals_new' => $result], 200);
}
else{
return response(['appeals_new' => null], 200);
}
} else {
return response(['message' => 'Ошибка 404'], 404);
}
}
//Вывод новых обработанных заявлений
public function GetAppealsDoctorOld()
{
$User = Auth::user();
if ($User != null) {
$Appeals = AppealsDoctor::where('check', 1)->where('id_doctor', $User->id)->first();
$result = [];
$number=0;
if($Appeals!=null){
$AppealsList = AppealsDoctor::where('check', 1)->where('id_doctor', $User->id)->get();
for ($i = 0; $i != Count($AppealsList); $i++) {
$Patient = Patient::where('id',$AppealsList[$i]->id_patient)->first();
$number = $number+1;
$search_check = [
'number' => $number,
'id' => $AppealsList[$i]->id,
'text' => $AppealsList[$i]->text,
'id_patient' => $AppealsList[$i]->id_patient,
'id_doctor'=>$AppealsList[$i]->id_doctor,
'check'=>$AppealsList[$i]->check,
'login'=>$Patient->login,
'created_at'=>$AppealsList[$i]->created_at,
'updated_at'=>$AppealsList[$i]->updated_at,
];
array_push($result, $search_check);
}
return response(['appeals_old' => $result], 200);
}
else{
return response(['appeals_old' => null], 200);
}
} else {
return response(['message' => 'Ошибка 404'], 404);
}
}
//Создание сообщения для пациента
public function AddMessageDoctor(Request $request)
{
$User = Auth::user();
if ($User != null) {
$error = Validator::make($request->all(), [
//'id' => 'required|numeric|max:10000|min:1',
'login' => 'required|string|max:1000|min:4',
// 'text' => 'required|regex:/^[a-zA-Z0-9\-]+$/|string|max:100|min:4',
'text' => 'required|string|max:1000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('login', $request->login)->first();
if ($Patient != null) {
AppealsPatient::create([
'text' => $request->text,
'id_patient' => $Patient->id,
'id_doctor' => $User->id,
]);
return response(['message' => 'Сообщение отправлено'], 200);
} else {
return response(['message' => 'Ошибка, такого пациента нету'], 400);
}
}
} else {
return response(['message' => 'Ошибка 404'], 404);
}
}
//Создание сообщения для пациента
public function UpdateMessageDoctor(Request $request)
{
$User = Auth::user();
if ($User != null) {
$error = Validator::make($request->all(), [
'id_patient' => 'required|numeric|max:10000|min:1',
'id' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$Patient = Patient::where('id', $request->id_patient)->first();
if ($Patient != null) {
$AppealsPatient = AppealsDoctor::where('id',$request->id)->where('check',0)->where('id_patient',$Patient->id)->where('id_doctor',$User->id)->first();
if($AppealsPatient!=null){
if($AppealsPatient->check == 0){
$AP = $AppealsPatient;
$AP->check = 1;
$AP->update();
return response(['message' => 'Подтверждено'], 200);
}
else{
return response(['message' => 'Данное сообщение уже отмечено'], 200);
}
}
else{
return response(['message' => 'Такого сообщения нету'], 200);
}
} else {
return response(['message' => 'Ошибка, такого пациента нету'], 400);
}
}
} else {
return response(['message' => 'Ошибка 404'], 404);
}
}
//Создание основы для собственного курса от врача
function AddCoursesName(Request $request){
$User = Auth::user();
if ($User != null) {
$error = Validator::make($request->all(), [
'name' => 'required|string|max:150|min:4',
'description' => 'required|string|max:1000|min:4',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$SportCourses = SportCourses::create([
'name'=>$request->name,
'description'=>$request->description,
'visibility'=>1,
'user_id'=>$User->id,
]);
SetsOfSportsActivities::create([
'name'=>uniqid(),
'day'=>1,
'description'=>"Общий курс",
'id_sports_courses'=>$SportCourses->id,
]);
return response(['message' => 'Шаблон для курса создан'], 200);
}
} else {
return response(['message' => 'Ошибка 404'], 404);
}
}
//Добавление упражнения в курс
function AddCoursesCreatingDoctor(Request $request){
$User = Auth::user();
if ($User != null) {
$error = Validator::make($request->all(), [
'id_sports_tasks' => 'required|numeric|max:10000|min:1',
'id_sets_of_sports_activities' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$SportTasks = SportTasks::where('id',$request->id_sports_tasks)->first();
if($SportTasks!=null){
$SetOfSportsExercises = SetOfSportsExercises::where('id_sets_of_sports_activities',$request->id_sets_of_sports_activities)->where('id_sports_tasks',$request->id_sports_tasks)->orderBy('id','DESC')->first();
if($SetOfSportsExercises ==null){
$SetOfSportsExercisesSport = SetOfSportsExercises::where('id_sets_of_sports_activities',$request->id_sets_of_sports_activities)->where('id_sports_tasks','!=',$request->id_sports_tasks)->orderBy('id','DESC')->first();
if($SetOfSportsExercisesSport==null){
SetOfSportsExercises::create([
'number'=>1,
'day'=>1,
'id_sports_tasks'=>$request->id_sports_tasks,
'id_sets_of_sports_activities'=>$request->id_sets_of_sports_activities,
]);
return response(['message' => 'Первое упражнение добавлено'], 200);
}
else{
SetOfSportsExercises::create([
'number'=>$SetOfSportsExercisesSport->number+1,
'day'=>1,
'id_sports_tasks'=>$request->id_sports_tasks,
'id_sets_of_sports_activities'=>$request->id_sets_of_sports_activities,
]);
return response(['message' => 'Упражнение добавлено'], 200);
}
}
else{
return response(['message' => 'Такое упражнение уже есть'], 200);
}
}
else{
return response(['message' => 'Такого упражнения нету'], 200);
}
}
} else {
return response(['message' => 'Ошибка 404'], 404);
}
}
//Удаление упражнения из курса
function ClearCoursesCreatingDoctor(Request $request){
$User = Auth::user();
if ($User != null) {
$error = Validator::make($request->all(), [
'id_sets_of_sports_exercises' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$SetOfSportsExercises = SetOfSportsExercises::where('id',$request->id_sets_of_sports_exercises)->first();
if($SetOfSportsExercises!=null){
SetOfSportsExercises::where('id',$request->id_sets_of_sports_exercises)->delete();
return response(['message' => 'Упражнение удалено'], 200);
}
else{
return response(['message' => 'Такого упражнения нету'], 200);
}
}
} else {
return response(['message' => 'Ошибка 404'], 404);
}
}
//Вывод курсов созданных врачем
function GetCoursesDoctor(){
$User = Auth::user();
$SportCoursesDoctor = SportCourses::where('user_id',$User->id)->get();
$SetsOfSportsActivities = SetsOfSportsActivities::orderBy('id', 'ASC')
->leftJoin('sports_courses', 'sports_courses.id', '=', 'sets_of_sports_activities.id_sports_courses')
->select('sports_courses.id', 'sports_courses.name', 'sports_courses.description', 'sports_courses.visibility', 'sports_courses.visibility','sports_courses.user_id','sets_of_sports_activities.id as id_activity','sports_courses.created_at','sports_courses.updated_at')
->distinct()
->where("sports_courses.user_id", $User->id)
->get();
$result = [];
$number=0;
for ($i = 0; $i != Count($SetsOfSportsActivities); $i++) {
$number = $number+1;
$search_check = [
'number' => $number,
'id' => $SetsOfSportsActivities[$i]->id,
'name' => $SetsOfSportsActivities[$i]->name,
'description' => $SetsOfSportsActivities[$i]->description,
'visibility' => $SetsOfSportsActivities[$i]->visibility,
'user_id'=>$SetsOfSportsActivities[$i]->user_id,
'id_activity'=>$SetsOfSportsActivities[$i]->id_activity,
'created_at'=>$SetsOfSportsActivities[$i]->created_at,
'updated_at'=>$SetsOfSportsActivities[$i]->updated_at,
];
array_push($result, $search_check);
}
return response(['sport_courses_doctor' => $result], 200);
}
//Вывод всех упражнений
function GetEditCourseDoctorAll(Request $request){
//$Doctor = Auth::user()->makeHidden(['id']);
$error = Validator::make($request->all(), [
'id_doctor_courses' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$SportCourses = SportCourses::orderBy('id', 'ASC')->where('id', $request->id_doctor_courses)->first();
if ($SportCourses != null) {
//$SportCoursesAdd = SportCourses::orderBy('id', 'ASC')->where('id_doctor_courses', $request->id_doctor_courses)->get();
// $SportTasks = $Set::get();
$SetOfSportsExercises = DB::table('set_of_sports_exercises')->orderBy('id', 'ASC')
->join('sets_of_sports_activities', 'set_of_sports_exercises.id_sets_of_sports_activities', '=', 'sets_of_sports_activities.id')
->join('sports_tasks', 'set_of_sports_exercises.id_sports_tasks', '=', 'sports_tasks.id')
// ->join('courses_sport_edit', 'set_of_sports_exercises.id_sports_tasks', '!=', 'courses_sport_edit.id_sports_tasks')
->join('sports_courses', 'sets_of_sports_activities.id_sports_courses', '=', 'sports_courses.id')
->join('image', 'sports_tasks.article_image', '=', 'image.article')
->select('sports_tasks.id','set_of_sports_exercises.id as id_exercises', 'sports_tasks.name', 'sports_tasks.description', 'image.url_image')
->distinct('id')
->where('sports_courses.id', '!=',$request->id_doctor_courses)
->get();
$CoursesSportEdit = DB::table('set_of_sports_exercises')->orderBy('id', 'ASC')
->join('sets_of_sports_activities', 'set_of_sports_exercises.id_sets_of_sports_activities', '=', 'sets_of_sports_activities.id')
->join('sports_tasks', 'set_of_sports_exercises.id_sports_tasks', '=', 'sports_tasks.id')
// ->join('courses_sport_edit', 'set_of_sports_exercises.id_sports_tasks', '!=', 'courses_sport_edit.id_sports_tasks')
->join('sports_courses', 'sets_of_sports_activities.id_sports_courses', '=', 'sports_courses.id')
->join('image', 'sports_tasks.article_image', '=', 'image.article')
->select('sports_tasks.id','set_of_sports_exercises.id as id_exercises', 'sports_tasks.name', 'sports_tasks.description', 'image.url_image')
->distinct('id')
->where('sports_courses.id',$request->id_doctor_courses)
->get();
$result = [];
$number = 0;
if ($CoursesSportEdit != null) {
for ($i = 0; $i != Count($SetOfSportsExercises); $i++) {
$res = 0;
for ($j = 0; $j != Count($CoursesSportEdit); $j++) {
if ($SetOfSportsExercises[$i]->id != $CoursesSportEdit[$j]->id) {
$res++;
}
}
if ($res == Count($CoursesSportEdit)) {
$number++;
$search_sport = [
'number' => $number,
'id' => $SetOfSportsExercises[$i]->id,
'id_exercises' => $SetOfSportsExercises[$i]->id_exercises,
'name' => $SetOfSportsExercises[$i]->name,
'description' => $SetOfSportsExercises[$i]->description,
'url_image' => $SetOfSportsExercises[$i]->url_image,
];
array_push($result, $search_sport);
}
}
} else {
for ($i = 0; $i != Count($SetOfSportsExercises); $i++) {
$search_sport = [
'number' => $number,
'id' => $SetOfSportsExercises[$i]->id,
'id_exercises' => $SetOfSportsExercises[$i]->id_exercises,
'name' => $SetOfSportsExercises[$i]->name,
'description' => $SetOfSportsExercises[$i]->description,
'url_image' => $SetOfSportsExercises[$i]->url_image,
];
array_push($result, $search_sport);
}
}
return response(['set_of_sports_exercises_all' => $result], 200);
} else {
return response(['message' => 'Ошибка, такого курса нету'], 400);
}
}
}
//Вывод добавленных упражнений в курс
function GetEditCourseDoctorYour(Request $request){
//$Doctor = Auth::user()->makeHidden(['id']);
$error = Validator::make($request->all(), [
'id_doctor_courses' => 'required|numeric|max:10000|min:1',
]);//1024
if ($error->fails()) {
return response(['error' => ['code' => 400, 'message' => 'Validation error', 'errors' => $error->errors()]], 400);
} else {
$SportCourses = SportCourses::orderBy('id', 'ASC')->where('id', $request->id_doctor_courses)->first();
if ($SportCourses != null) {
$CoursesSportEdit = DB::table('set_of_sports_exercises')->orderBy('id', 'ASC')
->join('sets_of_sports_activities', 'set_of_sports_exercises.id_sets_of_sports_activities', '=', 'sets_of_sports_activities.id')
->join('sports_tasks', 'set_of_sports_exercises.id_sports_tasks', '=', 'sports_tasks.id')
// ->join('courses_sport_edit', 'set_of_sports_exercises.id_sports_tasks', '!=', 'courses_sport_edit.id_sports_tasks')
->join('sports_courses', 'sets_of_sports_activities.id_sports_courses', '=', 'sports_courses.id')
->join('image', 'sports_tasks.article_image', '=', 'image.article')
->select('sports_tasks.id', 'sports_tasks.name', 'sports_tasks.description', 'image.url_image','set_of_sports_exercises.id as id_exercises')
->distinct('id')
->where('sports_courses.id',$request->id_doctor_courses, )
->get();
$result = [];
$number = 0;
for ($i = 0; $i != Count($CoursesSportEdit); $i++) {
$number++;
$search_sport = [
'number' => $number,
'id' => $CoursesSportEdit[$i]->id,
'id_exercises' => $CoursesSportEdit[$i]->id_exercises,
'name' => $CoursesSportEdit[$i]->name,
'description' => $CoursesSportEdit[$i]->description,
'url_image' => $CoursesSportEdit[$i]->url_image,
];
array_push($result, $search_sport);
}
return response(['set_of_sports_exercises_your' => $result], 200);
} else {
return response(['message' => 'Ошибка, такого курса нету'], 400);
}
}
}
//Получение данных для первой страницы врача
function CountPatientAndAppeals()
{
$User = Auth::user();
$Patient = Patient::where('id_doctor',$User->id)->get();
$AppealsCheck = AppealsDoctor::where('check',0)->where('id_doctor',$User->id)->get();
$AppealsAll = AppealsDoctor::where('id_doctor',$User->id)->get();
return response(['patient' => Count($Patient),'appeals_check' => Count($AppealsCheck),'appeals_all' => Count($AppealsAll)], 200);
}
}