Snippets Collections
/** 
 * log("sample logging statement") --> can be used to print any data in the browser console.
 * ZDK module can be used for customising the UI and other functionalities.
 * return false to prevent <SAVE> action
**/
var account_name = ZDK.Page.getField('Account_Name').getValue();
console.log("Account name value: ", account_name);
var contactnamefield= ZDK.Page.getField("Contact_Name").getValue();
console.log("Value of Contact name Field is ", contactnamefield);

var Show_Number_of_Unit=ZDK.Page.getField("Show_Number_of_Unit");
console.log("Show_Number_of_Unit = ", Show_Number_of_Unit);

var Show_Number_of_Unit_Vaule=ZDK.Page.getField("Show_Number_of_Unit").getValue();
console.log("Show_Number_of_Unit_value = ", Show_Number_of_Unit_Vaule);

if (account_name != null)
{
    console.log("Account Name is not Equal to Null");
var accountnameid = account_name['id'];
console.log("account name id: ", accountnameid);

var related_records = ZDK.Apps.CRM.Accounts.fetchRelatedRecords(accountnameid, "Contacts");
for (var i = 0; i < related_records.length; i++)
{
    console.log("related_records [i]", related_records[i]);
    console.log("related_records[i].Primary_Contact", related_records[i].Primary_Contact);
    if(related_records[i].Primary_Contact==true)
    {
        true_related_record = related_records[i];
        console.log("true_related_record",true_related_record);
    }
    else
    {
        true_related_record=related_records[0];
        console.log("true_related_record [0]",true_related_record);
        
    }
}

console.log("true_related_record Email",true_related_record.Email);
console.log("true_related_record Full_Name",true_related_record.Full_Name);
console.log("true_related_record id",true_related_record.id);

var emailfield = ZDK.Page.getField('Email');
console.log("email field value: ",emailfield);
console.log("set email address");
//emailfield.setValue(true_related_record.Email);
var contactnamefield= ZDK.Page.getField("Contact_Name");
//contactnamefield.setValue({ "id": true_related_record.id, "name": true_related_record.Full_Name });
console.log("set contact name");
console.log("id is :",true_related_record.id,"name is ",true_related_record.Full_Name);

var accounts = ZDK.Apps.CRM.Accounts.fetchById(accountnameid);
console.log("accounts: ", accounts);

var numofemployeesfield = ZDK.Page.getField("Number_of_Employees");
console.log("num of employees field: ",numofemployeesfield);
    var foundingyearfield = ZDK.Page.getField("Founding_Year");
var websitee = ZDK.Page.getField("Website");
websitee.setValue(accounts.Website);
console.log("foundingyearfield", foundingyearfield);
if (accounts.Founding_Year == null)
{
    console.log("if condition Founding_Year");
    foundingyearfield.setValue(0);
}
else
{
    console.log("else condition Founding_Year");
    foundingyearfield.setValue(accounts.Founding_Year);
}

if (accounts.Number_of_Employees == null)
{
    console.log("if condition Number_of_Employees",accounts.Number_of_Employees);
    numofemployeesfield.setValue("-None-");
}
else
{
    console.log("else condition Number_of_Employees",accounts.Number_of_Employees);
    numofemployeesfield.setValue(accounts.Number_of_Employees);
}

var client_typefield = ZDK.Page.getField("Client_Type");
console.log("client_typefield = ", client_typefield);
if (accounts.Client_Type==null)
{
    console.log("if condition client_typefield is null",accounts.Client_Type);
    client_typefield.setValue("-None-");
}
else
{
    console.log("else condition in Client_type",accounts.Client_Type);
    client_typefield.setValue(accounts.Client_Type);
}



var industryfield = ZDK.Page.getField('Industry');
console.log("industryfield", industryfield);
if (accounts.Industry == null)
{
    console.log("if condition Industry");
    industryfield.setValue("-None-");
}
else
{
    console.log("else condition Industry");
    industryfield.setValue(accounts.Industry);
}


var serviceintrestedfield= ZDK.Page.getField("Services_Interested").getValue();
console.log("serviceintrestedfield",serviceintrestedfield);

    if (serviceintrestedfield=="Property Management Solution")
    {
        console.log("True");
        Show_Number_of_Unit.setValue(true);
    }
    else {
        console.log("False");
        Show_Number_of_Unit.setValue(false);
}
var client_tpye_value=ZDK.Page.getField("Client_Type").getValue();
console.log("client_tpye_value",client_tpye_value);

}
else
{
    console.log("Account Name is Equal to Null");
    var emailfield = ZDK.Page.getField('Email');
    //emailfield.setValue(null);

    var contactnamefield= ZDK.Page.getField("Contact_Name");
    //contactnamefield.setValue(null);

    var numofemployeesfield = ZDK.Page.getField("Number_of_Employees");
    numofemployeesfield.setValue("-None-");

    var foundingyearfield = ZDK.Page.getField("Founding_Year");
    foundingyearfield.setValue(null);

    var client_typefield = ZDK.Page.getField("Client_Type");
    client_typefield.setValue("-None-");
    
    var industryfield = ZDK.Page.getField('Industry');
    industryfield.setValue("-None-");
}


var userID = $Crm.user.id;
var userName = $Crm.user.first_name; // + " " + $Crm.user.last_name;
var module = $Page.module;
var module_recordID = $Page.record_id;
var recordName = $Page.record._Full_Name;
/*var currentdate = new Date();

var timesettings = {  year: 'numeric',  month: 'long',  day: 'numeric',  hour: 'numeric',minute: 'numeric',  second: 'numeric',hour12: true, timeZoneName: 'short' };var formattedDateTime = currentdate.toLocaleTimeString('en-US',timesettings);    console.log("time ::::::: ", formattedDateTime);   */

var map = { "Viewed_By": "Last Viewed by - " + userName + " \n " };
var map = { "Last_Viewed_User_ID": +userID};
console.log("User id new : " +userID)
// + formattedDateTime 

//console.log(map); 

var datalist = [];datalist.push(map);var param = { "data": datalist };

//console.log("param: ", param); 

var response = ZDK.Apps.CRM.Connections.invoke("crmconn", "https://zohoapis.com/crm/v5/"+module+"/"+module_recordID, "PUT", 2, param, {});

//console.log("Response : ", response);

var userID = $Crm.user.id;
var userName = $Crm.user.first_name; // + " " + $Crm.user.last_name;
var module = $Page.module;
var module_recordID = $Page.record_id;
var recordName = $Page.record._Full_Name;
var userIDString = String(userID);

console.log("This is string:" +userIDString); 
console.log( "This is user id: "+userID); 
/*var currentdate = new Date();

var timesettings = {  year: 'numeric',  month: 'long',  day: 'numeric',  hour: 'numeric',minute: 'numeric',  second: 'numeric',hour12: true, timeZoneName: 'short' };var formattedDateTime = currentdate.toLocaleTimeString('en-US',timesettings);    console.log("time ::::::: ", formattedDateTime);   */

