Stop Workplace Harassment in India

670px-Deal-with-Workplace-Bullying-and-Harassment-Step-5
6 of 8 people in India go through workplace harassment without knowing they are being harassed. Wanted to share this important piece of advice for wellbeing of employees as well as employers.

To employers- you don’t owe your employees, they just work for money and cause they trust in you.

To employees- Know your rights, be aware. Even if you make mistakes no employer/boss has right to harass you.

Labour inspector from the Labour Department are employed for the well-being of the employee issues and there is no fee as such. Following are some common example of workplace harassment:

  • Dispersion of malevolent and untrue rumours, scandal or innuendo at the workplace. Isolating an individual socially and professionally in the office.
  • Threatening a person or dominating him/her unfairly.
  • Deliberately discouraging one or hindering his/her job.
  • Physical abuse or intimidating someone with abusive languages.
  • Eliminating one from his roles and responsibilities without any reason.
  • Altering instructions and guidelines constantly.
  • Imposing unrealistic deadlines intentionally to make an individual fail.
  • Holding back important information or tenaciously providing wrong information.
  • Cracking offensive jokes verbally or in written, especially in front of or about female colleagues.
  • Sneaking into someone’s personal life, spying or pestering him/her.
  • Causing unnecessary pressure on a particular person by assigning heavy workload when others are free.
  • Making on sit idle without any work which is also a way to create mental pressure on a worker. Often companies take this way to make their employees surrender for voluntary retirement schemes.
  • Screaming or showing vulgarity to an employee.
  • Intentionally and unreasonably criticizing an individual on regular basis.
  • Ridiculing one’s opinions. Unjustifiable punishment for trifles.
  • Holding back deserved leaves, promotions and training.
  • Blocking applications for training, leave or promotion.
  • Meddling with one’s personal belongings behind his/her back.

When any of the above happens to an individual, it indicates that he/she is falling prey to employee harassment. Be it the employer or co-workers, there are legal terms via which the offenders can be punished.

Indian constitution guarantees gender, racial and religious equality as the Fundamental Right’ of the residents of the country in Part III, Articles- 14, 15, 16 which implies for the workplace as well. Hence one faces discrimination by the employer because of his/her race, complexion, gender, caste or origin; he/she can immediately seek legal advice by consulting with a lawyer.  The ‘Directive Principles of State Policies’ of Part IV encompasses the cultural and socio-economic rights of Indian citizens.

Image credits- www.wikihow.com

Android 6.0 to be named Milkshake, Muffin or Marshmallow?

Almost everybody expected Android 4.4 to be called ‘Key Lime Pie’ to be in mouth watering alphabetical sequence of world’s most popular smartphone OS. There were also rumours that next release of Android will be named ‘Kaju Katli’, which is most sought after Indian sweet, but Google named it Kitkat. Next and latest was ‘Lollipop’. Here’s mouth watering alphabetical sequence that Google followed-

Cupcake (1.5)
Donut (1.6)
Eclair (2.0-2.1)
Froyo (2.2-2.3)
Gingerbread (2.3-2.3.7)
Honeycomb (3.0-3.2)
Ice Cream Sandwich (4.0-4.0.2)
Jelly Bean (4.1-4.2.2)
Kitkat (4.4)
Lollipop (5.0+)
Milkshake? (Next release)

What will Android M be called? ‘Milkshake’, ‘Muffin’ or ‘Marshmallow’? Comment your point of view.

Cordova calendar plugin for Windows Phone 8

If you worked with Cordova/Phonegap and came across calendar plugin for Windows Phone 8 you must be knowing that Windows Phone 8 does not support calendar plugin officially and there is no plugin in Cordova plugin registry. As a workaround I wrote native plugin to add appointments to device calendar and thought to share it with my readers in quickie blog. 🙂

Create a new cs file in plugins directory named AddCalendarEvents.cs and add following code-

using Microsoft.Phone.Tasks;
using Microsoft.Phone.UserData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using WPCordovaClassLib.Cordova;
using WPCordovaClassLib.Cordova.Commands;
using WPCordovaClassLib.Cordova.JSON;

namespace Cordova.Extension.Commands {
	public class AddCalendarEvents: BaseCommand {
		public void addCalendarEvents(String str) {
			string[] calendarValues = str.Split('|');

			SaveAppointmentTask saveAppointmentTask = new SaveAppointmentTask();

			int appointmentYear = Int32.Parse(calendarValues[3]);
			int appointmentMonth = Int32.Parse(calendarValues[4]);
			int appointmentDate = Int32.Parse(calendarValues[5]);
			float appointmentTime = float.Parse(calendarValues[6]);

			DateTime scheduleApptDateStart = (new DateTime(appointmentYear, appointmentMonth, appointmentDate, 7, 0, 0)).AddHours(appointmentTime);
			DateTime scheduleApptDateEnd = (new DateTime(appointmentYear, appointmentMonth, appointmentDate, 7, 30, 0)).AddHours(appointmentTime);
			saveAppointmentTask.StartTime = scheduleApptDateStart;
			saveAppointmentTask.EndTime = scheduleApptDateEnd;
			saveAppointmentTask.Subject = calendarValues[1];
			saveAppointmentTask.Location = calendarValues[2];
			saveAppointmentTask.Details = "";
			saveAppointmentTask.IsAllDayEvent = false;
			saveAppointmentTask.Reminder = Reminder.FifteenMinutes;
			saveAppointmentTask.AppointmentStatus = Microsoft.Phone.UserData.AppointmentStatus.Busy;
			saveAppointmentTask.Show();
		}

		public void getCalendarEventData(String str) {
			ButtonAppointments_Click();
		}

		private void ButtonAppointments_Click() {
			Appointments appts = new Appointments();

			//Identify the method that runs after the asynchronous search completes.
			appts.SearchCompleted += new EventHandler < AppointmentsSearchEventArgs > (Appointments_SearchCompleted);

			DateTime start = DateTime.Now;
			DateTime end = start.AddDays(7);
			int max = 20;

			//Start the asynchronous search.
			appts.SearchAsync(start, end, max, "Appointments Test #1");
		}

		void Appointments_SearchCompleted(object sender, AppointmentsSearchEventArgs e) {
			//Do something with the results.
			//MessageBox.Show(e.Results.Count().ToString());
			try {
				e.Results.ToList();
				MessageBox.Show("Success");
			} catch (System.Exception) {}

		}
	}
}

Refer plugin in config.xml-

<feature name="AddCalendarEvents">
        <param name="wp-package" value="AddCalendarEvents" />
        <param name="onload" value="true" />
    </feature>

 

If you have basic knowledge of Cordova it should not be tough.

You can call it using

var inputCalendarString = notes + '|' + title + '|' + location + '|' + appointmentDate.getFullYear() + '|' + (appointmentDate.getMonth() + 1) + '|' + appointmentDate.getDate() + '|' + '1.0' + '|' + ' ';
cordova.exec(null, null, "AddCalendarEvents", "addCalendarEvents", inputCalendarString);

It works for one event but if you have loop of events it will not work. To support multiple events, you can maintain Localstorage flag & data with current index of events data. Use resume callback to add rest of the events using custom appointment plugin that you wrote. Each time your app resumes you increment index and add events data from next index.

document.addEventListener('resume', this.resumeApp, false)
resumeApp: function () {
if (localStorage.getItem('updatecalendar') == 'false') {
syncUpdatedCalendarWP8();
      }
}

Happy Coding!