private void lkForFacility_EditValueChanged(object sender, EventArgs e)
        {
            if (lkForFacility.EditValue == null)
                return;
            FacilityChanged(lkForFacility);

            Institution ru = new Institution();
            ru.LoadByPrimaryKey(Convert.ToInt32(lkForFacility.EditValue));

            if (!ru.IsColumnNull("Woreda"))
            {
                BLL.Woreda woreda = new BLL.Woreda();
                woreda.LoadByPrimaryKey(ru.Woreda);

                BLL.Zone zone = new BLL.Zone();
                zone.LoadByPrimaryKey(woreda.ZoneID);

                lkRegion.EditValue = zone.RegionId;
                lkZone.EditValue = zone.ID;
                lkWoreda.EditValue = ru.Woreda;

            }

            lkOwnership.EditValue = ru.Ownership;

            lkType.EditValue = ru.RUType;

            //Fill facility visit history
            DataRow facilityHis = BLL.Issue.GetVisitHistoryForFacility((int)lkForFacility.EditValue);
            NoOfVisitLabel.Text = facilityHis != null ? Convert.ToInt32(facilityHis["VisitCount"]).ToString(CultureInfo.InvariantCulture) : "0";
            LastVisitlabel.Text = facilityHis != null ? Convert.ToDateTime(facilityHis["LastVisit"]).TimeAgo() : "Never";

            //Reset Requisitoin Type
            if(!BLL.Settings.IsCenter && OrderID == null && Type == RequisitionType.History) lkRequisitionType_EditValueChanged(null, null);
        }
        /// <summary>
        /// Handles double click event of the location tree
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void locationTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            BLL.Region rgn = new BLL.Region();
            Zone zon = new Zone();
            Woreda wrd = new Woreda();
            string value = locationTree.SelectedNode.Name;
            string type = value.Substring(0, 3);
            int len = value.Length - 3;
            int locationId = Convert.ToInt32(value.Substring(3, len));
            if (type == "Reg")
            {
                rgn.LoadByPrimaryKey(locationId);
                cboRegion.SelectedValue = rgn.ID.ToString();
                txtCode.Text = rgn.RegionCode;
                cboWoreda.Enabled = false;
                cboZone.Enabled = false;
                cboRegion.Enabled = true;
                _locId = rgn.ID;
            }
            else if (type == "Zon")
            {
                zon.LoadByPrimaryKey(locationId);
                cboZone.SelectedValue = zon.ID.ToString();
                txtCode.Text = zon.ZoneCode;
                cboRegion.SelectedValue = zon.RegionId.ToString();
                cboWoreda.Enabled = false;
                cboRegion.Enabled = true;
                cboZone.Enabled = true;
                _locId = zon.ID;
            }
            else if (type == "Wrd")
            {
                wrd.LoadByPrimaryKey(locationId);
                cboWoreda.SelectedValue = wrd.ID.ToString();
                txtCode.Text = wrd.WoredaCode;
                cboZone.SelectedValue = wrd.ZoneID.ToString();
                zon.LoadByPrimaryKey(wrd.ZoneID);
                cboRegion.SelectedValue = zon.RegionId.ToString();
                cboWoreda.Enabled = true;
                cboRegion.Enabled = true;
                cboZone.Enabled = true;
                _locId = wrd.ID;

            }
            _locationType = type;
        }
        private void ReceivingUnitsDetails_Load(object sender, EventArgs e)
        {
            LoadReceivingUnits();

            if (ID != -1)
            {

                lcExistingInstitutions.Visibility = LayoutVisibility.Never;
                lcIsUsedInFacility.Visibility = LayoutVisibility.Always;

                int selected = ID;
                Institution recUnit = new Institution();
                recUnit.LoadByPrimaryKey(selected);
                txtReceivingUnit.Text = recUnit.IsColumnNull("Name") ? "" : recUnit.Name;;
                txtReceivingUnit.Enabled = false;
                txtDescription.Text = recUnit.IsColumnNull("Description") ? "" : recUnit.Description;
                txtPhone.Text = recUnit.IsColumnNull("Phone") ? "" : recUnit.Phone;

                if (!recUnit.IsColumnNull("Ownership"))
                    lkOwnership.EditValue = recUnit.Ownership;
                if (!recUnit.IsColumnNull("RUType"))
                    lkRUType.EditValue = recUnit.RUType;
                txtLicenseNo.Text = recUnit.IsColumnNull("LicenseNo") ? "" : recUnit.LicenseNo;
                txtVATNo.Text = recUnit.IsColumnNull("VATNo") ? "" : recUnit.VATNo;
                txtTinNo.Text = recUnit.IsColumnNull("TinNo") ? "" : recUnit.TinNo;

                chkIsInstitutionUsedAtFacility.Checked = recUnit.IsColumnNull("IsUsedAtFacility") ? false : recUnit.IsUsedAtFacility;
                dtRegistration.Value = recUnit.IsColumnNull("DateOfRegistration") ? DateTimeHelper.ServerDateTime : recUnit.DateOfRegistration;
                if (!recUnit.IsColumnNull("Woreda"))
                {
                    BLL.Woreda woreda = new Woreda();
                    woreda.LoadByPrimaryKey(recUnit.Woreda);

                    BLL.Zone zone = new Zone();
                    zone.LoadByPrimaryKey(woreda.ZoneID);

                    BLL.Region region = new BLL.Region();
                    region.LoadByPrimaryKey(zone.RegionId);

                    lkRegion.EditValue = region.ID;

                    lkZone.Properties.DataSource = BLL.Zone.GetZoneByRegion(region.ID).DefaultView;
                    lkZone.EditValue = zone.ID;

                    Woreda.GetWoredaByZone(zone.ID);
                    lkWoreda.Properties.DataSource = woreda.DefaultView;
                    lkWoreda.EditValue = recUnit.Woreda;
                }
                else if (!recUnit.IsColumnNull("Zone")) //We allow the Woreda to be empty so, let's check the zone now.
                {
                    BLL.Zone zone = new Zone();
                    zone.LoadByPrimaryKey(recUnit.Zone);

                    BLL.Region region = new BLL.Region();
                    region.LoadByPrimaryKey(zone.RegionId);

                    lkRegion.EditValue = region.ID;

                    lkZone.Properties.DataSource = BLL.Zone.GetZoneByRegion(region.ID).DefaultView;
                    lkZone.EditValue = zone.ID;
                }
                else
                {
                    lkRegion.EditValue = null;
                    lkZone.EditValue = null;
                    lkWoreda.EditValue = null;
                }

                Route r = new Route();
                r.LoadAll();
                lkRoute.Properties.DataSource = r.DefaultView;

                lkRoute.EditValue = (recUnit.IsColumnNull("Route")) ? 0 : recUnit.Route;
                receivingUnitId = recUnit.ID;

                bool isItDraft = !recUnit.IsColumnNull("IsDraft") && recUnit.IsDraft &&
                                 (BLL.Order.GetTotalForAnInstitution(recUnit.ID) == 0);

                lkRegion.Enabled = isItDraft;
                lkZone.Enabled = isItDraft;
                lkWoreda.Enabled = isItDraft;
                lkRUType.Enabled = isItDraft;
                lkOwnership.Enabled = isItDraft;
                txtReceivingUnit.Enabled = isItDraft;

            }
            else
            {
                lcExistingInstitutions.Visibility=LayoutVisibility.Always;
                lcIsUsedInFacility.Visibility = LayoutVisibility.Never;
            }
        }
        /// <summary>
        /// Save location related information
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSaveLocation_Click(object sender, EventArgs e)
        {
            if (_locationType == "Reg")
            {
                BLL.Region reg = new BLL.Region();
                if (_locId != 0)
                    reg.LoadByPrimaryKey(_locId);
                else
                    reg.AddNew();
                reg.RegionName = cboRegion.Text;
                reg.RegionCode = txtCode.Text;
                reg.Save();

            }
            else if (_locationType == "Zon")
            {
                Zone zn = new Zone();
                if (_locId != 0)
                    zn.LoadByPrimaryKey(_locId);
                else
                    zn.AddNew();
                zn.ZoneName = cboZone.Text;
                zn.RegionId = Convert.ToInt32(cboRegion.SelectedValue);
                zn.ZoneCode = txtCode.Text;
                zn.Save();
            }
            else if (_locationType == "Wrd")
            {
                Woreda wrd = new Woreda();
                if (_locId != 0)
                    wrd.LoadByPrimaryKey(_locId);
                else
                    wrd.AddNew();
                wrd.WoredaName = cboWoreda.Text;
                wrd.ZoneID = Convert.ToInt32(cboZone.SelectedValue);
                wrd.WoredaCode = txtCode.Text;
                wrd.Save();
            }
            PopulateLocationTree();
        }