How to pass array inside an api in Laravel? - arrays

When I pass array() through query it got false but when I pass without array then it show success. How can I pass array according to my code?
public function add_employee_post(Request $request){
try{
$http = new \GuzzleHttp\Client();
$employee_no = $request->employee_no;
$name = $request->name;
$nid = $request->nid;
$dob = $request->dob;
$covid_status = $request->covid_status;
$vaccine_certificate = $request->vaccine_certificate;
$official_email = $request->official_email;
$optional_email = array();
if($request->optional_email[0] != null){
foreach (json_decode($request->optional_email[0]) as $key => $email) {
array_push($optional_email, $email->value);
}
}
$official_phone = $request->official_phone;
$optional_phone = array();
if($request->optional_phone[0] != null){
foreach (json_decode($request->optional_phone[0]) as $key => $phone) {
array_push($optional_phone, $phone->value);
}
}
$designation = $request->designation;
$employee_type = $request->employee_type;
$role = $request->role;
$department = $request->department;
$team = $request->team;
$grade = $request->grade;
$level = $request->level;
$avatar = $request->avatar;
$present_address = $request->present_address;
$permanent_address = $request->permanent_address;
$employee_status = $request->employee_status;
$employee_invitation_status = $request->employee_invitation_status;
$response = $http->post('http://localhost:8000/api/v1/employees/create',[
// 'headers' => [
// 'Authorization' => 'Bearer'.session()->get('token.access_token'),
// ],
'query' =>[
'employee_no' => $employee_no,
'name' => $name,
'nid' => $nid,
'dob' => $dob,
'covid_status' => $covid_status,
'vaccine_certificate' => $vaccine_certificate,
'official_email' => $official_email,
'optional_email' => $optional_email,
'official_phone' => $official_phone,
'optional_phone' => $optional_phone,
'designation' => $designation,
'employee_type' => $employee_type,
'role' => $role,
'department' => $department,
'team' => $team,
'grade' => $grade,
'level' => $level,
'avatar' => $avatar,
'present_address' => $present_address,
'permanent_address' => $permanent_address,
'employee_status' => $employee_status,
'employee_invitation_status' => $employee_invitation_status,
]
]);
$result = json_decode((string) $response->getBody(), true);
return $result;
}
catch(\Throwable $e){
return response()->json([
'result' => false,
'message' => 'Something Error!'
]);
}
}
In same code when I comment out $optional_phone and $optional_email , it show success response but when I pass all then it show false result. How I pass an array inside query?

Related

foreach inside foreach and out put first foreach in array

