<?php
 namespace VnChocola\Module\Api\Users;
 use TCMS\APIController;
 use Model;
 use Model\UserModel;
 class IndexController extends APIController {
 public function getList() {
 $model = Model::load('UserModel');
 $limit = \Request::get('limit', 0);
 $auth = load_auth();
 if(!$auth->hasRole(\RoleGlobal::$role->viewAllBranch)){
 $user = $auth->getUser();
 $model->where('branchID',$user->branchID);
 }
 if($limit > 0){
 $model->limit($limit);
 }
 $data = $model->toList();
 return $this->ok($data);
 }
 public function find($id) {
 $model = Model::load('UserModel');
 $data = $model->find($id);
 if(!$data) return $this->notFound();
 return $this->ok($data);
 }
 private function setBranchAndStoreIdForUser($userModel) {
 $staffModel = Model::load('StaffsModel');
 $staff = $staffModel->select('id', 'branchID')->find($userModel->staffId);
 if(!$staff) return false;
 $branchModel = Model::load('BranchsModel');
 $branch = $branchModel->select('id', 'storeID')->find($staff->branchID);
 if(!$branch) return false;
 $userModel->storeID = $branch->storeID;
 $userModel->branchID = $staff->branchID;
 return true;
 }
 public function create(UserModel $model) {
 if($model->isValid()) {
 $auth = load_auth();
 if(!$auth) {
 return $this->badRequest('Không tìm thấy auth extension');
 }
 $model->password = $auth->encodePass($model->password);
 if(!$this->setBranchAndStoreIdForUser($model)) {
 $this->badRequest('Không lấy được chi nhánh cho người dùng');
 }
 $saveRes = $model->save();
 if($saveRes) return $this->ok(['success' => true, 'message' => $saveRes]);
 return $this->badRequest('Lưu dữ liệu thất bại');
 }
 return $this->error($model->getErrors());
 }
 public function update(UserModel $model) {
 if($model->isValid()) {
 if($model->password) {
 $auth = load_auth();
 if(!$auth) {
 return $this->badRequest('Không tìm thấy auth extension');
 }
 $model->password = $auth->encodePass($model->password);
 }
 if(!$this->setBranchAndStoreIdForUser($model)) {
 $this->badRequest('Không lấy được chi nhánh cho người dùng');
 }
 if($model->save()) return $this->ok(['success' => true]);
 return $this->badRequest('Lưu dữ liệu thất bại');
 }
 return $this->error($model->getErrors());
 }
 public function delete() {
 $id = \Request::get('data');
 $model = Model::load('UserModel');
 if($model->delete($id)) return $this->ok(['success' => true]);
 return $this->error('Xóa thất bại');
 }
 public function changePassword() {
 $res = array( "type" => "false", "data" => "" );
 $password = \Request::get('password');
 $password_new = \Request::get('password_new');
 $password_retype = \Request::get('password_retype');
 if (!empty($password) && !empty($password_new) && !empty($password_retype)) {
 $auth = load_auth();
 $user = $auth->getUser();
 if (!empty($auth->login($user->username, $password))) {
 if ($password_new != $password_retype) {
 $res['type'] = "error";
 $res['data'] = "không chùng khớp mật khẩu xác nhận";
 }
else{
 $encodePass = $auth->encodePass($password_retype);
 $model = Model::load('UserModel');
 $datauser = $model->find($user->id);
 $datauser->password = $encodePass;
 if($model->update($datauser)){
 $res['type'] = "success";
 $res['data'] = "Thay đổi mật khậu thành công";
 }
else{
 $res['type'] = "error";
 $res['data'] = "Thay đổi mật khậu không thành công";
 }
 }
 }
else{
 $res['type'] = "error";
 $res['data'] = "Mật khẩu cũ không đúng";
 }
 }
 return $this->ok(json_encode($res));
 }
 }
