initial commit

This commit is contained in:
2026-06-25 13:03:45 +06:00
commit 4589f4a8d0
3229 changed files with 941958 additions and 0 deletions

View File

@@ -0,0 +1,254 @@
<?php
class GroupSettingController extends AppController
{
var $uses = array(
'GroupSetting'
);
public $components = array('RequestHandler', 'Permission');
private $platform = "3" ; // 1 = Android, 2 = iPhone, 3 = Web
private $app_version = "2";
private $version = 0;
private $application_version = "3.2";
private $validation_status = "-1";
public function beforeRender()
{
parent::beforeRender();
}
public function addPermission()
{
if ($this->request->is('ajax')) {
$this->autoRender = false;
$response = [
'status' => false,
'message' => 'Failed'
];
$request = $this->basicRequest();
$user_id = $this->Session->read('userData.id');
$profile_id = $this->Session->read('userData.profile_id');
$request["expense_id"] = $this->data["expense_id"];
$request["unique_url"] = $this->data["unique_url"];
$request["user_id"] = $user_id;
$request["profile_id"] = $profile_id;
$request["addPermissions"] = [];
$request["modifyPermissions"] = [];
$request["deletePermissions"] = [];
$operation = [
"email" => $this->data["email"],
"name" => $this->data["name"],
"role" => $this->data["permission"]
];
if ($this->data["operation_type"] == $this->operation_type['ADD']) {
$request["addPermissions"][] = $operation;
} else if ($this->data["operation_type"] == $this->operation_type['EDIT']) {
$request["modifyPermissions"][] = $operation;
} else if ($this->data["operation_type"] == $this->operation_type['DELETE']) {
$request["deletePermissions"][] = $operation;
}
$apiResponse = $this->callAPI(HTTP_SITE_URL . "/Expense/permissions.json", 'POST', json_encode($request));
$apiResponseArr = json_decode($apiResponse, true);
if (isset($apiResponseArr['response']['status']) && ($apiResponseArr['response']['status'] == '+000')) {
$response['status'] = true;
$response['message'] = 'Saved successfully.';
$response['permissions'] = $apiResponseArr['response']['data']['settings']['permissions'];
}else{
$response['message'] = isset($apiResponseArr['response']['status_desc'])
? $apiResponseArr['response']['status_desc']
: $response['message'];
}
header('Content-Type: application/json');
echo json_encode($response);
exit;
}
else {
throw new BadRequestException('Invalid request method');
}
}
public function addRestriction()
{
if ($this->request->is('ajax')) {
$this->autoRender = false;
$profile_id = $this->Session->read('userData.profile_id');
$user_id = $this->Session->read('userData.id');
$response = [
'status' => false,
'message' => 'Failed'
];
$request = $this->basicRequest();
$request["expense_id"] = $this->data["expense_id"];
$request["unique_url"] = $this->data["unique_url"];
$request["user_id"] = $user_id;
$request["profile_id"] = $profile_id;
$request["is_restricted_mode"] = $this->data["mode"];
$apiResponse = $this->callAPI(HTTP_SITE_URL . "/Expense/restriction.json", 'POST', json_encode($request));
$apiResponseArr = json_decode($apiResponse, true);
if (isset($apiResponseArr['response']['status'])) {
$response['restricted_mode'] = false;
$response['status'] = true;
if ($apiResponseArr['response']['status'] == '+000') {
$response['message'] = "Restricted Mode saved successfully.";
if($apiResponseArr['response']['GroupSetting']['is_restricted_mode'] == 1) {
$response['restricted_mode'] = true;
}
}
if($apiResponseArr['response']['status'] == '-1') {
$response['message'] = $apiResponseArr['response']['status_desc'];
}
}
header('Content-Type: application/json');
echo json_encode($response);
exit;
} else {
throw new BadRequestException('Invalid request method');
}
}
public function fixed_price()
{
$object = $this->request->input('json_decode');
if (!empty($object)) {
$data = $this->objectToArray($object);
}
if (!isset($data['skip_process_validation'])) {
list($data, $status, $status_desc, $error) = $this->processValidation();
}
if (!empty($data) && empty($status)) {
list($status, $status_desc, $error) = $this->requestValidate($data);
}
if (empty($status)) {
$object = json_decode(json_encode($object), true);
list($status, $status_desc, $expObj) = $this->validateUniqueUrl($object['unique_url']);
}
$input = array();
if (empty($status)) {
$status_message = [
'code' => "061",
'message' => 'Error: Expense not found.'
];
$status = $status_message['code'];
$status_desc = $status_message['message'];
$expense = $this->Expense->find('first', array(
'conditions' => array('Expense.id' => $object['expense_id'], 'Expense.unique_url' => $object['unique_url'])
));
$this->loadModel('GroupSettings');
//check expense_id and unique_url is exist or not
$groupSettings = $this->GroupSetting->find('first', array(
'conditions' => array('GroupSetting.expense_id' => $object['expense_id'], 'GroupSetting.unique_url' => $object['unique_url'])
));
if (!empty($expense['Expense']) && !empty($groupSettings['GroupSetting'])) {
$is_add_possible = false;
if(!empty($expense['Expense']['user_id']) || $expense['Expense']['create_user'] != 'system') {
if($expense['Expense']['user_id'] == $object['user_id'] && $groupSettings['GroupSetting']['is_restricted_mode'] == 1){
$is_add_possible = true; // only owner can add the fixed price
}
if($groupSettings['GroupSetting']['is_restricted_mode'] == 0){
$is_add_possible = true; // anyone can add the fixed price
}
}
if($is_add_possible){
$data['id'] = $groupSettings['GroupSetting']['id'];
$data['version'] = $groupSettings['GroupSetting']['version'] + 1;
$data['is_fixed_price'] = (isset($object['is_fixed_price']) && $object['is_fixed_price'] >0) ? true : false;
$data['expense_id'] = $groupSettings['GroupSetting']['expense_id'];
$data['unique_url'] = $groupSettings['GroupSetting']['unique_url'];
if (!empty($expense['Expense'])) {
$expense['Expense']['version'] = $expense['Expense']['version'] + 1;
}
$this->GroupSetting->save($data);
$this->Expense->save($expense);
$groupSettings['GroupSetting']['is_fixed_price'] = $object['is_fixed_price'];
$status_desc = "SUCCESS";
$status = "+000";
$input['GroupSetting'] = $groupSettings['GroupSetting'];
}
}
}
if ($status != "+000") {
$this->processResponse($input, $data, $status, $status_desc);
} else {
$this->updateFirebase($object['unique_url']);
$input["status"] = $status;
$input["status_desc"] = $status_desc;
$input["api_version"] = 3;
$this->set(array(
'response' => $input,
'_serialize' => array('response')
));
}
}
public function requestValidate($object)
{
//check validity
$error = "";
$error_desc = "";
$expObj = array();
if (empty($object['expense_id'])) {
$error = $this->validation_status;
$error_desc = "expense_id must be provided!";
$expObj['expense_id'] = $error_desc;
}
if (empty($object['unique_url'])) {
$error = $this->validation_status;
$error_desc = "unique_url must be provided!";
$expObj['unique_url'] = $error_desc;
}
if (!empty($object['user_id']) && !is_numeric($object['user_id'])) {
$error = $this->validation_status;
$error_desc = 'user_id must be provided as numeric.';
}
if (!isset($object['is_fixed_price'])) {
$error = $this->validation_status;
$error_desc = "is_fixed_price must be provided!";
$expObj['is_fixed_price'] = $error_desc;
}
return array($error, $error_desc, $expObj);
}
private function basicRequest(){
$deviceData = $this->deviceData();
$request = [
"platform" => $this->platform, // 1 = Android, 2 = iPhone, 3 = Web
"app_version" => $this->app_version, // optional
"version" => $this->version, // optional
"application_version" => $this->application_version, // optional
"device_id" => $deviceData['device_id'],
"random_number" => $deviceData['random_number'],
"access_token" => $deviceData['access_token'],
];
return $request;
}
}