Assume I have an array called (data) and inside my array I have a foreach on products. I need to get each of these product packages inside this (data) array.
Here is what I've tried:
foreach ( $products as $product ) {
$data[] = [
'id' => $product->id,
'packages' => [],
]
foreach ( $product->packageId as $package ) {
$data[]['packages'] = [
'package_id' => $package['id'],
];
}
}
This returns:
- 0 [
id: 977
packages: []
]
- 1 [
packages
package_id: 14
]
- 2 [
packages
package_id: 15
]
I need to return something like this:
- 0 [
id: 977
packages: [
package_id: 14,
package_id: 15
]
]
Update
as #Helioarch and #albus_severus mentioned in they answers that I should create the package array first then include that into the data array
this solution will add the old array of packages in every time the products loops
For Example
product 1 has packages [1,2,3]
product 2 has packages [4,5,6]
in this my case here it will become
product 1 have packages [1,2,3]
product 2 will have packages [1,2,3,4,5,6] <- witch is wrong.
Update 2
Here is my full code
foreach ( $products as $product ) {
$sums = 0;
foreach ( $product->packageId as $package ) {
// Get the total existing inventory
$pckInvSum = $package->pckInventories
->where( 'expiry_date', '<', Carbon::today() )
->where( 'type', 'existing' )->sum( 'amount' );
// Get the total virtual inventory
$pckInvVirtual = $package->pckInventories->where( 'type', 'virtual' )->sum( 'amount' );
// create new array packages to add it to the main json
$packages[] = [
'package_id' => $package['id'],
'package_price' => $package['price'],
'unit_count' => $package['unit_count'],
'existing' => $pckInvSum,
'virtual' => $pckInvVirtual
];
$sums += $package->pckInventories->sum( 'amount' );
}
$data[] = [
'id' => $product->id,
'product_category_id' => $product->product_category_id,
'child_category_id' => $product->child_category_id,
'child_category_two_id' => $product->child_category_two_id,
'child_category_three_id' => $product->child_category_three_id,
'supplier_id' => $product->supplier_id,
'supplier_name' => $product->supplier->contact_name,
'option_category_id' => $product->option_category_id,
'tax_id' => $product->tax_id,
'barcode' => $product->barcode,
'low_price' => $product->low_price,
'image' => $product->image,
'cost' => $product->cost,
'name_ar' => $product->translations[0]->name,
'name_en' => $product->translations[1]->name,
'details_ar' => $product->translations[0]->details,
'details_en' => $product->translations[1]->details,
'sumInv' => $sums,
'campaign' => [
'id' => $product->campaign[0]->id,
'product_id' => $product->campaign[0]->product_id,
'price' => $product->campaign[0]->price,
'purchasesLimits' => $product->campaign[0]->purchasesLimits,
],
'packages' => $packages,
];
You should create the package array first then include that into the data array like so:
foreach ( $products as $product ) {
$packages = [];
foreach ( $product->packageId as $package ) {
$packages[] = [
'package_id' => $package['id'],
];
}
$data[] = [
'id' => $product->id,
'packages ' => $packages,
]
}
EDIT:
Please try again with a revised version of the code you provide below.
foreach ( $products as $product ) {
$sums = 0;
$packages = [];
foreach ( $product->packageId as $package ) {
// Get the total existing inventory
$pckInvSum = $package->pckInventories
->where( 'expiry_date', '<', Carbon::today() )
->where( 'type', 'existing' )->sum( 'amount' );
// Get the total virtual inventory
$pckInvVirtual = $package->pckInventories->where( 'type', 'virtual' )->sum( 'amount' );
// create new array packages to add it to the main json
$packages[] = [
'package_id' => $package['id'],
'package_price' => $package['price'],
'unit_count' => $package['unit_count'],
'existing' => $pckInvSum,
'virtual' => $pckInvVirtual
];
$sums += $package->pckInventories->sum( 'amount' );
}
$data[] = [
'id' => $product->id,
'product_category_id' => $product->product_category_id,
'child_category_id' => $product->child_category_id,
'child_category_two_id' => $product->child_category_two_id,
'child_category_three_id' => $product->child_category_three_id,
'supplier_id' => $product->supplier_id,
'supplier_name' => $product->supplier->contact_name,
'option_category_id' => $product->option_category_id,
'tax_id' => $product->tax_id,
'barcode' => $product->barcode,
'low_price' => $product->low_price,
'image' => $product->image,
'cost' => $product->cost,
'name_ar' => $product->translations[0]->name,
'name_en' => $product->translations[1]->name,
'details_ar' => $product->translations[0]->details,
'details_en' => $product->translations[1]->details,
'sumInv' => $sums,
'campaign' => [
'id' => $product->campaign[0]->id,
'product_id' => $product->campaign[0]->product_id,
'price' => $product->campaign[0]->price,
'purchasesLimits' => $product->campaign[0]->purchasesLimits,
],
'packages' => $packages,
];
}

DB Transaction in Laravel lexical variable error

I'm currently using DB-Transaction and it throws Lexical variable error
attached here is my code:
DB::transaction(function ($request) use ($request) {
$salesman = new Salesman([
'operation_id' => $request->get('operation_id'),
'warehouse_id' => $request->get('warehouse_id'),
'salesman_name' => $request->get('salesman_name'),
'address' => $request->get('address'),
'contact_number' => $request->get('contact_number'),
'email_address' => $request->get('email_address'),
'area_id' => 'pending',
]);
$salesman->save();
});
return view('salesman.index');
}
It is working now after I remove the $request parameter in function
DB::transaction(function () use ($request) {
$salesman = new Salesman([
'operation_id' => $request->get('operation_id'),
'warehouse_id' => $request->get('warehouse_id'),
'salesman_name' => $request->get('salesman_name'),
'address' => $request->get('address'),
'contact_number' => $request->get('contact_number'),
'email_address' => $request->get('email_address'),
'area_id' => 'pending',
]);
$salesman->save();
});
return view('salesman.index');
}

.NET Core Web Api Loading Nested Entities

I have a db model that looks like:
public CallTrackers()
{
CallTrackerCallerTelns = new HashSet<CallTrackerCallerTelns>();
CallTrackerClients = new HashSet<CallTrackerClients>();
CallTrackerFlwups = new HashSet<CallTrackerFlwups>();
CallTrackerHistory = new HashSet<CallTrackerHistory>();
}
With my GetAll() I am loading everything fine except for CallTrackerClients has 3 nested objects that I can't retrieve:
public CallTrackerClients()
{
CallTrackerClientAdvice = new HashSet<CallTrackerClientAdvice>();
CallTrackerClientOffences = new HashSet<CallTrackerClientOffences>();
CallTrackerClientSureties = new HashSet<CallTrackerClientSureties>();
}
I am trying:
[HttpGet]
public IEnumerable<CallTrackers> GetAll()
{
return _context.CallTrackers
.Include(log => log.CallTrackerClients)
.ThenInclude(c => c.CallTrackerClientAdvice)
.Include(log => log.CallTrackerCallerTelns)
.Include(log => log.CallTrackerFlwups)
.Include(log => log.CallTrackerHistory)
.ToList();
}
The above works but I need to get the Sureties and Offences as well. When I try .ThenInclude(c => c.CallTrackerClientOffences)I get some 'does not contain definition' error.
Any ideas how to get the two remaining collections that are part of CallTrackerClients?
You always have to start from the parent entity.
return _context.CallTrackers
.Include(log => log.CallTrackerClients)
.ThenInclude(c => c.CallTrackerClientAdvice)
// this
.Include(log => log.CallTrackerClients)
.ThenInclude(c => c.CallTrackerClientOffences)
// and this
.Include(log => log.CallTrackerClients)
.ThenInclude(c => c.CallTrackerClientSureties)
.Include(log => log.CallTrackerCallerTelns)
.Include(log => log.CallTrackerFlwups)
.Include(log => log.CallTrackerHistory)
.ToList();