var map = { "Viewed_By": "Last Viewed by - " + userName + " \n " };
var map = { "Last_Viewed_User_ID": +userIDString + " \n "};

// + formattedDateTime 

//console.log(map); 

var datalist = [];datalist.push(map);var param = { "data": datalist };

//console.log("param: ", param); 

var response = ZDK.Apps.CRM.Connections.invoke("crmconn", "https://zohoapis.com/crm/v5/"+module+"/"+module_recordID, "PUT", 2, param, {});

//console.log("Response : ", response);
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":x-connect: Boost Days: What's on in Melbourne this week! :x-connect:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n\n Hey Melbourne, happy Monday! \n\n Please see below for what's on this week as there is a Change in dates to the Boost Programme. "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Xero Café :coffee:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n :new-thing: *This week we are offering:* \n\n :caramel-slice: Classic Slices \n\n :coffee: *Weekly Café Special*: Vanilla Bean Latte"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": " Monday, 30th June :calendar-date-30:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": " :suit-up: *Wear your suit to work Day* - In Honour of the long-standing tradition in Australia :australia: Today we encourage you to come dressed in your sharpest suit or corporate attire. Think of it has the nod to our old-school accountants and bookeepers our partners would have worn back in the day! \n\n *10.30am*: Join us everyone for a photo in the Breakout Space followed by a delicious morning tea :croissant::suit-up:  "
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": " Wednesday, 2nd July :calendar-date-2:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":breakfast: *Breakfast*: from *8:30am - 10:30am* in the Level 3 Breakout Space. "
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Thursday, 3rd July :calendar-date-3: \n ",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "plain_text",
				"text": " :Lunch: :flag-gr: 12.00pm - Greek themed Lunch in the breakout Space on L-3. Menu in the :thread: \n :HANDS: 12.30pm - Please join us for the Australia All Hands screening in the breakout space on Level 3. ",
				"emoji": true
			}
		},
		{
			"type": "divider"
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: Xero Boost Days! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Canberra! Please see below for what's on this week! "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-2: Wednesday, 2nd July",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:Lunch: *Lunch*: Provided in our suite from *12pm*."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Stay tuned to this channel for more details, check out the <https://calendar.google.com/calendar/u/0?cid=Y19jYzU3YWJkZTE4ZTE0YzVlYTYxMGU4OThjZjRhYWQ0MTNhYmIzMDBjZjBkMzVlNDg0M2M5NDQ4NDk3NDAyYjkyQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20|*Canberra Social Calendar*>, and get ready to Boost your workdays!\n\nLove,\nWX Team :party-wx:"
			}
		}
	]
}
ssh -L <localport>:localhost:<host2port> -J user1@host1 user2@host2
function slow_down_site() {
    sleep(35);
}
add_action('wp', 'slow_down_site');

function slow_down_sitenocache() {
    if (!isset($_GET['nocache'])) {
        wp_redirect(add_query_arg('nocache', time())); // Force reload with new URL
        exit;
    }
    sleep(35);
}
add_action('init', 'slow_down_sitenocache');

function slow_down_site_wpdb() {
    global $wpdb;
    $wpdb->query("SELECT SLEEP(35)"); // MySQL delay
}
add_action('init', 'slow_down_site_wpdb');
function create_testimonial() {

    $labels = array(
        'name' => _x( 'Testimonial', 'Post Type General Name'),
        'singular_name' => _x( 'Testimonial', 'Post Type Singular Name'),
        'menu_name' => _x( 'Testimonial', 'Admin Menu text'),
        'name_admin_bar' => _x( 'Testimonial', 'Add New on Toolbar'),
        'archives' => __( 'Testimonial Archives'),
        'attributes' => __( 'Testimonial Attributes'),
        'parent_item_colon' => __( 'Parent Testimonial:'),
        'all_items' => __( 'All Testimonial'),
        'add_new_item' => __( 'Add New Testimonial'),
        'add_new' => __( 'Add New'),
        'new_item' => __( 'New Testimonial'),
        'edit_item' => __( 'Edit Testimonial'),
        'update_item' => __( 'Update Testimonial'),
        'view_item' => __( 'View Testimonial'),
        'view_items' => __( 'View Testimonial'),
        'search_items' => __( 'Search Testimonial'),
        'not_found' => __( 'Not found'),
        'not_found_in_trash' => __( 'Not found in Trash'),
        'featured_image' => __( 'Featured Image'),
        'set_featured_image' => __( 'Set featured image'),
        'remove_featured_image' => __( 'Remove featured image'),
        'use_featured_image' => __( 'Use as featured image'),
        'insert_into_item' => __( 'Insert into Testimonial'),
        'uploaded_to_this_item' => __( 'Uploaded to this Testimonial'),
        'items_list' => __( 'Testimonial list'),
        'items_list_navigation' => __( 'Testimonial list navigation'),
        'filter_items_list' => __( 'Filter Testimonial list'),
    );
    $rewrite = array(
        'slug' => 'testimonial',
        'with_front' => true,
        'pages' => true,
        'feeds' => true,
    );
    $args = array(
        'label' => __( 'Testimonial'),
        'description' => __( ''),
        'labels' => $labels,
        'menu_icon' => 'dashicons-admin-appearance',
        'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'page-attributes', 'post-formats'),
        'taxonomies' => array(),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'menu_position' => 5,
        'show_in_admin_bar' => true,
        'show_in_nav_menus' => true,
        'can_export' => true,
        'has_archive' => true,
        'hierarchical' => true,
        'exclude_from_search' => true,
        'show_in_rest' => true,
        'publicly_queryable' => true,
        'capability_type' => 'post',
        'rewrite' => $rewrite,
    );
    register_post_type( 'testimonial', $args );
    
    }
    add_action( 'init', 'create_testimonial', 0 );
    
    function testimonial_loop(){
    ob_start();
    wp_reset_postdata();
    ?>
    
        <div id="slick-slides" class="owl-carousel services-sec">
    <?php 
        $arg = array(
            'post_type' => 'testimonial',
            'posts_per_page' =>-1, 
        );
    $testimonialPost = new WP_Query($arg);
    ?>
            <?php if ($testimonialPost->have_posts() ): ?>
                <?php while ($testimonialPost->have_posts() ) : ?>
                    <?php $testimonialPost->the_post(); ?>
                    
                        <div class="col-md-3 content">
                            <div class="testi_wrapper">
                                <div class="test_img">
                                    <?php the_post_thumbnail() ?>
                                </div>
                                <div class="test_content">
                                    <p><?php the_content() ?></p>
                                </div>
                                <div class="test_detail">
									<h4><?php the_title() ?></h4>
									<small><?php the_field('designation') ?></small>
                                </div>	
                            </div>
                        </div>
                    <?php endwhile; ?>
                <?php endif;?>
            </div>

    <?php
    wp_reset_postdata();
    return ''.ob_get_clean();
    }
    add_shortcode('testimonial_code', 'testimonial_loop');
