Laravel variable cache - php

I need to cache the results from Steam API parsing. And so the cached result lasts 15 minutes. I have a code:
public function load()
{
if (Auth::guest()) return response()->json(['success' => false, 'msg' => 'You need login!']);
$inventory = $this->getInventory(file_get_contents('http://steamcommunity.com/inventory/' . $this->user->steamid64 . '/570/2?l=russian&count=5000', true));
if (!$inventory) {
return response()->json(['success' => false, 'msg' => 'Error']);
}
$items = [];
$items_with_prices = json_decode(\Storage::get('prices.txt'));
$items_with_prices_by_key = [];
foreach ($items_with_prices->items as $item_price_key => $item_price_data) {
$items_with_prices_by_key[$item_price_key] = $item_price_data->price;
}
foreach ($inventory['rgInventory'] as $info) {
$item = $inventory['rgDescriptions'][$info['classid'] . '_' . $info['instanceid']];
if ($item['tradable'] == 0) continue;
$price = 0;//InventoryController::getItemPrice($item['market_hash_name']);
if (array_key_exists($item['market_hash_name'], $items_with_prices_by_key)) {
$price = $items_with_prices_by_key[$item['market_hash_name']];
}
if (!$price) continue;
if ($price < 1) $price = 0.64;
$type = $this->getType($item['type']);
$items[] = [
'id' => $info['id'],
'classid' => $item['icon_url'],
'price' => round($price, 2),
'type' => $type
];
}
usort($items, function($a, $b){
return ($b['price'] - $a['price']);
});
return response()->json(['success' => true, 'items' => $items]);
}
This code only works when a site user clicks on the "show my items" button and a request is sent to the list of user items in Steam Dota 2. Now if click constantly to get a list of items, Steam can block the server’s IP address for 24 hours. As I understand it, I need to throw the result of a $inventory variable into the cache. I create database table cache with fields id, user_id, items, date.
How can I now cache the result from a $inventory variable of 15 minutes?

Here is basic caching in laravel
$rememberTimeInSeconds = 3600;
$cachedResult = Cache::remember('name_of_your_cache', $rememberTimeInSeconds, function(){
// It can be any logic I just showing a simple query.
$users = User::all();
return $users;
});

Related

Larvel 9 pagination with limit

Working inside a Laravel 9 project and need to limit my returned results and then paginate, I have over 40,000 total rows and would like to show no more than 500 entries as a paginated list.
When I add limit to my query it's still returning all my rows and isn't limiting, what am I missing?
$query = Application::query();
$query = $query->with(['payday', 'response', 'apiLinks']);
if ($request->input('filters.from')) {
$query->where('created_at', '>=', Carbon::parse($request->input('filters.from')));
}
if ($request->input('filters.to')) {
$query->where('created_at', '<=', Carbon::parse($request->input('filters.to')));
}
if ($request->input('search')) {
foreach ($request->input('search') as $field => $value) {
$query->where($this->mapSearchField($field), $value);
}
}
$query = $query->limit(500);
$query = $query->paginate(25);
return response()->json([
'applications' => $query ?? []
], 200);
There is no built in solution to limit the maximum number of pages with a LengthAwarePaginator
You will need to instantiate it yourself.
$query = Application::query();
$query = $query->with(['payday', 'response', 'apiLinks']);
if ($request->input('filters.from')) {
$query->where('created_at', '>=', Carbon::parse($request->input('filters.from')));
}
if ($request->input('filters.to')) {
$query->where('created_at', '<=', Carbon::parse($request->input('filters.to')));
}
if ($request->input('search')) {
foreach ($request->input('search') as $field => $value) {
$query->where($this->mapSearchField($field), $value);
}
}
//current page
$page = \Illuminate\Pagination\Paginator::resolveCurrentPage('page');
//total number of element (we force max to 500)
$total = min($query->count(), 500);
//the items for current page (25 is items per page)
$items = $query->forPage($page, 25)->get();
//we instantiate the paginator manually (25 is items per page)
$results = new \Illuminate\Pagination\LengthAwarePaginator($items, $total, 25, $page);
return response()->json([
'applications' => $results
], 200);
Yeah, no out of the box answer for this one.