Converting HttpFoundation\Response to an array

My symfony request is returning array with entity object and setstate method.
This is the dump of the array.
array (
0 =>
HealthyLiving\ApiBundle\Entity\User::__set_state(array(
'id' => 1,
'username' => 'admin',
'password' => '123',
'email' => 'batoosay#gmail.com',
'isActive' => false,
)),
)
And here is the code:
public function loginAction()
{
$restresult = $this->getDoctrine()->getRepository('ApiBundle:User')->findAll();
if ($restresult === null) {
return new View("there are no users exist", Response::HTTP_NOT_FOUND);
}
echo '<pre>' . var_export($restresult, true) . '</pre>';die;
return new JsonResponse(
$restresult
);
}
The JsonResponse is empty because of the strange array. How do i convert this array of object to json ?
try to serialize with JMS like this:
$serializer = $this->get('jms_serializer');
return new Response(
$serializer->serialize($restresult, 'json')
);

Custom insert query in Drupal 7

I am using custom query in php page, which is store in root folder project/check.php. I have written an Insert query in check.php but it is not working.
My code:
<?php
if(isset($_POST['Submit'])) {
echo 'hel';
$ipaddress = $_SERVER['REMOTE_ADDR'];
$name = isset($_POST['fullname'])?$_POST['fullname']:"";
$dob = isset($_POST['datepicker'])?$_POST['datepicker']:"";
$nationality = isset($_POST['nationality'])?$_POST['nationality']:"";
$address = isset($_POST['address'])?$_POST['address']:"";
$city = isset($_POST['city'])?$_POST['city']:"";
$state = isset($_POST['state'])?$_POST['state']:"";
$pincode = isset($_POST['pincode'])?$_POST['pincode']:"";
$phone = isset($_POST['telephone'])?$_POST['telephone']:"";
$email = isset($_POST['email'])?$_POST['email']:"";
$mobile = isset($_POST['mobileno'])?$_POST['mobileno']:"";
$weight = isset($_POST['weight'])?$_POST['weight']:"";
$height = isset($_POST['height'])?$_POST['height']:"";
$marital = isset($_POST['marital'])?$_POST['marital']:"";
$degree = isset($_POST['board'])?$_POST['board']:"";
$institute = isset($_POST['institute'])?$_POST['institute']:"";
$special = isset($_POST['specialization'])?$_POST['specialization']:"";
$yearofpaas = isset($_POST['passingyear'])?$_POST['passingyear']:"";
$grade = isset($_POST['grade'])?$_POST['grade']:"";
$emplyment_history = isset($_POST['experience'])?$_POST['experience']:"";
$merits = isset($_POST['remarks'])?$_POST['remarks']:"";
$major_achivements = isset($_POST['achivements'])?$_POST['achivements']:"";
$interview_attended = isset($_POST['intrview_attended'])?$_POST['intrview_attended']:"";
$details = isset($_POST['details'])?$_POST['details']:"";
$minctc_position = isset($_POST['ctc_positions'])?$_POST['ctc_positions']:"";
if(isset($_POST['declaration'])){
$declaration = 1;
} else {
$declaration = 0;
}
if(isset($_FILES) && !empty($_FILES) && $_FILES['cv_file']['name']!=''){
$file = explode('.',trim($_FILES['cv_file']['name']));
if($file[1]=='pdf' || $file[1]=='doc' || $file[1]=='docx') {
$cv_file = $file[0]."_".rand(11111111111,99999999999).".".$file[1];
$_FILES['cv_file']['name'] = $cv_file;
move_uploaded_file($_FILES['cv_file']['tmp_name'],'uploads/'.$_FILES['cv_file']['name']);
} else {
$err_message = 'File must be pdf,doc or docx type.';
}
} else {
$cv_file = '';
}
$dataField = array('datetime'=>date(),
'ipadress' => $ipaddress,
'name' => $name,
'dob' => $dob,
'nationality' => $nationality,
'address' => $address,
'city' => $city,
'state' => $state,
'pincode' => $pincode,
'phone' => $phone,
'email' => $email,
'mobile' => $mobile,
'weight' => $weight,
'height'=> $height,
'marital' => $marital,
'degree' => $degree,
'institute' => $institute,
'special' => $special,
'yearofpaas' => $yearofpaas,
'grade' => $grade,
'emplyment_history' => $emplyment_history,
'merits' => $merits,
'major_achivements' => $major_achivements,
'interview_attended' => $interview_attended,
'details' => $details,
'minctc_position' => $minctc_position,
'cv_file' => $cv_file,
'declaration' => $declaration);
echo $id = db_insert('tbl_users')->fields($dataField)->execute();
}
?>
This insert query is not working. I am using Drupal 7.

Resources