function product_custom_loop(){
        ob_start();
        
         $args = array(
            'post_type' => ' product',
            'posts_per_page' => 6,
        ); 
    
        $results = new WP_Query($args);
        // echo '<pre>';
        // var_dump($atts['category']);
        ?>
<section id="home">
     
        
            <div class="container-fluid">
             
                    <div class="row ser-content product-slider">
                        <?php
                            if($results->have_posts()):
                                while($results->have_posts()):
                                    $results->the_post();
                                    global $product;
                                    // $categories = get_the_terms(get_the_ID(), 'product_cat');
                            ?>
                        <div class="col-md-4">
                           <div class="product_col">
                            <div class="product_inner">
                                <div class="product_top">
                        			<a class="prCart" href="<?php echo esc_url( get_site_url() . '/cart/?add-to-cart=' . $product->get_id() ); ?>"><span class="list-icon wd-icon fas fa-shopping-bag"></span></a>
                                    <div class="price_product">
                                    <?php 
                            			  if ($product->is_type( 'simple' )) { ?>
                            			<?php echo $product->get_price_html(); ?>
                            			<?php } ?>
                            			<?php 
                                		  if($product->get_type()=='variable') {
                                		      $available_variations = $product->get_available_variations();
                                		      $variation_id=$available_variations[0]['variation_id'];
                                		      $variable_product1= new WC_Product_Variation( $variation_id );
                                		      $regular_price = $variable_product1 ->regular_price;
                                		      $sales_price = $variable_product1 -> sale_price;
                                		      if (empty($sales_price)) {
                                		      $sales_price = 0;
                                		        }
                                		      }
                            			  ?>
                                </div>
                			    </div>
                                <div class="product_img">
                                    <?php the_post_thumbnail('full'); ?>
                                </div>
                                <div class="product_title">
                                    <h4><?php echo esc_html(get_the_title()); ?></h4>
                                </div>
                            </div>
                        </div>
                        </div>
                        <?php
                            endwhile;
                            endif;
                            ?>
                    </div>
                
            </div>
         
     
</section>

<?php
    wp_reset_postdata();
    return ob_get_clean();
    }
add_shortcode('wp-product','product_custom_loop');



from flask import Blueprint, jsonify, request
import pandas as pd
import os
from datetime import timedelta
from statsmodels.tsa.statespace.sarimax import SARIMAX
from models import SensorData, User, session
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import login_user, logout_user, login_required, current_user

bp = Blueprint('api', __name__)

# --- AUTHENTICATION & PASSWORD RECOVERY ROUTES (Unchanged) ---

@bp.route('/api/signup', methods=['POST'])
def signup():
    data = request.get_json()
    if session.query(User).filter_by(username=data.get('username')).first():
        return jsonify({"message": "Username already exists."}), 409
    if session.query(User).filter_by(email=data.get('email')).first():
        return jsonify({"message": "Email already registered."}), 409
        
    new_user = User(
        username=data.get('username'), 
        email=data.get('email'), 
        security_question_1=data.get('security_question_1'), 
        security_answer_1_hash=generate_password_hash(data.get('security_answer_1')), 
        security_question_2=data.get('security_question_2'), 
        security_answer_2_hash=generate_password_hash(data.get('security_answer_2'))
    )
    new_user.set_password(data.get('password'))
    session.add(new_user)
    session.commit()
    return jsonify({"message": "Account created successfully."}), 201

@bp.route('/api/login', methods=['POST'])
def login():
    data = request.get_json()
    user = session.query(User).filter_by(username=data.get('username')).first()
    if not user or not user.check_password(data.get('password')):
        return jsonify({"message": "Invalid username or password."}), 401
    login_user(user)
    return jsonify({"message": "Logged in successfully."}), 200

@bp.route('/api/logout', methods=['POST'])
@login_required
def logout():
    logout_user()
    return jsonify({"message": "You have been logged out."}), 200

@bp.route('/api/check_session', methods=['GET'])
def check_session():
    if current_user.is_authenticated:
        return jsonify({"loggedIn": True, "username": current_user.username}), 200
    return jsonify({"loggedIn": False}), 401

@bp.route('/api/get-security-questions', methods=['POST'])
def get_security_questions():
    data = request.get_json()
    user = session.query(User).filter_by(username=data.get('username')).first()
    if not user or not user.security_question_1:
        return jsonify({"message": "Unable to retrieve security questions for this user."}), 404
    return jsonify({"question1": user.security_question_1, "question2": user.security_question_2}), 200

@bp.route('/api/reset-password', methods=['POST'])
def reset_password():
    data = request.get_json()
    user = session.query(User).filter_by(username=data.get('username')).first()
    if not user:
        return jsonify({"message": "Invalid credentials."}), 401
    
    answer1_correct = check_password_hash(user.security_answer_1_hash, data.get('answer1'))
    answer2_correct = check_password_hash(user.security_answer_2_hash, data.get('answer2'))

    if not (answer1_correct and answer2_correct):
        return jsonify({"message": "One or more security answers are incorrect."}), 401
    
    user.set_password(data.get('newPassword'))
    session.commit()
    return jsonify({"message": "Password has been reset successfully. Please log in."}), 200


# --- DATA ROUTES (Unchanged) ---
@bp.route('/status', methods=['GET'])
def status():
    return jsonify({'status': 'API is running'})

@bp.route('/api/upload-mock-data', methods=['POST'])
def upload_mock_data():
    file_path = "mock_sensor_data.csv"
    if not os.path.exists(file_path):
        return jsonify({"error": "Mock file not found"}), 404
    df = pd.read_csv(file_path)
    df["timestamp"] = pd.to_datetime(df["timestamp"])
    for _, row in df.iterrows():
        entry = SensorData(
            timestamp=row["timestamp"],
            sensor_id=row["sensor_id"],
            rainfall_mm=row["rainfall_mm"],
            water_level_cm=row["water_level_cm"],
            flow_rate_lps=row["flow_rate_lps"]
        )
        session.add(entry)
    session.commit()
    return jsonify({"message": "Mock data uploaded successfully!"})

@bp.route('/api/get-sensor-data', methods=['GET'])
@login_required
def get_sensor_data():
    try:
        data = session.query(SensorData).all()
        result = [
            {
                "timestamp": entry.timestamp.strftime("%Y-%m-%d %H:%M:%S"), 
                "sensor_id": entry.sensor_id, 
                "rainfall_mm": entry.rainfall_mm, 
                "water_level_cm": entry.water_level_cm, 
                "flow_rate_lps": entry.flow_rate_lps
            } for entry in data
        ]
        return jsonify(result)
    except Exception as e:
        return jsonify({"error": f"An internal error occurred: {str(e)}"}), 500

# --- UPDATED FORECASTING ROUTE ---