How to reduce long processing time in laravel

I have built an Employee Management System using Laravel 5.7. Calculating salary works fine for 100-150 employees (but taking a long time to process the data) & for more than 150 employees it is showing a time out error.
I want to add the feature to calculate the salary of all employees in one go & also reduce the processing time for the same. Would it be appropriate to use chunk() for that? If yes, how do I implement that?
Note:
The web application is for a BPO so there are so many types of logic to apply while calculating a salary. The code is too lengthy to share here, but if anyone wants to see the code, I can share it.
Front-end form screenshot
Page after calculation
<?php
public function calculate_salary(Request $request){
$this->validate($request,[
'employee_id' => 'required',
'attendance_types' => 'required',
'month' => 'required_without:choose_date',
'choose_date' => 'required_without:month'
]);
$download_salary = false;
$submit_salary = false;
if ($request->has('submit_data'))
{
$submit_salary = true;
}
else
{
$submit_salary = false;
}
if ($request->has('download_data'))
{
$download_salary = true;
}
else
{
$download_salary = false;
}
$dept = $request->input('salary_department');
$role = $request->input('salary_role');
$process = $request->input('salary_process');
$salary_dept = Department::where('id', $dept)->pluck('dept_name')->first();
$salary_role = Role::where('id', $role)->pluck('role_name')->first();
$salary_process = Process::where('id', $process)->pluck('process_name')->first();
if ($submit_salary == true || $download_salary == true)
{
$months = $request->input('month');
$month = $months[0];
$employee_ids = $request->input('employee_id');
$attendance_types = $request->input('attendance_types');
$attendance_type_temp_insert = $attendance_types[0];
$attendance_type = explode(',', $attendance_type_temp_insert);
if (!empty($request->input('choose_date')))
{
$dates = $request->input('choose_date');
$date = $dates[0];
}
else
{
$date = "";
}
}
else
{
$month = $request->input('month');
$employee_ids = $request->input('employee_id');
$attendance_type = $request->input('attendance_types');
$attendance_type_temp_insert = implode(',', $request->input('attendance_types'));
$date = $request->input('choose_date');
}
// Get start & end dates
$data = $this->get_salary_dates($month, $date);
$start_date = $data['start_date'];
$end_date = $data['end_date'];
$salary_start_date = $start_date->toDateString();
$salary_end_date = $end_date->toDateString();
$working_days_by_month = $this->get_working_days_of_given_month($start_date, $end_date);
$working_days = $working_days_by_month['working_days'];
$no_days = $working_days_by_month['no_days'];
Schema::create('temp_salary', function (Blueprint $table) {
$table->increments('id');
$table->integer('employee_id');
$table->string('employee_name');
$table->integer('working_days');
$table->float('emp_working_days');
$table->float('basic');
$table->float('hra');
$table->float('conveyance');
$table->float('spcl_inc');
$table->float('gross_salary');
$table->float('pf');
$table->float('esi');
$table->integer('headphone');
$table->integer('id_card');
$table->float('deductions');
$table->integer('pl_balance');
$table->integer('combo_balance');
$table->float('net_payable');
$table->string('month')->nullable();
$table->string('attendance_types');
$table->string('choose_date')->nullable();
$table->string('department')->nullable();
$table->string('role')->nullable();
$table->string('process')->nullable();
$table->timestamps();
$table->temporary();
});
$csv[] = ['Employee ID', 'Name','Department','Role','Process','Bank','Bank Account Number', 'Basic', 'HRA', 'Conveyance', 'Spcl Inc', 'Gross Salary','PF', 'ESI', 'Deductions', 'Total Working Days', 'Net Payable','Salary Month', 'Salary Start Date','Salary End Date'];
$csv1[] = ['Employee ID', 'Name','Department','Role','Process','Bank','Bank Account Number', 'Basic', 'HRA', 'Conveyance', 'Spcl Inc', 'Gross Salary','PF', 'ESI', 'Deductions', 'P','H','A','WO','WOP','WOH','UAL','Paid Leaves','PL','Combo','ual_deduct','Total Working Days', 'Net Payable','Salary Month', 'Salary Start Date','Salary End Date'];
foreach($employee_ids as $id) {
if($submit_salary == true){
DB::table('attendances')->where('employee_id', '=', $id)->whereBetween('attendance_date', [$start_date, $end_date])->update(['salary_status' => 1]);
}
$employee = Employee::find($id);
$name = $employee->name;
$emp_role = $employee->empRole->role_name;
$emp_department = $employee->empDepartment->dept_name;
$emp_process = $employee->empProcess->process_name;
$bank_account_number = $employee->bank_account_number;
$bank_name = $employee->bank_name;
$salary = Salary::where('employee_id', $id)->first();
$pl_balance = $salary->pl_balance;
$combo_balance = $salary->combo_balance;
$attendances = DB::table('attendances')->where('employee_id', '=', $id)->get();
if ($attendances->count() > 0)
{
foreach($attendances as $attendance)
{
$att_id = $attendance->id;
$att_date = Carbon::parse($attendance->attendance_date);
$dialer_in = strtotime($attendance->dialer_in_time);
$dialer_out = strtotime($attendance->dialer_out_time);
$bio_in = strtotime($attendance->biometric_in_time);
$bio_out = strtotime($attendance->biometric_out_time);
$bio_diff = $bio_out - $bio_in;
$crm_in = strtotime($attendance->crm_in_time);
$crm_out = strtotime($attendance->crm_out_time);
$week_off = $attendance->week_off;
$combo = $attendance->combo;
$holiday = $attendance->holiday;
$ual = $attendance->ual;
$dialer_duration = $attendance->dialer_difference;
$bio_duration = $attendance->biometric_difference;
$crm_duration = $attendance->crm_difference;
$chkatt = $this->get_attendance($attendance_type, $attendance->dialer_in_time, $attendance->dialer_out_time,$attendance->crm_in_time,$attendance->crm_out_time, $dialer_duration, $bio_duration, $crm_duration);
$attendance_status = $this->attendance_status($id, $chkatt, $holiday, $week_off, $ual);
DB::table('attendances')->where('id', $att_id)->update(['attendance_status' => $attendance_status]);
//echo $attendance_status;
}
}
$totalWorkingDays = $this->get_work_days($id,$start_date,$end_date,$combo_balance,$pl_balance, $submit_salary);
$totalWorkingDays = number_format((float)$totalWorkingDays, 2, '.', '');
$salary_data = $this->get_calculated_salary_data($no_days, $totalWorkingDays, $id, $submit_salary);
$basic = $salary_data['basic'];
$hra = $salary_data['hra'];
$conveyance = $salary_data['conveyance'];
$spcl_inc = $salary_data['spcl_inc'];
$gross_salary = $salary_data['gross_salary'];
$pf = $salary_data['pf'];
$esi = $salary_data['esi'];
$hp_charges = $salary_data['hp_charges'];
$idcard_charges = $salary_data['idcard_charges'];
$deductions = $salary_data['deductions'];
$net_payable = $salary_data['net_payable'];
DB::table('temp_salary')->insert(['employee_id' => $id, 'employee_name' => $name, 'working_days' => $working_days, 'emp_working_days' => $totalWorkingDays, 'basic' => $basic, 'hra' => $hra, 'conveyance' => $conveyance, 'spcl_inc' => $spcl_inc, 'gross_salary' => $gross_salary, 'pf' => $pf, 'esi' => $esi, 'headphone' => $hp_charges, 'id_card' => $idcard_charges, 'deductions' => $deductions, 'pl_balance' => $pl_balance, 'combo_balance' => $combo_balance, 'net_payable' => $net_payable, 'month' => $month, 'attendance_types' => $attendance_type_temp_insert, 'choose_date' => $date, 'department' => $salary_dept, 'role' => $salary_role, 'process' => $salary_process]);
$csv[] = [$id, $name, $emp_department, $emp_role, $emp_process, $bank_name, $bank_account_number, $basic, $hra, $conveyance, $spcl_inc, $gross_salary, $pf, $esi, $deductions, $totalWorkingDays, $net_payable, $month, $start_date, $end_date];
$get_days_status = $this->get_days_status($id, $start_date, $end_date);
$pCount = $get_days_status['pCount'];
$HalfDaysCount = $get_days_status['hCount'];
$lateLeaveCount = $get_days_status['late_leave'];
$wopCount = $get_days_status['wopCount'];
$leaves_count = $get_days_status['leaves_count'];
$UalCount = $get_days_status['UalCount'];
$woCount = $get_days_status['woCount'];
$wohCount = $get_days_status['wohCount'];
$ual_deduct = ($UalCount * 1.5) - $UalCount;
$get_paid_leaves_row = $get_days_status['pl_leaves'];
$csv1[] = [$id, $name, $emp_department, $emp_role, $emp_process, $bank_name, $bank_account_number, $basic, $hra, $conveyance, $spcl_inc, $gross_salary, $pf, $esi, $deductions, $pCount,$HalfDaysCount,$leaves_count,$woCount,$wopCount,$wohCount,$UalCount,$get_paid_leaves_row,$pl_balance, $combo_balance,$ual_deduct, $totalWorkingDays, $net_payable, $month, $start_date, $end_date];
}
$datas = DB::table('temp_salary')->get();
if($submit_salary == true){
return Excel::create('Employee_salary_report', function($excel) use ($csv) {
$excel->sheet('Employee_salary_report', function($sheet) use ($csv) {
$sheet->fromArray($csv, null, 'A1', false, false)
->getStyle('A1')
->getAlignment()
->setWrapText(true);
});
})->download('csv');
}
if($download_salary == true){
return Excel::create('salary_report', function($excel) use ($csv1) {
$excel->sheet('salary_report', function($sheet) use ($csv1) {
$sheet->fromArray($csv1, null, 'A1', false, false)
->getStyle('A1')
->getAlignment()
->setWrapText(true);
});
})->download('csv');
}
Schema::drop('temp_salary');
$departments = Department::all();
$processes = Process::all();
$roles = Role::all();
return view('sys_mg.salaries.get-salary')->with(['datas'=>$datas,'departments' => $departments, 'processes' => $processes, 'roles' => $roles, 'salary_dept' => $salary_dept, 'salary_role' => $salary_role, 'salary_process'=>$salary_process, 'salary_month'=>$month,'salary_startDate' => $salary_start_date, 'salary_endDate' => $salary_end_date, 'attendance_check_type' => $attendance_type]);
}
This is a huge process, doing many things at once, some of them deeply nested in each other.
The function is very, very long, which means it probably needs to be abstracted into various methods and classes (better OOP).
You may also be running into the N+1 problem with some of your Laravel queries, although it's hard to say at a glance.
I would recommend using Laravel's Queues, and adding each employee's payroll calculation to the queue: https://laravel.com/docs/5.8/queues
You can then use a worker process to perform each one individually.
All the database updates and transactions means PHP is constantly going to-and-fro from your database. Try to perform as many operations in pure code as possible, and then once completed, write to the DB. (Where possible, this is not a blanket rule).
Initially I would say, consider creating a SalaryCalculator class with methods such as getAttendances() and calculateSalaryFromEmployeeAttendances().
Separately, create a CSV exporter class. Process all your payroll calculations first, store the results in the DB, and then convert to CSV on demand later.
You'll refactor this later once you are able to look at all the different parts, someone else may be able to suggest a better way to break it down, but in some ways there are no right answers... just start with some OOP and abstraction of methods, and it will get better.
Use microtime(true) to get and calculate the time differences between when you start and finish operations, to start to track how long each function runs for... and go looking for the big optimisations first. What is the slowest part? Why?
You could probably ask a dozen Stack Overflow questions to optimise each of those methods, and that's Ok!

