This commit is contained in:
saeid
2019-05-06 21:48:46 +04:30
parent 5d8500dafd
commit f6d7277ddc
14 changed files with 268 additions and 168 deletions
+62 -17
View File
@@ -38,7 +38,6 @@ class TestResultController extends Controller
public function store(StoreTestResultRequest $request)
{
// dd($request->all());
try {
$return_value = \DB::transaction(function () use ($request) {
@@ -52,24 +51,39 @@ class TestResultController extends Controller
$TestResultObj = TestResult::create($TestResult);
$TestResultInfo = $request->all();
$Inputs = Input::with('options','children','children.children')->where('test_type_id',$request->test_type_id)->get();
$Inputs = Input::with('options','children','children.children')->whereNull('parent_id')->where('test_type_id',$request->test_type_id)->get();
////////////////////////////////////////////////////////////////////////////////////--2
foreach ($Inputs as $Input) {
if ($Input['type'] != 'Form') {
$Value = $TestResultInfo[$Input->name];
if ($Input['type'] == 'Checkbox') {
$Value = json_encode($Value);
if ($Input['type'] == 'Checkbox' || $Input['type'] == 'Select' ) {
foreach ($Value as $Option) {
// dd($Option);
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id, 'input_id' => $Input->id, 'option_id' => $Option]);
}
}
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id , 'input_id' => $Input->id , 'value' => $Value]);
else {
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id, 'input_id' => $Input->id, 'value' => $Value]);
}
}
else {
foreach ($Input->children as $InputChild) {
$Value = $TestResultInfo[$InputChild->name];
if ($InputChild['type'] == 'Checkbox') {
$Value = json_encode($Value);
if ($InputChild['type'] == 'Checkbox' || $InputChild['type'] == 'Select') {
// dd($InputChild['type']);
foreach ($Value as $Option) {
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id, 'input_id' => $InputChild->id, 'option_id' => $Option]);
}
}
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id , 'input_id' => $InputChild->id , 'value' => $Value]);
else {
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id, 'input_id' => $InputChild->id, 'value' => $Value]);
}
}
//-------------------------------------------------------
// $this->CreateChildFormValue2($Input,$TestResultObj,$TestResultInfo);
@@ -99,6 +113,13 @@ class TestResultController extends Controller
}
}
// if ($request->hasFile('image')) {
// $image = $request->file('image');
// $input['imagename'] = time().$image->getClientOriginalExtension();
// $path = '/Uploads'.'/'.$TestResultObj->id;
// Storage::disk('public')->makeDirectory($TestResultObj->id);
// $image->move($path, $input['imagename']);
// }
});
@@ -109,9 +130,19 @@ class TestResultController extends Controller
}
public function show($id)
public function show(TestResult $TestResult)
{
//
foreach ($TestResult->input_values as $key => $value) {
$input = $value->input;
if ($input->type == 'Checkbox' || $input->type == 'Select') {
$input_options = InputValue::where('test_result_id', $TestResult->id)->where('input_id', $input->id)->get()->pluck('option_id')->toArray();
$TestResult[$input->name] = $input_options;
}
else {
$TestResult[$input->name] = $value->value;
}
}
return \MessageResponse::data($TestResult);
}
//Todo:: pass Inputs
@@ -119,7 +150,13 @@ class TestResultController extends Controller
{
foreach ($TestResult->input_values as $key => $value) {
$input = $value->input;
$TestResult[$input->name] = $value->value;
if ($input->type == 'Checkbox' || $input->type == 'Select') {
$input_options = InputValue::where('test_result_id', $TestResult->id)->where('input_id', $input->id)->get()->pluck('option_id')->toArray();
$TestResult[$input->name] = $input_options;
}
else {
$TestResult[$input->name] = $value->value;
}
}
return \MessageResponse::data($TestResult);
}
@@ -136,24 +173,32 @@ class TestResultController extends Controller
$TestResult->update($TestResultData);
$TestResultInfo = $request->all();
$Inputs = Input::with('options','children','children.children')->where('test_type_id',$request->test_type_id)->get();
$Inputs = Input::with('options','children','children.children')->whereNull('parent_id')->where('test_type_id',$request->test_type_id)->get();
foreach ($Inputs as $Input) {
if ($Input['type'] != 'Form') {
$Value = $TestResultInfo[$Input->name];
if ($Input['type'] == 'Checkbox') {
$Value = json_encode($Value);
if ($Input['type'] == 'Checkbox' || $Input['type'] == 'Select' ) {
foreach ($Value as $Option) {
// $InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id, 'input_id' => $Input->id, 'option_id' => $Option]);
}
}
else {
$InputValueObj = InputValue::where('test_result_id',$TestResult->id)->where('input_id', $Input['id'])->update(['value' => $Value]);
}
$InputValueObj = InputValue::where('test_result_id',$TestResult->id)->where('input_id', $Input['id'])->update(['value' => $Value]);
}
else {
foreach ($Input->children as $InputChild) {
$Value = $TestResultInfo[$InputChild->name];
if ($InputChild['type'] == 'Checkbox') {
if ($InputChild['type'] == 'Checkbox' || $InputChild['type'] == 'Select') {
$Value = json_encode($Value);
}
$InputValueObj = InputValue::where('test_result_id',$TestResult->id)->where('input_id', $Input['id'])->update(['value' => $Value]);
else {
$InputValueObj = InputValue::where('test_result_id',$TestResult->id)->where('input_id', $InputChild['id'])->update(['value' => $Value]);
}
}
}
}
+4 -4
View File
@@ -48,7 +48,6 @@ class TestTypeController extends Controller
}
//---------------------------------------------Option
return $InputObj;
}
public function CreateChildForm($Input,$TestType,$InputObj)
@@ -364,9 +363,10 @@ class TestTypeController extends Controller
public function destroy(TestType $TestType)
{
// if (auth('api')->user()->can('delete', $TestType)) {
// return \MessageResponse::error(trans('messages.failed'));
// }
// dd($TestType);
if (auth('api')->user()->can('delete', $TestType)) {
return \MessageResponse::error(trans('messages.failed'));
}
// dd($TestType);
$TestType->delete();
return \MessageResponse::success(trans('messages.success'));
+111 -111
View File
@@ -1,111 +1,111 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\StoreUserRequest;
use App\MedicalCenter;
use App\User;
class UserController extends Controller
{
public function index()
{
$Users = User::with(['medical_center', 'roles'])->paginate(10);
return \MessageResponse::data($Users);
}
public function store(StoreUserRequest $request)
{
$UserData = [
'name' => $request->name ,
'cell_number' => $request->cell_number ,
'medical_center_id' => $request->medical_center_id ,
'status' => 'PreRegister',
'verified' => 1,
'password' => bcrypt($request->password),
];
$User = User::create($UserData);
return \MessageResponse::success(trans('messages.success'));
}
public function edit(User $User)
{
return \MessageResponse::data($User);
}
public function update(StoreUserRequest $request, User $User)
{
$UserData = [
'name' => $request->name ,
'cell_number' => $request->cell_number ,
'medical_center_id' => $request->medical_center_id ,
'status' => 'PreRegister',
'verified' => 1,
'password' => bcrypt($request->password),
];
$User->update($UserData);
return \MessageResponse::success(trans('messages.success'));
}
public function destroy(User $User)
{
if (auth('api')->user()->can('delete', $User)) {
return \MessageResponse::error(trans('messages.failed'));
}
$User->delete();
return \MessageResponse::success(trans('messages.success'));
}
public function getByMedicalCenter(MedicalCenter $MedicalCenter)
{
$MedicalCenter = $MedicalCenter->load(['users' => function ($query) {
return $query->select(['id', 'medical_center_id', 'name', 'cell_number', 'status']);
}, 'users.roles']);
return \MessageResponse::data($MedicalCenter);
}
public function changeStatus(User $User)
{
if ($User->status == 'Active') {
$User->status = 'Suspended';
} else {
$User->status = 'Active';
}
$User->save();
return \MessageResponse::data($User);
}
public function changeRole(User $User, Request $request)
{
$User->syncRoles($request->roles);
return \MessageResponse::data($User);
}
public function updateInfo(Request $request)
{
auth('api')->user()->update($request->all());
return \MessageResponse::success(trans('messages.success'));
}
public function getInfo()
{
return \MessageResponse::data([ 'user' => auth('api')->user(), 'roles' => auth('api')->user()->getRoleNames() ]);
}
}
<?php␍
␍
␍
␍
namespace App\Http\Controllers;␍
␍
␍
␍
use Illuminate\Http\Request;␍
␍
use App\Http\Requests\StoreUserRequest;␍
use App\MedicalCenter;␍
use App\User;␍
␍
␍
␍
class UserController extends Controller␍
␍
{␍
␍
public function index()␍
{␍
$Users = User::with(['medical_center', 'roles'])->paginate(10);␍
return \MessageResponse::data($Users);␍
}␍
␍
public function store(StoreUserRequest $request)␍
{␍
$UserData = [␍
'name' => $request->name ,␍
'cell_number' => $request->cell_number ,␍
'medical_center_id' => $request->medical_center_id ,␍
'status' => 'PreRegister',␍
'verified' => 1,␍
'password' => bcrypt($request->password),␍
];␍
$User = User::create($UserData);␍
return \MessageResponse::success(trans('messages.success'));␍
}␍
␍
public function edit(User $User)␍
{␍
return \MessageResponse::data($User);␍
}␍
␍
public function update(StoreUserRequest $request, User $User)␍
{␍
$UserData = [␍
'name' => $request->name ,␍
'cell_number' => $request->cell_number ,␍
'medical_center_id' => $request->medical_center_id ,␍
'status' => 'PreRegister',␍
'verified' => 1,␍
'password' => bcrypt($request->password),␍
];␍
$User->update($UserData);␍
return \MessageResponse::success(trans('messages.success'));␍
}␍
␍
public function destroy(User $User)␍
{␍
if (auth('api')->user()->can('delete', $User)) {␍
return \MessageResponse::error(trans('messages.failed'));␍
}␍
$User->delete();␍
return \MessageResponse::success(trans('messages.success'));␍
}␍
␍
␍
␍
public function getByMedicalCenter(MedicalCenter $MedicalCenter)␍
{␍
$MedicalCenter = $MedicalCenter->load(['users' => function ($query) {␍
return $query->select(['id', 'medical_center_id', 'name', 'cell_number', 'status']);␍
}, 'users.roles']);␍
return \MessageResponse::data($MedicalCenter);␍
}␍
␍
␍
␍
public function changeStatus(User $User)␍
{␍
if ($User->status == 'Active') {␍
$User->status = 'Suspended';␍
} else {␍
$User->status = 'Active';␍
}␍
$User->save();␍
return \MessageResponse::data($User);␍
}␍
␍
␍
␍
public function changeRole(User $User, Request $request)␍
{␍
$User->syncRoles($request->roles);␍
return \MessageResponse::data($User);␍
}␍
␍
public function updateInfo(Request $request)␍
{␍
auth('api')->user()->update($request->all());␍
return \MessageResponse::success(trans('messages.success'));␍
}␍
␍
public function getInfo()␍
{␍
return \MessageResponse::data([ 'user' => auth('api')->user(), 'roles' => auth('api')->user()->getRoleNames() ]);␍
}␍
␍
}␍
+5 -1
View File
@@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model;
class InputValue extends Model
{
public $fillable = ['value','test_result_id','input_id'];
public $fillable = ['value','test_result_id','input_id','option_id'];
public function input()
{
return $this->belongsTo('App\Input');
@@ -15,4 +15,8 @@ class InputValue extends Model
{
return $this->belongsTo('App\TestResult');
}
public function option()
{
return $this->belongsTo('App\Option');
}
}
+5
View File
@@ -11,4 +11,9 @@ class Option extends Model
{
return $this->belongsTo('App\Input');
}
public function input_value()
{
return $this->hasOne('App\InputValue');
}
}
+5
View File
@@ -26,4 +26,9 @@ class TestResultPolicy
// if($User->hasRole('Admin'))␍
return true;␍
}␍
public function verifyTestResult(User $User, TestResult $TestResult)␍
{␍
if($User->hasRole('Supervisor'))␍
return true;␍
}␍
}␍
+1 -1
View File
@@ -11,7 +11,7 @@ class TestTypePolicy
␍
public function delete(User $User, TestType $TestType)␍
{␍
// if($User->hasRole('Admin'))␍
if($User->hasRole('Admin'))␍
return true;␍
}␍
␍
+2
View File
@@ -7,6 +7,8 @@ use Illuminate\Database\Eloquent\Model;
class TestType extends Model
{
public $fillable = ['name','unique_code','user_id'];
protected $softDelete = true;
public function user()
{
return $this->belongsTo('App\User');
Vendored
+51 -12
View File
@@ -9,7 +9,15 @@
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js");
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -90,18 +98,49 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
}
};
},
computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_0__["mapGetters"])('auth', ['authenticating', 'authenticationError', 'authenticationErrorCode'])),
methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_0__["mapActions"])('auth', ['login']), {
handleSubmit: function handleSubmit() {
// Perform a simple validation that cell_number and password have been typed in
if (this.$refs.form.validate()) {
this.login({
cell_number: this.cell_number,
password: this.password
});
this.password = "";
computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__["mapGetters"])('auth', ['authenticating', 'authenticationError', 'authenticationErrorCode'])),
methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__["mapActions"])('auth', ['login']), {
handleSubmit: function () {
var _handleSubmit = _asyncToGenerator(
/*#__PURE__*/
_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {
var response;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!this.$refs.form.validate()) {
_context.next = 5;
break;
}
_context.next = 3;
return this.login({
cell_number: this.cell_number,
password: this.password
});
case 3:
response = _context.sent;
if (!response.status || response.status !== 200) {
this.password = "";
}
case 5:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function handleSubmit() {
return _handleSubmit.apply(this, arguments);
}
}
return handleSubmit;
}()
})
});
+1 -5
View File
@@ -1,7 +1,3 @@
{
<<<<<<< HEAD
"/vue/js/app.js": "/vue/js/app.js?id=834d97fecc500a7e0804"
=======
"/vue/js/app.js": "/vue/js/app.js?id=24a7b3a8d1891f421dee"
>>>>>>> d147ecaacb2020c2dedb3090eb9bcb56de3f6c95
"/vue/js/app.js": "/vue/js/app.js?id=753975375c400e12c93b"
}
+9 -10
View File
@@ -3366,11 +3366,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
};
},
methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_0__["mapActions"])('auth', ['changePassword']), {
<<<<<<< HEAD
submitVerifyCode: function submitVerifyCode() {
=======
submitChangePassword: function submitChangePassword() {
>>>>>>> d147ecaacb2020c2dedb3090eb9bcb56de3f6c95
if (this.form.code != '') {
this.changePassword({
form: this.form
@@ -62931,6 +62927,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _global_api_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../global/api.service */ "./resources/js/vue/services/global/api.service.js");
/* harmony import */ var _storage_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./storage.service */ "./resources/js/vue/services/auth/storage.service.js");
/* harmony import */ var _config_urls__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/config/urls */ "./resources/js/vue/config/urls.js");
/* harmony import */ var _global_toast_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../global/toast.service */ "./resources/js/vue/services/global/toast.service.js");
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
@@ -62963,6 +62960,7 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
var AuthenticationError =
/*#__PURE__*/
function (_Error) {
@@ -63024,14 +63022,15 @@ var UserService = {
// but don't worry about this just yet - I'll come back to it later
_global_api_service__WEBPACK_IMPORTED_MODULE_1__["ApiService"].mount401Interceptor();
return _context.abrupt("return", response.data.access_token);
return _context.abrupt("return", response);
case 12:
_context.prev = 12;
_context.t0 = _context["catch"](1);
_global_toast_service__WEBPACK_IMPORTED_MODULE_4__["default"].error('Username Or Password Is Incorrect', 'Error');
throw new AuthenticationError(_context.t0.response.status, _context.t0.response.data.detail);
case 15:
case 16:
case "end":
return _context.stop();
}
@@ -63703,7 +63702,7 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar
var _login = _asyncToGenerator(
/*#__PURE__*/
_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(_ref, _ref2) {
var commit, dispatch, cell_number, password, token;
var commit, dispatch, cell_number, password, response;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
@@ -63716,14 +63715,14 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar
return _services__WEBPACK_IMPORTED_MODULE_1__["UserService"].login(cell_number, password);
case 6:
token = _context.sent;
commit('loginSuccess', token); // Redirect the user to the page he first tried to visit or to the home view
response = _context.sent;
commit('loginSuccess', response.data.access_token); // Redirect the user to the page he first tried to visit or to the home view
_router__WEBPACK_IMPORTED_MODULE_2__["default"].push(_router__WEBPACK_IMPORTED_MODULE_2__["default"].history.current.query.redirect || '/');
dispatch('info', {}, {
root: true
});
return _context.abrupt("return", true);
return _context.abrupt("return", response);
case 13:
_context.prev = 13;
+3 -1
View File
@@ -1,6 +1,7 @@
import { ApiService } from "../global/api.service";
import { TokenService } from "./storage.service";
import { urls } from "@/config/urls";
import toast from "../global/toast.service";
class AuthenticationError extends Error {
constructor(errorCode, message) {
@@ -42,8 +43,9 @@ const UserService = {
// NOTE: We haven't covered this yet in our ApiService
// but don't worry about this just yet - I'll come back to it later
ApiService.mount401Interceptor();
return response.data.access_token;
return response;
} catch (error) {
toast.error('Username Or Password Is Incorrect', 'Error');
throw new AuthenticationError(
error.response.status,
error.response.data.detail
+3 -3
View File
@@ -6,14 +6,14 @@ export default {
async login({ commit, dispatch }, {cell_number, password}) {
commit('loginRequest');
try {
const token = await UserService.login(cell_number, password);
commit('loginSuccess', token);
const response = await UserService.login(cell_number, password);
commit('loginSuccess', response.data.access_token);
// Redirect the user to the page he first tried to visit or to the home view
router.push(router.history.current.query.redirect || '/');
dispatch('info', {}, {root : true});
return true
return response;
} catch (e) {
if (e instanceof AuthenticationError) {
commit('loginError', {errorCode: e.errorCode, errorMessage: e.message})
+6 -3
View File
@@ -80,11 +80,14 @@ export default {
...mapActions('auth', [
'login'
]),
handleSubmit() {
async handleSubmit() {
// Perform a simple validation that cell_number and password have been typed in
if (this.$refs.form.validate()) {
this.login({cell_number: this.cell_number, password: this.password});
this.password = "";
const response = await this.login({cell_number: this.cell_number, password: this.password});
if (!response.status || response.status !== 200) {
this.password = "";
}
}
}
}