@bp.route('/api/forecast', methods=['GET'])
@login_required
def forecast():
    try:
        query = session.query(SensorData).statement
        df = pd.read_sql(query, session.bind)

        if df.empty or len(df) < 24: # Need enough data to forecast
            return jsonify({"error": "Not enough data to create a forecast."}), 400

        df['timestamp'] = pd.to_datetime(df['timestamp'])
        df = df.set_index('timestamp').sort_index()
        
        forecast_results = {}
        metrics_to_forecast = {
            "waterLevel": "water_level_cm",
            "flowRate": "flow_rate_lps",
            "rainfall": "rainfall_mm"
        }
        
        last_timestamp = df.index[-1]
        forecast_steps = 24
        future_dates = pd.date_range(start=last_timestamp + timedelta(hours=1), periods=forecast_steps, freq='H')
        
        for key, column_name in metrics_to_forecast.items():
            # Resample series for stability
            series = df[column_name].resample('H').mean().fillna(method='ffill')
            
            # Simple check to avoid trying to forecast flat-line data (common with rainfall)
            if series.nunique() < 2:
                predicted_mean = [series.iloc[-1]] * forecast_steps
            else:
                # Define and train the SARIMAX model
                model = SARIMAX(series, order=(1, 1, 1), seasonal_order=(1, 1, 0, 12), enforce_stationarity=False, enforce_invertibility=False)
                results = model.fit(disp=False)
                prediction = results.get_forecast(steps=forecast_steps)
                predicted_mean = prediction.predicted_mean.tolist()

            # Format the prediction for this metric
            forecast_results[key] = {
                "timestamps": [d.strftime("%Y-%m-%d %H:%M:%S") for d in future_dates],
                "predicted_values": predicted_mean
            }
            # Ensure rainfall forecast does not predict negative values
            if key == 'rainfall':
                forecast_results[key]['predicted_values'] = [max(0, val) for val in forecast_results[key]['predicted_values']]

        return jsonify(forecast_results)
        
    except Exception as e:
        return jsonify({"error": f"Failed to generate forecast: {str(e)}"}), 500

var userID = $Crm.user.id;
var userName = $Crm.user.first_name; // + " " + $Crm.user.last_name;
var module = $Page.module;
var module_recordID = $Page.record_id;
var recordName = $Page.record._Full_Name;



/*var currentdate = new Date();

var timesettings = {  year: 'numeric',  month: 'long',  day: 'numeric',  hour: 'numeric',minute: 'numeric',  second: 'numeric',hour12: true, timeZoneName: 'short' };var formattedDateTime = currentdate.toLocaleTimeString('en-US',timesettings);    console.log("time ::::::: ", formattedDateTime);   */

var map = { "Viewed_By": "Last Viewed by - " + userName + " \n " };
// + formattedDateTime 

//console.log(map); 

var datalist = [];datalist.push(map);var param = { "data": datalist };

//console.log("param: ", param); 

var response = ZDK.Apps.CRM.Connections.invoke("crmconn", "https://zohoapis.com/crm/v5/"+module+"/"+module_recordID, "PUT", 2, param, {});

//console.log("Response : ", response);
curren_datatime = zoho.currenttime.toString("yyyy-MM-dd'T'HH:mm:ssXXX");
def load_csv(target_table,file_path,column):

    temp_table = f"{target_table}_temp"

    with cre_data_conn() as conn:
        with conn.cursor() as cursor:
            # Step 1: Create temp table
            cursor.execute(sql.SQL(f"""
                CREATE TEMP TABLE {temp_table} (LIKE {target_table} INCLUDING ALL);
            """))

            # Step 2: Copy CSV data into the temp table
            with open(file_path, 'r') as data:
                next(data)  # Skip header manually if you're not using CSV HEADER
                cursor.copy_expert(sql=f"""
                    COPY {temp_table}(daydate, is_weekend, daypart, source, geohash, {column}, count)
                    FROM STDIN WITH CSV HEADER
                """, file=data)

            # Step 3: Upsert with count summing
            cursor.execute(sql.SQL(f"""
                INSERT INTO {target_table} (daydate, is_weekend, daypart, source, geohash, {column}, count)
                SELECT daydate, is_weekend, daypart, source, geohash, {column}, count
                FROM {temp_table}
                ON CONFLICT (daydate, is_weekend, daypart, source, geohash, {column})
                DO UPDATE SET count = {target_table}.count + EXCLUDED.count
            """))

            conn.commit()


def save_csv(final_dataframe, bucket, file_prefix):
    """Saves the final DataFrame to a CSV file."""

    output_path = f's3a://{bucket}/{file_prefix}'
    (
        final_dataframe
            .coalesce(1)
            .write
            .mode("overwrite")
            .option("header", "true")
            .format("csv")
            .save(output_path)
    )

def load_csv(bucket, file_prefix,target_table, column):

    s3 = boto3.client('s3')
    response = s3.list_objects_v2(Bucket=bucket, Prefix=file_prefix)
    for obj in response.get('Contents', []):
        if obj != []:
            if obj['Key'].endswith(".csv"):
                csv_filepath = obj['Key']
        else:
            raise Exception("No CSV part file found in S3 under prefix: " + file_prefix)
    print(f"Csv file path: {csv_filepath}")
    csv_obj = s3.get_object(Bucket=bucket, Key=csv_filepath)
    csv_file = csv_obj['Body'].read().decode('utf-8')
    # Step 1: Create a StringIO buffer from the CSV content
    csv_buffer = io.StringIO(csv_file)

    temp_table = f"{target_table}_temp"
    with cre_data_conn() as conn:
        with conn.cursor() as cursor:
            # Step 2: Create temp table
            cursor.execute(sql.SQL(f"""
                CREATE TEMP TABLE {temp_table} (LIKE {target_table} INCLUDING ALL);
            """))
            
            # Step 4: Copy S3 CSV content into temp table
            csv_buffer.seek(0)
            column_list = csv_buffer.readline()
            print(f"CSV header:{column_list}")
            csv_buffer.seek(0)
            cursor.copy_expert(sql=f"""
                COPY {temp_table}({column_list})
                FROM STDIN WITH CSV HEADER
            """, file=csv_buffer)

            # Step 5: Upsert with count summing
            cursor.execute(sql.SQL(f"""
                INSERT INTO {target_table} ({column_list})
                SELECT {column_list}
                FROM {temp_table}
                ON CONFLICT (daydate, is_weekend, hour, geohash, source, {column})
                DO UPDATE SET count = {target_table}.count + EXCLUDED.count
            """))

            conn.commit()
void schedule.Age_between_ResD_TwentD()

{

Pages = {1,2,3,4,5,6,7,8,9,10};

Records_List = list();

Record_List = list();

for each  Page in Pages

{

	records = zoho.crm.getRecords("Sales_Tracker",Page,200,{"cvid":5971686000090760051});

	if(records.size() > 0)

	{

		Record_List.addAll(records);

	}

	else

	{

		break;

	}

}

info Record_List;

for each  Erecord in Record_List

{

	numOfDays = daysBetween(ifNull(Erecord.get("Reservation_Date"),""),zoho.currentdate);

	DataMap = Map();

	DataMap.put("Aging",numOfDays);

	UpdateReco = zoho.crm.updateRecord("Sales_Tracker",Erecord.get("id"),DataMap,{"trigger":{"workflow","blueprint"}});

	info UpdateReco;

}

}
 