Insert Batch php mysql with check duplicate and sum values of field duplicate

i have 1 million data using foreach.
ex table:
table
the data
data
i want to inserting that's data using batch/multipleinsert, but i have problem when i got duplicate data. if data duplicate i want the field amount will sum and update amount field with sum amount duplicated data.
this is my code before
<?php
foreach ($data_transaksi as $key)
{
if($key['STATUS_COA'] != $key['CHART_OF_ACCOUNT_STATUS'])
{
if($key['ACCOUNT_CATEGORY_CODE'] == '9')
{
$amount = round($key['AMOUNT'],2);
}
else
{
$amount = round($key['AMOUNT'],2) *-1;
}
}
else
{
if($key['ACCOUNT_CATEGORY_CODE'] == '9')
{
$amount = round($key['AMOUNT'],2)*-1;
}
else
{
$amount = round($key['AMOUNT'],2);
}
}
$dt_exsis = $this->ledger_model->cek_data_coa_exsis($key['COA_CODE'],$modul,$ID_USER);
if(empty($dt_exsis['id']))
{
//TRYINSERTINGBATCH
// $datainsert[] = '('.$key['COA_CODE'].','.$amount.','.$ID_USER.',"'.$modul.'")';
// $test = $key['COA_CODE'];
$datainput = array(
'COA_CODE' => $key['COA_CODE'],
'AMOUNT' => $amount,
'MODUL' => $modul,
'USER_ID' => $ID_USER
);
$this->ledger_model->save_rows_to_table($datainput,'finance_lapkue_temp');
}
else
{
$amount_fix = $amount + $dt_exsis['AMOUNT'];
$data=array(
'AMOUNT' => $amount_fix
);
$this->ledger_model->edit_rows_to_table_where($data,'finance_lapkue_temp','id',$dt_exsis['id']);
// $q = "UPDATE finance_lapkue_temp set AMOUNT = '$amount_fix' where id = '".$dt_exsis['id']."'";
// $this->db->query($q);
}
// $data_amount[$key['COA_CODE']] += $amount;
}
?>
if i using this code, the proccess so slow
Good option will to pass only data to DB that you want to insert. All the data cleaning task can be done in controller.
// Create a data array and add all info
$data = [];
//if user does not exist add it in array
if (empty($dt_exist($id))) {
$data[$ID_USER] = array(
'COA_CODE' => $key['COA_CODE'],
'AMOUNT' => $amount,
'MODUL' => $modul,
'USER_ID' => $ID_USER
);
}
else {
//if user exist in $data just modify the amount
if (!empty($data[$ID_USER])) {
$data[$ID_USER]['AMOUNT'] += $dt_exsis['AMOUNT'];
}
else {
// if user does not exist in data create add all info
$data[$dt_exsis['ID_USER']] = array(
'COA_CODE' => $dt_exsis['COA_CODE'],
'AMOUNT' => $dt_exsis['amount'],
'MODUL' => $dt_exsis['modul'],
'USER_ID' => $dt_exsis['ID_USER']
);
}
}
This will save multiple calls to DB and at the end you can pass $data and do multiple insert.

