PageRenderTime 27ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/app/Admin/Controllers/SchoolStudentController.php

https://bitbucket.org/Pranav1010/pratibha
PHP | 337 lines | 268 code | 67 blank | 2 comment | 13 complexity | 7874fa2466bf0cc3309a8f268cca9146 MD5 | raw file
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Extensions\Tools\GridSearch;
  4. use App\City;
  5. use App\Course;
  6. use App\CourseStudent;
  7. use App\CourseStudentSchool;
  8. use App\ExtraFee;
  9. use App\Parents;
  10. use App\Profession;
  11. use App\School;
  12. use App\Student;
  13. use App\User;
  14. use Encore\Admin\Auth\Database\Role;
  15. use Encore\Admin\Form;
  16. use Encore\Admin\Grid;
  17. use Encore\Admin\Facades\Admin;
  18. use Encore\Admin\Layout\Content;
  19. use App\Http\Controllers\Controller;
  20. use Encore\Admin\Controllers\ModelForm;
  21. use Encore\Admin\Layout\Row;
  22. use Illuminate\Http\Request;
  23. use Illuminate\Support\Facades\Input;
  24. use Mockery\Exception;
  25. use Validator;
  26. use Illuminate\Support\Facades\DB;
  27. class SchoolStudentController extends Controller
  28. {
  29. use ModelForm;
  30. public function __construct()
  31. {
  32. Admin::script(["
  33. $.getScript('/js/student-school.js');
  34. "]);
  35. }
  36. public function index()
  37. {
  38. return Admin::content(function (Content $content) {
  39. $content->header('School Students');
  40. $content->row(function (Row $row) {
  41. $row->column(12, $this->grid());
  42. $row->column(12, view('student.modal'));
  43. });
  44. });
  45. }
  46. public function edit($id)
  47. {
  48. return Admin::content(function (Content $content) use ($id) {
  49. $content->header('School Students');
  50. $professions = Profession::all();
  51. $cities = City::all();
  52. $courses = Course::all();
  53. $parents = Parents::all();
  54. $cities = City::all();
  55. $schools = School::all();
  56. $professions = Profession::all();
  57. $student = User::find($id);
  58. if ($student == null) {
  59. return redirect('students');
  60. }
  61. $studentCourses = CourseStudentSchool::where('user_id', $id)->pluck('course_id')->toArray();
  62. if (isset($student->student->bdate)) {
  63. $student->student->bdate = date('d/m/Y', strtotime($student->student->bdate));
  64. }
  65. $content->row(view('student.school.edit-student', compact('student', 'courses', 'parents', 'cities', 'professions', 'schools', 'studentCourses')));
  66. $content->row(view("addModal.addParent", compact("professions", "cities")));
  67. $content->row(view("addModal.addSchool", compact("cities")));
  68. $content->row(view("addModal.addCity"));
  69. $content->row(view("addModal.addProfession"));
  70. });
  71. }
  72. public function create()
  73. {
  74. return Admin::content(function (Content $content) {
  75. $content->header('School Students');
  76. $courses = Course::all();
  77. $parents = Parents::all();
  78. $cities = City::all();
  79. $schools = School::all();
  80. $professions = Profession::all();
  81. $feeTypes = config('app.fee_type');
  82. $extraFees = ExtraFee::all();
  83. $content->row(view('student.school.add-student', compact(['courses', 'parents', 'cities', 'schools', 'professions'])));
  84. $content->row(view("addModal.addParent", compact("professions", "cities")));
  85. $content->row(view("addModal.addSchool", compact("cities")));
  86. $content->row(view("addModal.addCity"));
  87. $content->row(view("addModal.addProfession"));
  88. });
  89. }
  90. protected function grid()
  91. {
  92. return Admin::grid(User::class, function (Grid $grid) {
  93. $grid->disableExport();
  94. $grid->disableFilter();
  95. $grid->disableRowSelector();
  96. $grid->model()->orderBy('id', 'desc');
  97. $grid->model()->whereHas('student', function ($q) {
  98. $q->where('student_category', '!=', 0);
  99. });
  100. $grid->model()->whereHas("roles", function ($q) {
  101. $role = Role::where("slug", "student")->first();
  102. $id = ($role) ? $role->id : 0;
  103. $q->where('role_id', $id);
  104. });
  105. $grid->name('Name')->sortable();
  106. $grid->username('Username')->sortable();
  107. $grid->column('id', 'Activities')->display(function ($id) {
  108. $data = CourseStudentSchool::where('user_id',$id)->get();
  109. $string = '';
  110. if ($data->count() == 0)
  111. return '-';
  112. foreach ($data as $key => $value) {
  113. $string .= '<span class="label label-success" style="margin: 5px;">' . $value->course->name . '</span>';
  114. }
  115. return $string;
  116. });
  117. $grid->actions(function (Grid\Displayers\Actions $actions) {
  118. $actions->disableEdit();
  119. $actions->disableDelete();
  120. $actions->prepend('<a href="/students-school/' . $actions->row->id . '/edit"><i class="fa fa-edit"></i></a>');
  121. $actions->prepend('<a class="btn btn-primary openModal" data-id="' . $actions->row->id . '"><i class="fa fa-eye"></i></a>');
  122. $actions->append('<a class="btn btn-danger delete-row" onclick="deleteRow(this)" data-id="' . $actions->row->id . '"><i class="fa fa-trash"></i></a>');
  123. });
  124. // Search Filter -----
  125. $grid->tools(function ($tools) {
  126. $tools->append(new GridSearch());
  127. // $tools->prepend("<a href='" . url('/students') . "' class='btn btn-success pull-right'><i class=\"fa fa-save\"></i> New</a>");
  128. });
  129. $value = Input::get('search');
  130. $q = $grid->model();
  131. if (!empty($value)) {
  132. $q->whereHas("roles", function ($q) {
  133. $role = Role::where("slug", "student")->first();
  134. $id = ($role) ? $role->id : 0;
  135. $q->where('role_id', $id);
  136. });
  137. $q->where(function ($query) use ($value) {
  138. $query->where("name", "like", "%{$value}%")
  139. ->orWhere("username", "like", "%{$value}%")
  140. ->orWhereHas('userCourse.course', function ($qr) use ($value) {
  141. $qr->where('name', "like", "%{$value}%");
  142. });
  143. });
  144. }
  145. $grid->paginate(10);
  146. });
  147. }
  148. protected function form()
  149. {
  150. return Admin::form(User::class, function (Form $form) {
  151. $form->display('id', 'ID');
  152. $form->display('created_at', 'Created At');
  153. $form->display('updated_at', 'Updated At');
  154. });
  155. }
  156. public function store(Request $request)
  157. {
  158. $validator = Validator::make($request->all(), [
  159. 'name' => 'required',
  160. 'parent' => 'required',
  161. 'address' => 'required',
  162. 'school' => 'required',
  163. 'mobile' => 'required|unique:users,mobile',
  164. 'courses' => 'required',
  165. ]);
  166. if ($validator->fails()) {
  167. $error = [];
  168. $error['error'] = $validator->getMessageBag();
  169. return response()->json($error, 406);
  170. } else {
  171. DB::beginTransaction();
  172. try {
  173. $user = new User();
  174. $user->name = $request->name;
  175. $user->mobile = $request->mobile;
  176. $user->email = $request->email;
  177. $user->city_id = $request->city;
  178. $user->address = $request->address;
  179. $user->username = $request->mobile;
  180. $user->password = bcrypt(config('app.default_password'));
  181. $user->save();
  182. $user->roles()->save(Role::where('slug', 'student')->first());
  183. $date = ($request->bdate != null) ? date('Y/m/d', strtotime($request->bdate)) : null;
  184. $student = new Student();
  185. $student->user_id = $user->id;
  186. $student->parent_id = $request->parent;
  187. $student->bdate = $date;
  188. $student->school_id = $request->school;
  189. $student->is_inquiry = ($request->inquiry_id) ? 1 : 0;
  190. $student->guardian_name = ($request->guardian_name) ? $request->guardian_name : null;
  191. $student->guardian_email = ($request->guardian_email) ? $request->guardian_email : null;
  192. $student->guardian_mobile = ($request->guardian_mobile) ? $request->guardian_mobile : null;
  193. $student->guardian_profession = ($request->guardian_profession) ? $request->guardian_profession : null;
  194. $student->aadhar_no = $request->aadhar_no;
  195. $student->second_contact_no = ($request->second_contact_no) ? $request->second_contact_no : null;
  196. $student->reference_no = date('y') . '' . date('m') . '' . $user->barnch_id;
  197. $student->student_category = 1;
  198. $student->save();
  199. $currentDate = new \DateTime("now", new \DateTimeZone("Asia/Kolkata"));
  200. $currentMonth = $currentDate->format("m");
  201. foreach ($request->courses as $key => $value) {
  202. CourseStudentSchool::create([
  203. 'course_id' => $value,
  204. 'user_id' => $user->id
  205. ]);
  206. }
  207. DB::commit();
  208. return response()->json(array('result' => "success", 'student_id' => $user->id), 200);
  209. } catch (Exception $exception) {
  210. DB::rollBack();
  211. return null;
  212. }
  213. }
  214. }
  215. public function update(Request $request, $id)
  216. {
  217. $validator = Validator::make($request->all(), [
  218. 'name' => 'required',
  219. 'parent' => 'required',
  220. 'address' => 'required',
  221. 'school' => 'required',
  222. 'courses' => 'required',
  223. 'mobile' => 'required'
  224. ]);
  225. $error = $validator->getMessageBag()->toArray();
  226. if ($validator->fails()) {
  227. return response()->json($error, 406);
  228. } else {
  229. DB::beginTransaction();
  230. try {
  231. $user = User::find($id);
  232. $user->name = $request->name;
  233. $user->mobile = $request->mobile;
  234. $user->email = $request->email;
  235. $user->city_id = $request->city;
  236. $user->address = $request->address;
  237. $user->save();
  238. if (isset($request->bdate)) {
  239. $date = date('Y/m/d', strtotime($request->bdate));
  240. } else {
  241. $date = null;
  242. }
  243. $student = Student::where('user_id', $id)->first();
  244. $student->user_id = $user->id;
  245. $student->parent_id = $request->parent;
  246. $student->bdate = $date;
  247. $student->school_id = $request->school;
  248. $student->guardian_name = ($request->guardian_name) ? $request->guardian_name : null;
  249. $student->guardian_email = ($request->guardian_email) ? $request->guardian_email : null;
  250. $student->guardian_mobile = ($request->guardian_mobile) ? $request->guardian_mobile : null;
  251. $student->guardian_profession = ($request->guardian_profession) ? $request->guardian_profession : null;
  252. $student->guardian_relation = ($request->guardian_relation) ? $request->guardian_relation : null;
  253. $student->aadhar_no = $request->aadhar_no;
  254. $student->save();
  255. CourseStudentSchool::where('user_id', $user->id)->delete();
  256. foreach ($request->courses as $course) {
  257. CourseStudentSchool::create([
  258. 'user_id' => $user->id,
  259. 'course_id' => $course
  260. ]);
  261. }
  262. DB::commit();
  263. return response()->json(array('result' => "success", 'student_id' => $user->id), 200);
  264. } catch (Exception $exception) {
  265. DB::rollBack();
  266. return null;
  267. }
  268. }
  269. }
  270. }