update_map = Map();

counter = 1;

loopexecutioncount = 2;

lst = if(loopexecutioncount > 1,counter.leftpad(loopexecutioncount).toList(""),List());

for each  rec in lst

{

  info "counter ==>" + counter;

	get_pop_records = zoho.crm.getRecords("POP",counter,200);

		counter = counter + 1;

}
 
update_map = Map();
counter = 1;
loopexecutioncount = 2;
lst = if(loopexecutioncount > 1,counter.leftpad(loopexecutioncount).toList(""),List());
for each  rec in lst
{
  info "counter ==>" + counter;
	get_pop_records = zoho.crm.getRecords("POP",counter,200);
		counter = counter + 1;
}
def spark_read_file(file_path,file_format,schema=None):
    input_data = (
        spark.read.format(file_format)
        # .option("basePath", base_path)
        .option("header", "true")
        .schema(schema)
        .load(f"{file_path}*")
    )
    return input_data
Aerial Yoga is a fun and effective way to build core strength, improve flexibility, and increase body awareness. At Rishikesh Yog Kendra, we offer a comprehensive 100-hour Aerial Yoga course in Rishikesh, India, designed for both beginners and experienced yoga practitioners.

This course introduces the fundamentals of aerial yoga, including how to safely perform and guide others through various poses using a hammock. Students will explore how to adapt postures for different body types, making the practice more inclusive and accessible.

The training covers essential topics such as safety techniques, foundational asanas, and how to create effective class sequences. Throughout the course, participants gain practical experience and in-depth knowledge of aerial yoga, allowing them to confidently teach or deepen their personal practice.

Whether you're new to aerial yoga or looking to expand your skills, this program provides a unique opportunity to learn in the heart of Rishikesh, surrounded by the natural beauty and spiritual energy of the Himalayas.
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":xero-day-white: What's on this week! :xero-day-white:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Hey Singapore! \n\nGet ready to celebrate *Xero Day* with us! \nThis week only, our Boost Day lunch is moving from Wednesday to Thursday to align with the global celebrations.\n\nCheck out how we are celebrating our *19th Birthday* below:"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-7: Monday, 7th July",
				"emoji": true
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:coffee:*Cafe Partnership:* Enjoy Cafe-style beverages with *Group Therapy Coffee.*\n\n :breakfast: *Breakfast*: Provided by *Group Therapy Cafe* from *8:30AM - 10:30AM* in the Kitchen.\n"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-10: Thursday, 10th July",
				"emoji": true
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:lunch: *Xero Day Lunch*: Provided by *Group Therapy Cafe* from *12PM - 1PM in the Kitchen*.\n\n:Partying_face: *Social Happy Hour:* Enjoy tasty bites and celebratory drinks, great tunes and a special *Guess Who - Xero Edition* quiz from *4:00PM - 5:30PM* in the Kitchen."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "plain_text",
				"text": "Stay tuned to this channel for your local updates, and jump into #xeroday25 for all the global fun throughout the week! \n\nLove,\n\nWX  :party-wx:  ",
				"emoji": true
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":xero-day-blue::birthday: Xero Day is Tomorrow! :birthday::xero-day-blue:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Hey Xeros,\nGet ready to celebrate because tomorrow is our *19th Birthday*!\n\nJoin us for a day filled with fun and festivities. Check out the awesome party plans below, and don't forget to rock your *Xero T-shirt*!:birthdaycake:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":xero-day-white: *What’s Happening in Melbourne on Xero Day?* :xero-day-white:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":breakfast: *Breakfast:* Kick off your Xero Day with a delicious Breakfast from *8:30am-10:30am* in the Wominjeka Breakout Space.\n\n:celebrate: *Social Happy Hour:* Keep the celebration going at our special Xero Day Social Happy Hour from *4 PM – 5:30 PM*! Join us for tasty bites, celebratory drinks, and fantastic tunes.\n\n:guesswho: *Games & Prizes:* Put your knowledge to the test with our *'Guess Who – Xero Edition'* quiz!\n"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":xero-love: *Xero Day - Office Etiquette Reminder* :xero-love:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "We're very excited for Xero's *19th Birthday* celebrations!\nWith all the excitement, our office will be busier than usual. To make the day fun and enjoyable for everyone here are a few helpful reminders:\n\n :dot-blue: *Wear* your ID at all times\n\n:dot-blue:*Pre-book your parking!* If your plans change, please cancel your booking to free up space. The car park will fill up fast so plan ahead. :parkable:\n\n:dot-blue:*Right size your meeting room bookings:* Consider using phone pods, flex zones, or breakout areas instead of booking a room.\n\n:dot-blue:*Tidy as you go!* Please wash your coffee cups, put rubbish in the bins and help with stacking/unstacking the dish sanitizers! \n\nStay tuned to this channel for more local updates and join the global party in *#xeroday25* so you don't miss a thing!  \nLove,\nWX :party-wx: :xero-love:"
			}
		},
		{
			"type": "divider"
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":xero-day-blue::birthday: Happy 19th Birthday Xero! :birthday::xero-day-blue:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Hey Xeros,\nToday's the day, it's time to celebrate like it's 2006! \n It’s time to celebrate *19* incredible years of Xero with fun, food, and connection across all our global offices! \n\nCheck out what's happening in Melbourne today! :green-partyhat:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":xero-day-white: *Melbourne's Party Plans* :xero-day-white:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":breakfast: *Breakfast:* Kick off your Xero Day with a delicious Breakfast from *8:30am-10:30am* in the Wominjeka Breakout Space.\n\n:celebrate: *Social Happy Hour:* Keep the celebration going at our special Xero Day Social Happy Hour from *4 PM – 5:30 PM*! Join us for tasty bites, celebratory drinks, and fantastic tunes.\n\n:guesswho: *Games & Prizes:* Put your knowledge to the test with our *'Guess Who – Xero Edition'* quiz!\n\n:movie_camera: Don't miss the awesome highlights from our Big Love to Small Business - Xero Day Edition!:heartss:and Recreate a Xero Memory connection activities, playing on the office screens throughout the day!"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":xero-love:  *Xero Day Reminders*  :xero-love:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "To make the day fun and enjoyable for everyone here are a few helpful reminders:\n\n :dot-blue: *Wear* your ID at all times\n\n:dot-blue:*Tidy as you go!* Please wash your coffee cups, put rubbish in the bins and help with stacking/unstacking the dish sanitizers!\n\n:dot-blue:*Return chairs & tables* to their usual spots after using.\n\n:dot-blue:*Have fun!* :party_wiggle:  \n\nStay tuned to this channel for more local updates and join the global party in *#xeroday25* so you don't miss a thing!  \nLove,\nWX :party-wx: :xero-love:"
			}
		},
		{
			"type": "divider"
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":xero-day-white: What's on this week! :xero-day-white:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Happy Monday Wellington! \n\nLet's kick off another great week with our Boost Program and Xero Day on *Thursday* to celebrate our *19th Birthday*! :celebrate:\n\nCheck out this week's exciting lineup: "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-8: Tuesday, 8th July",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:coffee: *Xero Café*: Café-style beverages and sweet treats.\n:clipboard: *Barista Special*: _Caramel Mocha Latte_.\n:breakfast: *Breakfast*: Provided by *Simply Food* from *8AM - 10AM* in the All Hands."
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-10: Thursday, 10th July",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:coffee: *Xero Café*: Café-style beverages and sweet treats.\n:clipboard: *Barista Special*: _Caramel Mocha Latte_.\n:lunch: *Xero Day Lunch*: Provided by *Food Envy* from *12PM* in the All Hands.\n:Partying_face:*Social Happy Hour:* Enjoy tasty bites and celebratory drinks, great tunes and a special *Guess Who - Xero Edition* quiz from *4:00PM - 5:30PM* on Level 3."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "plain_text",
				"text": "Stay tuned to this channel for your local updates, and jump into #xeroday25 for all the global fun throughout the week! \n\nLove,\n\nWX  :party-wx:  ",
				"emoji": true
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":xero-day-blue::birthday: Get Ready to Celebrate: Xero Day is Almost Here! :birthday::xero-day-blue:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Hey Xeros,\nGet ready to party! Our *19th Birthday* is just around the corner!\nMark your calendars for *Thursday, July 10th* because you won't want to miss what we have planned.  Keep an eye on this channel for what’s happening in Melbourne. :partying_face:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":xeros-connect: Xero Day falls under the umbrella of *Xeros Connect*, and what better way to kick things off than with a fun connection activity!"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":camera_with_flash: *Recreate A Xero Memory* :camera_with_flash:\nLet’s celebrate how far we’ve come by recreating your favourite Xero moment!\nThink back to those epic Xerocons, unforgettable End of Year Events, hilarious team offsites, or even that time your team (looking at you CX!) wore silly hats. :tophat:\nRecreate a memory solo or with your crew — the funnier, the better!"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Here’s how to join in:*\n 1. Find an old Xero photo (from any event or team moment).\n 2. Recreate the scene solo or with teammates. Match the outfit, pose, or vibe – but with a twist. \n 3. Post your recreated photo in the thread off this message in the *#XeroDay-25* Slack channel.\n\n*Include this in your thread:*\n:dot-blue: *Year:* [e.g., 2016]\n:dot-blue: *Event:* [e.g., XeroCon, End of Year Event]\n:dot-blue: *Caption:* [e.g., \"Still got it!\"]\n\n:movie_camera: These recreated memories will be featured in our global Xero Day slideshow!"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":xero-day-white: *What’s Happening in Melbourne on Xero Day?* :xero-day-white:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":lunch: Join us for *Breakfast* from *8:30am-10:30am* in the Wominjeka Breakout Space.\n:partying_face: Keep the celebration going at the *Social Happy Hour* from *4 PM – 5:30 PM*! \nEnjoy tasty bites, celebratory drinks, great tunes, and a special *'Guess Who – Xero Edition'* quiz!\n:tshirt: *Show Your Xero Pride!* Don’t forget to wear your Xero t-shirt!"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Let’s make Xero's *19th Birthday* a truly unforgettable one!\nLove,\nWX :party-wx: :xero-love:"
			}
		},
		{
			"type": "divider"
		}
	]
}
<script type="text/javascript">
// This will modify the first and 3rd addon items
// Get all elements with the class 'gz-memberapp-addonfeename'
const elements = document.querySelectorAll('.gz-memberapp-addonfeename');