about laravel form calculation

I had encountered the calculation in Laravel or maybe PHP stuff, I would like to ask for solution or maybe some others approach to get the things done.
These are the codes in the Model
public function getRedeemCount($member_id){
$count = DB::table('stamps')->where('user_id', '=', $member_id)->select('stamp_counter')->first();
return $count;
}
public function getFreeOfferCount($member_id){
$free_offer_count = DB::table('stamps')->where('user_id', '=', $member_id)->select('free_offer_counter')->first();
return $free_offer_count;
}
These are the codes in the Controller
public function redeemFreeOffer(Request $request)
{
$free_offer_counter = $request->input('minus_free_offer_counter');
$member_id = $request->input('sub_id');
$total_stamp_count = $this->userModel->getRedeemCount($member_id);
$free_offer_count = $this->userModel->getFreeOfferCount($member_id);
if(!$free_offer_count){
$insert_arr = array(
'user_id' => $member_id,
'free_offer_counter' => $free_offer_counter,
'created_at'=>date("Y-m-d H:i:s")
);
$stamps = DB::table('stamps')->insert($insert_arr);
if($stamps){
$arr = array('status' => 1,'message'=>'success','value'=>$free_offer_counter);
}
}
else {
$total_stamp_count->stamp_counter;
$total_free_offer_count = floor($total_stamp_count->stamp_counter/10);
$current_offer_count = $free_offer_count->free_offer_counter - $free_offer_counter;
$update_arr = array(
'free_offer_counter' => $current_offer_count,
'updated_at' => date("Y-m-d H:i:s")
);
$stamps = DB::table('stamps')->where('user_id', $member_id)->update($update_arr);
if ($stamps) {
$arr = array('status' => 1, 'message' => 'success', 'value' => $current_offer_count);
}
}
echo json_encode($arr);
}
Since I am using jQuery AJAX, so there's too much code, but I think it should be enough information for now. If it is insufficient, I will provide more in future.
The problem is how do I inject $total_free_offer_count into $current_offer_count? I do not have any columns that stored $total_free_offer_count.
$total_stamp_count->stamp_counter;
$total_free_offer_count = floor($total_stamp_count->stamp_counter/10);
$current_offer_count = $free_offer_count->free_offer_counter - $free_offer_counter;

