protected override ICollection <Domain.Client> GetData()
        {
            ICollection <Domain.Client> clients = new Collection <Domain.Client>();
            var dbClients = new BLL.Institution();

            dbClients.LoadAll();
            while (!dbClients.EOF)
            {
                clients.Add(new Domain.Client {
                    ClientID = dbClients.ID, ClientName = dbClients.Name, Woreda = dbClients.WoredaName, Zone = dbClients.ZoneName, Region = dbClients.RegionName, InstitutionType = dbClients.InstitutionTypeName
                });
                dbClients.MoveNext();
            }
            return(clients);
        }
        /// <summary>
        /// Gets the issues by receiving unit faster.
        /// </summary>
        /// <param name="storeID">The store ID.</param>
        /// <param name="routeID">The route ID.</param>
        /// <param name="type">The type.</param>
        /// <returns></returns>
        /// Shit: what a name? and it does crazy stuff too.
        public DataTable GetIssuesByReceivingUnitFaster(int storeID, int routeID, int type)
        {
            var ru = new Institution();

            if (Settings.IsRdfMode)
                ru.GetFacilitiesThatEverReceivedItems();
            else
                ru.GetAllUnderRoute(routeID);

            //Load all the items.
            var query = HCMIS.Repository.Queries.Item.SelectGetIssuesByReceivingUnitFaster(type);
            this.LoadFromRawSql(query);

            //Add the columns
            while (!ru.EOF)
            {
                this.AddColumn(string.Format("{0},{1}", ru.Name, ru.ID), typeof(int));
                ru.MoveNext();
            }

            while (!this.EOF)
            {
                Institution rus = new Institution();
                if (Settings.IsRdfMode)
                    rus.GetFacilitiesThatEverReceivedItems();
                else
                    rus.GetAllUnderRoute(routeID);

                while (!rus.EOF)
                {
                    int itemID = int.Parse(this.GetColumn("ID").ToString());

                    var itm = new Item();
                    var issueQuery = HCMIS.Repository.Queries.Item.SelectGetIssuesByReceivingUnitFasterIssueQuery(itemID, rus.ID);
                    itm.LoadFromRawSql(issueQuery);

                    if (itm.RowCount > 0 && !itm.IsColumnNull("Quantity"))
                        this.SetColumn(string.Format("{0},{1}", ru.Name, ru.ID), itm.GetColumn("Quantity"));
                    rus.MoveNext();

                }
                this.MoveNext();

            }
            return this.DataTable;
        }
        public DataTable GetIssuesByReceivingUnit(int storeId, int routeId, int type, DateTime sdate, DateTime edate,int storeid)
        {
            //This function does not look efficient.
            var rus = new Institution();
            rus.LoadAll();
            rus.GetAllUnderRoute(routeId);

            string theFrom = "";
            int i = 0;
            while (!rus.EOF)
            {
                theFrom += HCMIS.Repository.Queries.Item.GetFromClauseFor_GetIssueByReceivingUnitsFilterByDateRange(rus.ID, i,sdate,edate, storeid);
                i++;
                rus.MoveNext();
            }
            string select = "";
            rus.Rewind();
            for (int j = 0; j < i; j++)
            {
                select = HCMIS.Repository.Queries.Item.GetSelectClauseFor_GetIssueByReceivingUnits(select, rus.Name, j);
                rus.MoveNext();
            }
            var query = HCMIS.Repository.Queries.Item.SelectGetIssuesByReceivingUnit(type, select, theFrom);
            Item ite =new Item();
            ite.LoadFromRawSql(query);
            return ite.DataTable;
        }