// Replace the text content of the first instance
if (elements.length > 0) {
    elements[0].textContent = '$100'; // Replace with your desired text
}

// Replace the text content of the third instance
if (elements.length > 2) {
    elements[2].textContent = '$100'; // Replace with your desired text
}
</script>
<script type="text/javascript">
// WEB00000000
MNI.jQuery("#gzns span.gz-memberapp-addonfeename").text(function (_,txt) {
return txt.slice(0, -9);
});
</script>
string standalone.Test_Send_Mail_Merge(String pop_id)
{

	mail_merge_template = map();
	mail_merge_template.put("name", "POP Request Template");

	from_address = map();
	from_address.put("type", "email");
	from_address.put("value", zoho.loginuserid);

	to1 = map();
	to1.put("type", "email");
	to1.put("value", "muhammad.kaleem@leosops.com");
	
	to_address = list();
	to_address.add(to1);

	mail_merge_entry = map();
	mail_merge_entry.put("mail_merge_template", mail_merge_template);
	mail_merge_entry.put("from_address", from_address);
	mail_merge_entry.put("to_address", to_address);
	mail_merge_entry.put("subject", "POP Request Email Test");
	mail_merge_entry.put("type", "attachment");
	mail_merge_entry.put("attachment_name", "testdocument");
	mail_merge_entry.put("message", "POP Request Email Test");

	send_mail_merge = list();
	send_mail_merge.add(mail_merge_entry);

	input_payload = map();
	input_payload.put("send_mail_merge", send_mail_merge);
		SendEmail = invokeurl
	[
	url: "https://www.zohoapis.com/crm/v8/POP_Requests/"+pop_id+"/actions/send_mail_merge"
	type: POST
	parameters: input_payload.toString()
	connection:"mail_merge"
	];
	info SendEmail;

	return "";
}
import axios from "axios"; // or `const axios = require("axios")` for CommonJS

