Saturday, July 6, 2024

Bangladesh Railway - specification of seat category

এসি বার্থ (AC_B): এটি রেলওয়ের শীতাতপনিয়ন্ত্রিত কামরা। ‘তাপানুকূল স্লিপার’ বা ‘এসি কেবিন’ হিসেবেও পরিচিত। এসব কেবিনে দ্বিতল বিছানা থাকে। রাতের ডাবল কেবিনে চারজন যাত্রী শুয়ে যেতে পারেন আর সিঙ্গেল কেবিনে দুজন।
এসি সিট (AC_S): আন্তনগর ট্রেনে রাতে যা ‘এসি বার্থ’, দিনে তা-ই হয়ে যায় ‘এসি সিট’। শীতাতপনিয়ন্ত্রিত এসব কেবিনের দ্বিতল বিছানা দিনের বেলায় হয়ে যায় বসার আসন। এ সময় ডাবল কেবিনে ছয়জন যাত্রী বসার ব্যবস্থা হয় আর সিঙ্গেল কেবিনে তিনজন।
স্নিগ্ধা (SNIGDHA): ট্রেনের এসি কোচের চেয়ার সিট। দেশের সব আন্তনগর ট্রেনে না থাকলেও বেশির ভাগ জনপ্রিয় গন্তব্যের ট্রেনে স্নিগ্ধা কোচ থাকে। আরামদায়ক বসার আসনের ব্যবস্থা থাকায় এই কোচে ভ্রমণও হয় আরামদায়ক।
এসি চেয়ার (AC_CHAIR): ‘তাপানুকূল এসি চেয়ার’ হিসেবেও পরিচিত। ট্রেনের কোচ বা বগির এই আসনগুলো কোনো কোনো ট্রেনে স্নিগ্ধা হিসেবেও পরিচিত।
প্রথম শ্রেণি বার্থ (F_BERTH): প্রথম শ্রেণি বার্থ নন–এসি কেবিন হিসেবেও পরিচিত। এসব কেবিনে দ্বিতল বিছানা থাকে। রাতের ডাবল কেবিনে চারজন যাত্রী শুয়ে যেতে পারেন আর সিঙ্গেল কেবিনে দুজন।
প্রথম শ্রেণি সিট (F_SEAT): সাধারণত শোয়ার বার্থ বা বিছানাওয়ালা কেবিনগুলো দিনের বেলায় প্রথম শ্রেণি সিট হিসেবে ব্যবহৃত হয়। এ সময় ডাবল কেবিনে ছয়জন যাত্রী বসার ব্যবস্থা হয় আর সিঙ্গেল কেবিনে তিনজন।
প্রথম শ্রেণি চেয়ার (F_CHAIR): নন–এসি চেয়ার কোচের আসন। চেয়ারগুলো বেশ বড় ও আরামদায়ক। পা ছড়িয়ে বাসার মতো পর্যাপ্ত জায়গা থাকে।
শোভন চেয়ার (S_CHAIR): দেশের প্রায় সব আন্তনগর ট্রেনে শোভন চেয়ার আছে। দ্বিতীয় শ্রেণির এই কামরা নন–এসি। স্নিগ্ধার কাছাকাছি মানের চেয়ার। তাই ভ্রমণ মোটামুটি আরামদায়ক। ভাড়াও প্রথম শ্রেণির চেয়ারের চেয়ে কম।
শোভন (SHOVAN): ট্রেনের শোভন কোচে রেক্সিনে মোড়ানো মুখোমুখি আসন। অনেকটা বেঞ্চের মতো হলেও পেছনে হেলান দেওয়ার ব্যবস্থা থাকে। এই আসনে দুজনে বসতে হয়। মেইল ও কিছু আন্তনগর ট্রেনে শোভন আসন আছে। কম খরচের এসব আসন দীর্ঘ ভ্রমণের জন্য আরামদায়ক নয়।
সুলভ (SHULOV): কাঠের বেঞ্চের মতো আসনে বসার ব্যবস্থা। এটি মেইল বা কমিউটার ট্রেনের দ্বিতীয় শ্রেণির আসন।

Thursday, July 4, 2024

How To Read and Update Data From Google Sheets Using PHP

Create New Project on the Google Cloud Platform

The first step to creating a new project to be able to access Google’s resources is to go to the Google Cloud Console https://console.cloud.google.com/ and New Project as below:

Fill in the basic details that are asked on the form you get when you click New Project and submit it and you should be done.
After create navigtate to project, like - https://console.cloud.google.com/welcome?project=project-spreadsheet-xxx

In our case, since we plan to use the Google Sheets API, we will have to first enable the said API. To do that, check below screenshot click Enabled APIs & Services and then, from the top, click ENABLE APIS AND SERVICES. Or directly go to https://console.cloud.google.com/apis/library?project=project-spreadsheet-xxx to enable APIs you need.
Find Google Sheets API and enable like below:
Once enabled, we now have to create a credentials. For our case, we want to create a Service Account.
Here, make sure you choose Owner as your role and then finally move ahead to create the service account.
After the successful creation of the service account, you will be redirected to the list of credentials. On that page, by clicking the Edit icons as shown below, you will be redirected to another page from where we can download the credentials as a JSON file.
Just follow along. Also, don’t forget to copy the email id that should be listed below the Service Accounts section.

Use this link https://console.cloud.google.com/iam-admin/settings to delete any existing project.

Use this link https://console.cloud.google.com/cloud-resource-manager for all of your projects.
Install the Google API Client Package In order to interact with a google sheet using Composer, we will need to first bring in the Google API Client package. Let’s do that by running the following command:
composer require google/apiclient
ont forget to copy the email id that should be listed below the Service Accounts section. We will need this email id. So, go to your Google Cloud Console and from under Service Accounts, copy this email id.
Now, let’s create a new Google sheet by going to docs.google.com and create a new spreadsheet. Then click the Share button on the top right of the newly created Google sheet and paste your service account email id here, to share the sheet with this email id (which is essentially your service account). like below
Below is full PHP script to get Google Sheet data and update accordingly:
<?php


use Google\Client;
use Google\Service\Drive;
use Google\Service\Sheets;
use Google\Service\Sheets\ValueRange;

set_time_limit(60 * 60 * 12);
ini_set("memory_limit", "-1");

ini_set('display_errors', 1);
error_reporting(E_ALL);
ini_set('display_startup_errors', 1);

$client = new Client();
$client->setAuthConfig('creds.json');
$client->setScopes(['https://www.googleapis.com/auth/spreadsheets']);
$client->useApplicationDefaultCredentials();
$service = new Sheets($client);

$spreadsheetId = "1AN34n84blDoH_xxxxxxxxxx_faP6S5pjO5xaGdk7t77qPAgQY";

$ranges = 'Sheet1!A1:C20';
$params = array(
    'ranges' => $ranges, 'majorDimension' => 'ROWS'
);
//execute the request
$result = $service->spreadsheets_values->batchGet($spreadsheetId, $params);
if (!$result) {
    return [
        'error' => true,
        'message' => 'missing row data'
    ];
}
$values = $result->getValueRanges();
echo "<pre>";
print_r($values);
echo "</pre>";

$updateRow = [];
$updateRow[] = ["Name1", "Id1", "Group1-".time()];
$valueRange = new ValueRange();
$valueRange->setValues($updateRow);
$range = 'Sheet1!A2:C'.(count($updateRow) + 1); // where the replacement will start, here, first column and second line
$options = ['valueInputOption' => 'USER_ENTERED'];
$service->spreadsheets_values->update($spreadsheetId, $range, $valueRange, $options);
Respective Google Sheet is as below after update: