private bool action(string act)
        {
            try
            {
                if (act != "insert")
                {
                    string currentNik = dc.Passengers.First(i => i.Id == Convert.ToInt32(lbIdValue.Text)).NIK;
                    string Nik = tbNik.Text.Trim();

                    if (currentNik != Nik)
                    {
                        if (dc.Passengers.First(i => i.NIK == Nik) != null)
                        {
                            MessageBox.Show("NIK already taken", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return false;
                        }
                    }
                }
                using (TransactionScope ts = new TransactionScope())
                {
                    psngr = act == "insert" ? new Passenger() : dc.Passengers.FirstOrDefault(id => id.Id == Convert.ToInt32(lbIdValue.Text));
                    psngr.NIK = tbNik.Text.Trim();
                    psngr.FirstName = tbFirstName.Text.Trim();
                    psngr.LastName = tbLastName.Text.Trim();
                    psngr.Birthday = DateTime.ParseExact(dtpBirthday.Value.ToString("yyyy-MM-dd"), "yyyy-MM-dd", CultureInfo.InvariantCulture);
                    psngr.IdGender = Convert.ToInt32(cbGender.SelectedValue);
                    psngr.Address = rtbAddress.Text.Trim();
                    psngr.Town = tbTown.Text.Trim();
                    psngr.PostCode = String.IsNullOrEmpty(tbPostCode.Text.Trim()) ? null : tbPostCode.Text.Trim();
                    psngr.Phone = String.IsNullOrEmpty(tbPhone.Text.Trim()) ? null : tbPostCode.Text.Trim();
                    if (act == "insert")
                        dc.Passengers.InsertOnSubmit(psngr);
                    dc.SubmitChanges();
                    ts.Complete();
                    if (act != "insert")
                    {
                        lbIdValue.Text = "";
                        lbIdValue.Visible = false;
                        lbID.Visible = false;
                        bCancel.Visible = false;
                    }
                    tbNik.ResetText();
                    tbFirstName.ResetText();
                    tbLastName.ResetText();
                    cbGender.SelectedIndex = -1;
                    dtpBirthday.Value = DateTime.Parse(DateTime.Now.ToString("yyyy/MM/dd"));
                    rtbAddress.ResetText();
                    tbTown.ResetText();
                    tbPostCode.ResetText();
                    tbPhone.ResetText();
                    return true;
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                return false;
            }
        }
        private bool DeletePassenger()
        {
            DialogResult dr = MessageBox.Show("Are you sure to delete this Ticket Type ?", Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if (dr == DialogResult.Yes)
            {
                try
                {
                    psngr = dc.Passengers.FirstOrDefault(x => x.Id == Convert.ToInt32(dgPassenger.CurrentRow.Cells[0].Value));
                    using (TransactionScope ts = new TransactionScope())
                    {
                        if (psngr != null)
                        {
                            dc.Passengers.DeleteOnSubmit(psngr);
                            dc.SubmitChanges();
                            ts.Complete();
                            return true;
                        }
                        else
                        {
                            return false;
                        }

                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
 partial void DeletePassenger(Passenger instance);
 partial void UpdatePassenger(Passenger instance);
 partial void InsertPassenger(Passenger instance);
		private void detach_Passengers(Passenger entity)
		{
			this.SendPropertyChanging();
			entity.GenderList = null;
		}