export async function sendWhatsAppTemplate(toPhoneE164, values) {
  const phoneNumberId = process.env.WHATSAPP_PHONE_NUMBER_ID;
  const accessToken = process.env.WHATSAPP_ACCESS_TOKEN;
  const url = `https://graph.facebook.com/v18.0/${phoneNumberId}/messages`;

  const headers = {
    Authorization: `Bearer ${accessToken}`,
    "Content-Type": "application/json",
  };

  const data = {
    messaging_product: "whatsapp",
    to: toPhoneE164,
    type: "template",
    template: {
      name: "logiyatra_tender_notification",
      language: {
        code: "hi",
      },
      components: [
        {
          type: "header",
          parameters: [
            {
              type: "image",
              image: {
                link: "https://i.postimg.cc/90J3tYDM/logourl.png",
              },
            },
          ],
        },
        {
          type: "body",
          parameters: [
            {
              type: "text",
              text: values.dispatch_location,
              parameter_name: "dispatch_location",
            },
            {
              type: "text",
              text: values.delivery_from,
              parameter_name: "delivery_from",
            },
            {
              type: "text",
              text: values.delivery_to,
              parameter_name: "delivery_to",
            },
            {
              type: "text",
              text: values.start_datetime,
              parameter_name: "start_datetime",
            },
            {
              type: "text",
              text: values.end_datetime,
              parameter_name: "end_datetime",
            },
          ],
        },
      ],
    },
  };
  try {  
    const response = await axios.post(url, data, { headers });
    return response.data;
  } catch (error) {
    console.error(
      "❌ Failed to send WhatsApp template:",
      error.response?.data || error.message
    );
  }
}
sudo rm -rf ~/Library/Developer/CommandLineTools/
sudo rm -rf ~/Library/Developer/Xcode/
sudo rm -rf ~/Library/Application Support/Xcode
sudo rm -rf ~/Library/Caches/com.apple.dt.Xcode
sudo rm -rf ~/Library/Preferences/com.apple.dt.Xcode.plist
sudo rm -rf /Library/Preferences/com.apple.dt.Xcode.plist
sudo rm -rf /Applications/Xcode.app
sudo /Developer/Library/uninstall-devtools --mode=all
\author{
  \IEEEauthorblockN{Hrittik Raj Barua}
  \IEEEauthorblockA{\textit{Department of Electrical and Electronic Engineering} \\
    \textit{University of Science and Technology Chittagong}\\
    Chittagong, Bangladesh \\
    hrittik.rb2000@yahoo.com}
  \and
  \IEEEauthorblockN{Mohammad Mainul Hasan}
  \IEEEauthorblockA{\textit{Department of Electrical and Electronic Engineering} \\
    \textit{University of Science and Technology Chittagong}\\
    Chittagong, Bangladesh \\
    mainulhasan@ustc.ac.bd}
  \and
  \IEEEauthorblockN{Imtiaz Akber Chowdhury}
  \IEEEauthorblockA{\textit{Department of Electrical and Electronic Engineering} \\
    \textit{University of Science and Technology Chittagong}\\
    Chittagong, Bangladesh \\
    eee.imtiazakber@ustc.ac.bd}
  %\linebreakand % <------------- \and with a line-break
  \and
  \IEEEauthorblockN{Arpan Dey}
  \IEEEauthorblockA{\textit{Department of Electrical and Electronic Engineering} \\
    \textit{University of Science and Technology Chittagong}\\
    Chittagong, Bangladesh \\
    arpande.official@yahoo.com}
  \and
  \IEEEauthorblockN{Tridib Banik}
  \IEEEauthorblockA{\textit{Department of Computer Science \& Engineering} \\
    \textit{Assam Downtown University}\\
    Assam, India \\
    Tridibbanik34@gmail.com}
  \and
  \IEEEauthorblockN{Mohammad Rakibul Hoque Khan}
  \IEEEauthorblockA{\textit{Department of Electronics \& Telecommunications Engineering} \\
    \textit{International Islamic University Chittagong}\\
    Chittagong, Bangladesh \\
    rakibulhoquekhan@gmail.com}
}
\documentclass[conference]{IEEEtran}

\title{A title}

\makeatletter
\newcommand{\linebreakand}{%
  \end{@IEEEauthorhalign}
  \hfill\mbox{}\par
  \mbox{}\hfill\begin{@IEEEauthorhalign}
}
\makeatother

\author{
  \IEEEauthorblockN{1\textsuperscript{st} Given Name Surname}
  \IEEEauthorblockA{\textit{dept. name of organization (of Aff.)} \\
    \textit{name of organization (of Aff.)}\\
    City, Country \\
    email address}
  \and
  \IEEEauthorblockN{2\textsuperscript{nd} Given Name Surname}
  \IEEEauthorblockA{\textit{dept. name of organization (of Aff.)} \\
    \textit{name of organization (of Aff.)}\\
    City, Country \\
    email address}
  \and
  \IEEEauthorblockN{3\textsuperscript{rd} Given Name Surname}
  \IEEEauthorblockA{\textit{dept. name of organization (of Aff.)} \\
    \textit{name of organization (of Aff.)}\\
    City, Country \\
    email address}
  \linebreakand % <------------- \and with a line-break
  \IEEEauthorblockN{4\textsuperscript{th} Given Name Surname}
  \IEEEauthorblockA{\textit{dept. name of organization (of Aff.)} \\
    \textit{name of organization (of Aff.)}\\
    City, Country \\
    email address}
  \and
  \IEEEauthorblockN{5\textsuperscript{th} Given Name Surname}
  \IEEEauthorblockA{\textit{dept. name of organization (of Aff.)} \\
    \textit{name of organization (of Aff.)}\\
    City, Country \\
    email address}
}

\begin{document}

\maketitle

\end{document}
LINK
//https://help.zoho.com/portal/en/community/topic/get-a-list-of-date-in-zoho-analytics-database-query

For example,
 2009-01-01 
 2009-01-02 
 2009-01-03
 2009-01-04 
 2009-01-05
 2009-01-06
 2009-01-07
 2009-01-08 
 2009-01-09
 2009-01-10
 2009-01-11
 2009-01-12
 2009-01-13


Step1: Create 3 tables as below.
* Year - Add entries for year as a column (Eg 2009,2010,,,,2020) as number column
* Month  Add entries of 12 months (01,02,03....12) as plain text column
* Day -  Add entries of 31 dayss (01,02,03....31) as plain text column  

Step 2: Create a Query Table with the below query.

SELECT date(str_to_date(concat("Year"."Year", '-', "Month"."Month", '-', "Day"."Day"), '%Y-%m-%d')) as "Date"
FROM "Year",
"Month",
"Day"
WHERE (("Year" % 400 = 0
OR ("Year" % 100 != 0
AND "Year" % 4 = 0))
AND date_format(date(str_to_date(concat("Year"."Year", '-', "Month"."Month", '-', "Day"."Day"), '%Y-%m-%d')), '%m%d') not in ( '0230' , '0231' , '0431' , '0631' , '0931' , '1131' ))
OR (("Year" % 4 != 0
OR ("Year" % 100 = 0
AND "Year" % 400 != 0))
AND date_format(date(str_to_date(concat("Year"."Year", '-', "Month"."Month", '-', "Day"."Day"), '%Y-%m-%d')), '%m%d') not in ( '0229' , '0230' , '0231' , '0431' , '0631' , '0931' , '1131' ))


{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":x-connect: Boost Days: What's on in Melbourne this week! :x-connect:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n\n Hey Melbourne, happy Monday! \n\n Please see below for what's on this week as there is a change to the Boost Programme. "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Xero Café :coffee:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n :new-thing: *This week we are offering:* \n\n :caramel-slice: Classic Slices \n\n :coffee: *Weekly Café Special*: Butterscotch Latte"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": " Monday, 31st June :calendar-date-31:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": " :suit-up: *Wear your suit to work Day* - In Honour of the long-standing tradition in Australia :australia: Today we encourage you to come dressed in your sharpest suit or corporate attire. The nod that the old- school accountant and bookeeping dress policy our partners would have worn back in the day! \n\n *10.30am*: Photo time in the Breakout Space followed by morning tea :croissant:  "
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": " Wednesday, 2nd July :calendar-date-2:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":breakfast: *Breakfast*: from *8:30am - 10:30am* in the Level 3 Breakout Space. "
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Thursday, 3rd July :calendar-date-3: \n ",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "plain_text",
				"text": " :Lunch: 12.00pm - Greek themed Lunch in the breakout Space on L-3. Menu in the :thread: \n :HANDS: 12.30pm - Please join us for the Australia All Hands screening in the breakout space on Level 3. ",
				"emoji": true
			}
		},
		{
			"type": "divider"
		}
	]
}
star