No 'Access-Control-Allow-Origin' header even thou other requests from the same domain are working

I have a strange error, with No 'Access-Control-Allow-Origin' header. I understand that I have to give some permission the origin domain(client) to be able to access the server and that works fine with some other requests I make. But when it comes to one other function to call, it says No 'Access-Control-Allow-Origin' header only.
I have my client hosted in heroku and server in godaddy...
This is the function when that error shows:
public function store(Request $request)
{
$ffSpending = new FriendsFamilySpending();
$ffSpending->user_id = Auth::user()->id;
$ffSpending->team_id = Auth::user()->student->team_id;
$ffSpending->management_units = $request->input('management_units');
$ffSpending->sales_units = $request->input('sales_units');
$ffSpending->product_units = $request->input('product_units');
$ffSpending->ip_units = $request->input('ip_units');
$ffSpendingRules = array(
'management_units' => 'required',
'sales_units' => 'required',
'product_units' => 'required',
'ip_units' => 'required'
);
$ffSpendingValidator = \Validator::make($ffSpending->getAttributes(), $ffSpendingRules);
if ($ffSpendingValidator->passes()) {
$team = Team::find($ffSpending->team_id);
$currentBalance = $this->teamService->checkBalance($team);
//Baseline costs
$BASELINE = FriendsFamilySpending::BASELINE;
//Get Prices for each unit
$IP_ONE_TIME_COST = OperationalExpensePrice::getPrice(OperationalExpense::IP, $request->input('ip_units'), OperationalExpenseSerie::FF);//one-time IP costs
$MANAGEMENT = OperationalExpensePrice::getPrice(OperationalExpense::MANAGEMENT, $request->input('management_units'), OperationalExpenseSerie::FF);
$SALES = OperationalExpensePrice::getPrice(OperationalExpense::SALES, $request->input('sales_units'), OperationalExpenseSerie::FF);
$PRODUCT = OperationalExpensePrice::getPrice(OperationalExpense::PRODUCT, $request->input('product_units'), OperationalExpenseSerie::FF);
//Monthly Costs
$quartlyCosts = $BASELINE + $MANAGEMENT + $SALES + $PRODUCT;
$newBalance = $currentBalance;
$workingMoney = $newBalance - $IP_ONE_TIME_COST;
$minimumMonth = 12; // the minimum amount of time they must be able to afford (Staging Day = 12 months)
//Calculate how many months they (team) can survive
$survivingMonths = 0;
while ($workingMoney >= $quartlyCosts) {
$workingMoney = $workingMoney - $quartlyCosts; //deduct monthly costs from the current working money
$survivingMonths = $survivingMonths + 3; // quartly spending
if ($survivingMonths > 24) { // team survives the whole staging and deal day
break;
}
}
// month to minute - Conversation ratio
$monthToMinute = 6.25; // (75min / 12month) = 6.25min a month
$totalMinutes = $survivingMonths * $monthToMinute;
$minMinutes = 75; //the minimum amount of time they must be able to afford
//Check if team makes it till the deal day
if ($survivingMonths < $minimumMonth) {
return response()->json(['message' => 'With your current spending plan, you will not make it to deal day. Please try again with less spending plan. Currently you run out of money after ' . $totalMinutes . ' minutes. You have to survive at least 75 minutes."', 'success' => false, 'status' => 500, 'data' => null]);
}
$ffSpendingRes = $this->ffSpendingService->save($ffSpending);
if ($ffSpendingRes) {
$this->ffSpendingService->score(Auth::user()->student->team->class_id); // update ff spending scoring
$this->ffSpendingService->updateTotalScore(Auth::user()->student->team->class_id);
//Update balance
$team = Team::find($ffSpending->team_id);
$this->teamService->updateBalance($team, $workingMoney);
if ($survivingMonths >= $minimumMonth && $survivingMonths < 24) {
$survivingMonthsAfterStagingDay = $survivingMonths - $minimumMonth;
$survivingMonthsAfterStagingDayToMinute = $survivingMonthsAfterStagingDay * $monthToMinute;
$outOfMoney = new OutOfMoney();
$outOfMoney->team_id = Auth::user()->student->team_id;
$outOfMoney->stage = OutOfMoney::$FF_SPENDING;
$outOfMoney->is_running_out_of_money_on_deal_day = 1;
$outOfMoney->month = $survivingMonthsAfterStagingDay;
$outOfMoney->minutes = $survivingMonthsAfterStagingDayToMinute;
$outOfMoney->monthly_cost = $quartlyCosts;
$outOfMoney->save();
} else {
$outOfMoney = new OutOfMoney();
$outOfMoney->team_id = Auth::user()->student->team_id;
$outOfMoney->stage = OutOfMoney::$FF_SPENDING;
$outOfMoney->is_running_out_of_money_on_deal_day = 0;
$outOfMoney->monthly_cost = $quartlyCosts;
$outOfMoney->save();
}
return response()->json(['message' => 'Success', 'success' => true, 'status' => 200, 'data' => $ffSpending]);
} else {
return response()->json(['message' => 'Error', 'success' => false, 'status' => 500, 'data' => null]);
}
} else {
return response()->json(['message' => 'Validation Failed', 'success' => false, 'status' => 400, 'data' => array('class' => $ffSpendingRules)]);
}
Note: if I change the function and make it simple, like return 'test', it does not show anymore that origin access error.
I wonder if there is any problem with function, why does not it show the actuall error, but it show that cors error instead.
Any suggestion?
What's happening is an ORIGINS request is coming in and getting declined because it's not in your allowed methods.
'allowedMethods' => ['GET', 'POST', 'PUT', 'DELETE', 'ORIGINS']
You'll also want to set your allowedOrigins to something.
I always use MDN for reference.

Categories