Fri Jun 27 2025 11:18:52 GMT+0000 (Coordinated Universal Time)

@usman13

star

Fri Jun 27 2025 07:02:08 GMT+0000 (Coordinated Universal Time)

@Peaky ##pagination ##zoho ##crm ##zohocrm ##zoho_crm ##deluge

star

Fri Jun 27 2025 06:31:56 GMT+0000 (Coordinated Universal Time)

@usman13

star

Fri Jun 27 2025 06:26:02 GMT+0000 (Coordinated Universal Time) https://www.trioangle.com/kucoin-clone-script/

@aaronjeffrey

star

Fri Jun 27 2025 06:24:08 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Fri Jun 27 2025 06:19:19 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Fri Jun 27 2025 06:17:39 GMT+0000 (Coordinated Universal Time) https://www.trioangle.com/coinbase-clone/

@aaronjeffrey

star

Fri Jun 27 2025 06:03:48 GMT+0000 (Coordinated Universal Time) https://www.addustechnologies.com/1inch-exchange-clone-script

@Seraphina

star

Fri Jun 27 2025 05:59:13 GMT+0000 (Coordinated Universal Time) https://www.trioangle.com/binance-clone/

@aaronjeffrey

star

Thu Jun 26 2025 19:41:55 GMT+0000 (Coordinated Universal Time)

@marcopinero #bash

star

Thu Jun 26 2025 19:26:35 GMT+0000 (Coordinated Universal Time)

@Muhammad_Waqar

star

Thu Jun 26 2025 19:20:15 GMT+0000 (Coordinated Universal Time)

@Muhammad_Waqar

star

Thu Jun 26 2025 19:14:16 GMT+0000 (Coordinated Universal Time)

@Muhammad_Waqar

star

Thu Jun 26 2025 19:03:23 GMT+0000 (Coordinated Universal Time)

@AKAMAY001

star

Thu Jun 26 2025 13:03:44 GMT+0000 (Coordinated Universal Time)

@usman13

star

Thu Jun 26 2025 12:31:56 GMT+0000 (Coordinated Universal Time) https://www.alwin.io/asset-tokenization-platform-development

@tessa #assettokenizationplatformdevelopment #assettokenizationplatformdevelopmentcompany #assettokenizationplatform #assettokenization

star

Thu Jun 26 2025 12:17:59 GMT+0000 (Coordinated Universal Time)

@usman13

star

Thu Jun 26 2025 10:34:15 GMT+0000 (Coordinated Universal Time)

@Saravana_Kumar #python

star

Thu Jun 26 2025 09:30:24 GMT+0000 (Coordinated Universal Time)

@usman13

star

Thu Jun 26 2025 09:26:24 GMT+0000 (Coordinated Universal Time)

@Peaky ##pagination ##zoho ##crm ##zohocrm ##zoho_crm ##deluge

star

Thu Jun 26 2025 07:58:40 GMT+0000 (Coordinated Universal Time)

@Saravana_Kumar #python

star

Thu Jun 26 2025 07:24:00 GMT+0000 (Coordinated Universal Time) https://www.trioangle.com/binance-clone/

@aaronjeffrey #binance clone #binanceclone script #binance

star

Thu Jun 26 2025 07:16:59 GMT+0000 (Coordinated Universal Time) https://officekhoj.com/property/zygon-square-sector-63-2259-sqft

@officekhoj

star

Thu Jun 26 2025 06:57:53 GMT+0000 (Coordinated Universal Time) https://www.trioangle.com/remitano-clone/

@aaronjeffrey #remitano-clone #clone #remitano

star

Thu Jun 26 2025 06:27:03 GMT+0000 (Coordinated Universal Time) https://www.trioangle.com/copy-trading-clone-script/

@aaronjeffrey #copytrading #copytradingclone #clonescript

star

Thu Jun 26 2025 04:49:05 GMT+0000 (Coordinated Universal Time)

@rishikeshyog14

star

Thu Jun 26 2025 02:22:26 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Thu Jun 26 2025 02:21:05 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Thu Jun 26 2025 02:17:59 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Thu Jun 26 2025 01:25:39 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Wed Jun 25 2025 21:55:49 GMT+0000 (Coordinated Universal Time)

@philipwhuff

star

Wed Jun 25 2025 21:49:34 GMT+0000 (Coordinated Universal Time)

@philipwhuff

star

Wed Jun 25 2025 11:17:07 GMT+0000 (Coordinated Universal Time)

@usman13

star

Wed Jun 25 2025 10:56:06 GMT+0000 (Coordinated Universal Time) https://www.fourchain.com/nfts/opensea-clone

@johndravid #openseaclone #nft

star

Wed Jun 25 2025 09:14:47 GMT+0000 (Coordinated Universal Time) https://www.trioangle.com/binance-clone/

@aaronjeffrey

star

Wed Jun 25 2025 08:50:45 GMT+0000 (Coordinated Universal Time) https://www.trioangle.com/kucoin-clone-script/

@aaronjeffrey

star

Wed Jun 25 2025 07:26:18 GMT+0000 (Coordinated Universal Time) https://www.achieversit.com/fullstack-training-course-institute-in-bangalore

@achieversait

star

Wed Jun 25 2025 07:13:26 GMT+0000 (Coordinated Universal Time) https://www.trioangle.com/coinbase-clone/

@aaronjeffrey ##coin ##crypto

star

Wed Jun 25 2025 06:25:37 GMT+0000 (Coordinated Universal Time)

@Peaky

star

Wed Jun 25 2025 05:47:22 GMT+0000 (Coordinated Universal Time)

@Rishi1808

star

Tue Jun 24 2025 17:49:07 GMT+0000 (Coordinated Universal Time) https://www.spyhunter.com/shm/uninstall-xcode-mac/

@hmboyd

star

Tue Jun 24 2025 17:48:50 GMT+0000 (Coordinated Universal Time) https://www.spyhunter.com/shm/uninstall-xcode-mac/

@hmboyd

star

Tue Jun 24 2025 17:48:38 GMT+0000 (Coordinated Universal Time) https://www.spyhunter.com/shm/uninstall-xcode-mac/

@hmboyd

star

Tue Jun 24 2025 17:48:30 GMT+0000 (Coordinated Universal Time) https://www.spyhunter.com/shm/uninstall-xcode-mac/

@hmboyd

star

Tue Jun 24 2025 17:08:27 GMT+0000 (Coordinated Universal Time)

@MainulHasan #latex

star

Tue Jun 24 2025 16:53:54 GMT+0000 (Coordinated Universal Time) https://tex.stackexchange.com/questions/410274/centring-authors-in-ieeeconf

@MainulHasan #latex

star

Tue Jun 24 2025 15:28:51 GMT+0000 (Coordinated Universal Time)

@RehmatAli2024 #sql

star

Tue Jun 24 2025 09:52:28 GMT+0000 (Coordinated Universal Time)

@FOHWellington

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension