private void fGrid_CurRowChanged(object sender, EventArgs e)
 {
     //check if pastor is selected
     if (fGrid.CurCell == null || fGrid.CurCell.Row.Type == iGRowType.AutoGroupRow)
     {
         label1.Text = string.Empty;
         fGrid2.Rows.Clear();
         m_dept           = null;
         buttonX1.Visible = false;
         buttonX2.Visible = false;
         buttonR.Visible  = false;
         return;
     }
     label1.Text      = fGrid.CurRow.Cells[0].Value.ToStringNullable();
     m_dept           = fGrid.CurRow.Tag as ic.departmentC;
     buttonX1.Visible = false;
     buttonX2.Visible = false;
     buttonR.Visible  = false;
     LoadMainGrid2(m_dept);
 }
        public void NewDepartment(ic.departmentC obj)
        {
            var _row = fGrid.Rows.Add();

            _row.Font = new Font("verdana", 10, FontStyle.Bold);
            _row.Cells["gp_name"].Col.Width = 220;
            _row.Cells["mem_cnt"].Col.Width = 100;
            _row.Cells["gp_name"].Value     = obj.dept_name;
            _row.Cells["gp_name"].TextAlign = iGContentAlignment.BottomRight;
            _row.Cells["mem_cnt"].ValueType = typeof(int);
            _row.Key = obj.dept_id.ToStringNullable();
            _row.AutoHeight();
            _row.Cells["mem_cnt"].Value = obj.MemberCount;
            _row.Tag = obj;



            fGrid.SetCurCell(obj.dept_id.ToString(), 0);
            fGrid.Cols.AutoWidth();
            fGrid.AutoResizeCols = false;
            fGrid.EndUpdate();
        }
        private void UpdateRoles(ic.departmentC _dept)
        {
            if (_dept == null)
            {
                return;
            }
            var nlist = from k in m_LDATA[_dept.dept_id].Items.Cast <fnn.iGComboItemEX>()
                        where k.Visible
                        select k;

            ic.RoleC   _role = null;
            List <int> _ids  = new List <int>();

            foreach (var k in nlist)
            {
                _role = k.Tag as ic.RoleC;
                if (datam.DATA_ROLES.Keys.IndexOf(_role.role_id) == -1)
                {
                    k.Visible = false; continue;
                }
                k.Value   = _role.role_name;
                k.Visible = true;
                _ids.Add(_role.role_id);
            }
            var new_list = from k in datam.DATA_ROLES.Values
                           where k.gp_type == em.role_gp_typeS.department & k.gp_id == _dept.dept_id
                           & _ids.IndexOf(k.role_id) == -1
                           select k;

            foreach (var r in new_list)
            {
                m_LDATA[_dept.dept_id].Items.Add(new fnn.iGComboItemEX()
                {
                    Tag   = r,
                    Value = r.role_name,
                });
            }
        }
        public static void GetDepartments(xing _xd)
        {
            if (DATA_STAMP_STORE == null)
            {
                DATA_STAMP_STORE = new SortedList <em.StampTables, long>();
            }
            if (DATA_STAMP_STORE.IndexOfKey(em.StampTables.dept_member_tb) == -1)
            {
                DATA_STAMP_STORE.Add(em.StampTables.dept_member_tb, 0);
                DATA_STAMP_STORE.Add(em.StampTables.dept_master_tb_ns, 0);
            }
            if (DEPARTMENT_INNER_COLLECTION == null)
            {
                DEPARTMENT_INNER_COLLECTION = new Dictionary <int, string>();
                DEPARTMENT_INNER_COLLECTION.Add(-10, "Church Pastor");
                DEPARTMENT_INNER_COLLECTION.Add(-11, "Church Elders");
                DEPARTMENT_INNER_COLLECTION.Add(-12, "Family Life");
                DEPARTMENT_INNER_COLLECTION.Add(-13, "Deaconary/Deaconesses");
                DEPARTMENT_INNER_COLLECTION.Add(-14, "Treasurery");
                DEPARTMENT_INNER_COLLECTION.Add(-15, "Children Ministry");
                DEPARTMENT_INNER_COLLECTION.Add(-16, "Women Ministry");
                DEPARTMENT_INNER_COLLECTION.Add(-17, "Adventist Men");
                DEPARTMENT_INNER_COLLECTION.Add(-18, "Stewardship");
                DEPARTMENT_INNER_COLLECTION.Add(-19, "Youth");
                DEPARTMENT_INNER_COLLECTION.Add(-20, "Personal Ministry");
                DEPARTMENT_INNER_COLLECTION.Add(-21, "Education");
                DEPARTMENT_INNER_COLLECTION.Add(-22, "Health");
                DEPARTMENT_INNER_COLLECTION.Add(-23, "Communication");
                DEPARTMENT_INNER_COLLECTION.Add(-24, "Clerk/Secretary");
                DEPARTMENT_INNER_COLLECTION.Add(-25, "Interest Co-ordination");
                DEPARTMENT_INNER_COLLECTION.Add(-26, "Music");
                DEPARTMENT_INNER_COLLECTION.Add(-27, "Public Affairs and Religious Liberty");
                DEPARTMENT_INNER_COLLECTION.Add(-28, "Publishing");
                DEPARTMENT_INNER_COLLECTION.Add(-29, "Development");
                DEPARTMENT_INNER_COLLECTION.Add(-30, "Senior Citizens");
                DEPARTMENT_INNER_COLLECTION.Add(-31, "Evaluation And Monitoring");
                DEPARTMENT_INNER_COLLECTION.Add(-32, "Maintainance And Logistics");
                DEPARTMENT_INNER_COLLECTION.Add(-33, "PathFinder Ministry");
                DEPARTMENT_INNER_COLLECTION.Add(-34, "Welfare");
                DEPARTMENT_INNER_COLLECTION.Add(-35, "Administration *");
            }
            string _table_name = "dept_master_tb_ns";

            if (DATA_DEPARTMENT == null)
            {
                datam.DATA_DEPARTMENT = new SortedList <int, ic.departmentC>();
            }
            if (wdata.TABLE_STAMP == null)
            {
                wdata.TABLE_STAMP = new SortedList <string, long>();
            }
            if (wdata.TABLE_STAMP.IndexOfKey(_table_name) == -1)
            {
                wdata.TABLE_STAMP.Add(_table_name, 0);
            }
            bool is_new   = false;
            bool load_all = false;
            var  xd       = _xd == null ? new xing() : _xd;

            string _str   = string.Empty;
            var    _stamp = xd.GetTimeStamp(_table_name);

            if (DATA_DEPARTMENT.Keys.Count == 0)
            {
                _str     = "select * from dept_master_tb_ns";
                load_all = true;
            }
            else
            {
                if (wdata.TABLE_STAMP[_table_name] == _stamp)
                {
                    return;
                }
                _str = string.Format("select * from dept_master_tb_ns where fs_time_stamp > {0}", wdata.TABLE_STAMP[_table_name]);
            }
            wdata.TABLE_STAMP[_table_name] = _stamp;
            ic.departmentC _obj = null;
            #region database fill
            try
            {
                using (var _dr = xd.SelectCommand(_str))
                {
                    while (_dr.Read())
                    {
                        _obj = null;
                        if (load_all)
                        {
                            _obj   = new MTOMS.ic.departmentC();
                            is_new = true;
                        }
                        else
                        {
                            try
                            {
                                _obj   = datam.DATA_DEPARTMENT[_dr["dept_id"].ToInt32()];
                                is_new = false;
                            }
                            catch (Exception ex)
                            {
                                if (_obj == null)
                                {
                                    _obj   = new MTOMS.ic.departmentC();
                                    is_new = true;
                                }
                            }
                        }
                        if (is_new)
                        {
                            _obj.dept_id   = _dr["dept_id"].ToInt32();
                            _obj.parent_id = _dr["parent_id"].ToInt32();
                            datam.DATA_DEPARTMENT.Add(_obj.dept_id, _obj);
                        }
                        _obj.is_visible             = _dr["is_visible"].ToByte() == 0 ? false : true;
                        _obj.index                  = _dr["s_index"].ToInt16();
                        _obj.level                  = _dr["s_level"].ToInt16();
                        _obj.dept_name              = _dr["dept_name"].ToStringNullable();
                        _obj.expense_sys_account_id = _dr["sys_account_id"].ToInt32();
                        _obj.income_sys_account_id  = _dr["inc_sys_account_id"].ToInt32();
                        _obj.cr_sys_account_id      = _dr["cr_sys_account_id"].ToInt32();
                    }
                    _dr.Close(); _dr.Dispose();
                }
                #region update members
                _table_name = "dept_member_tb";
                _stamp      = xd.GetTimeStamp(_table_name);
                if (wdata.TABLE_STAMP.IndexOfKey(_table_name) == -1)
                {
                    wdata.TABLE_STAMP.Add(_table_name, 0);
                }
                if (load_all)
                {
                    _str = "select * from dept_member_tb where mem_status=1";
                }
                else
                {
                    if (wdata.TABLE_STAMP[_table_name] == _stamp)
                    {
                        return;
                    }
                    _str = string.Format("select * from dept_member_tb where fs_time_stamp>{0}", wdata.TABLE_STAMP[_table_name]);
                }
                wdata.TABLE_STAMP[_table_name] = _stamp;
                using (var _dr = xd.SelectCommand(_str))
                {
                    while (_dr.Read())
                    {
                        try
                        {
                            if (load_all)
                            {
                                datam.DATA_MEMBER[_dr["mem_id"].ToInt32()].DepartmentCollection.Add(datam.DATA_DEPARTMENT[_dr["dept_id"].ToInt32()]);
                            }
                            else
                            {
                                if (_dr["mem_status"].ToByte() == 0)
                                {
                                    if (datam.DATA_MEMBER.Keys.IndexOf(_dr["mem_id"].ToInt32()) > -1)
                                    {
                                        if (datam.DATA_MEMBER[_dr["mem_id"].ToInt32()].DepartmentCollection.IndexOf(datam.DATA_DEPARTMENT[_dr["dept_id"].ToInt32()]) > -1)
                                        {
                                            datam.DATA_MEMBER[_dr["mem_id"].ToInt32()].DepartmentCollection.Remove(datam.DATA_DEPARTMENT[_dr["dept_id"].ToInt32()]);
                                        }
                                    }
                                }
                                else
                                {
                                    if (datam.DATA_MEMBER[_dr["mem_id"].ToInt32()].DepartmentCollection.IndexOf(datam.DATA_DEPARTMENT[_dr["dept_id"].ToInt32()]) == -1)
                                    {
                                        datam.DATA_MEMBER[_dr["mem_id"].ToInt32()].DepartmentCollection.Add(datam.DATA_DEPARTMENT[_dr["dept_id"].ToInt32()]);
                                    }
                                }
                            }
                        }
                        catch (Exception)
                        {
                            continue;
                        }
                    }
                    _dr.Close(); _dr.Dispose();
                }
                #endregion
            }
            catch (VistaDB.Diagnostic.VistaDBException ex)
            {
                MessageBox.Show(ex.Message);
                throw new Exception("Data Loading Failed");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            #endregion
            if (_xd == null)
            {
                xd.CommitTransaction();
                xd.Dispose();
                xd = null;
            }
        }
        private void LoadMainGrid2(ic.departmentC _dept)
        {
            if (m_LDATA.Keys.IndexOf(_dept.dept_id) == -1)
            {
                m_LDATA.Add(_dept.dept_id, new iGDropDownList());
                m_LDATA[_dept.dept_id] = fnn.CreateCombo();
                m_LDATA[_dept.dept_id].MaxVisibleRowCount = 5;
                var nlist = from k in datam.DATA_ROLES.Values
                            where k.gp_type == em.role_gp_typeS.department &
                            k.gp_id == _dept.dept_id
                            select k;
                foreach (var n in nlist)
                {
                    m_LDATA[_dept.dept_id].Items.Add(new fnn.iGComboItemEX()
                    {
                        Text  = n.role_name,
                        Value = n.role_name,
                        Tag   = n
                    });
                }
            }
            m_prev_role = null;
            fGrid2.Cols["_pic"].Width = 20;
            fGrid2.Rows.Clear();
            buttonX1.Visible = false;
            buttonX2.Visible = false;
            buttonR.Visible  = false;
            if (_dept == null)
            {
                return;
            }
            iGRow _row = null;

            _row                         = CreateNewRow2();
            _row.Key                     = "othersxxx";
            _row.ForeColor               = Color.Blue;
            _row.Cells["mem"].Value      = "Member Names";
            _row.Cells["mem"].TextAlign  = iGContentAlignment.MiddleCenter;
            _row.BackColor               = Color.Lavender;
            _row.ReadOnly                = iGBool.False;
            _row.Selectable              = false;
            _row.Cells["type"].Value     = null;
            _row.Cells["type"].TextAlign = iGContentAlignment.MiddleRight;
            //
            _row.Cells["desig"].Value     = "Member Role(s)";
            _row.Cells["desig"].TextAlign = iGContentAlignment.MiddleCenter;
            // fGrid2.Rows["othersxxx"].Cells["_pic"].TypeFlags = iGCellTypeFlags.HasEllipsisButton;

            buttonX1.Visible = true;
            buttonX2.Visible = true;
            buttonR.Visible  = true;
            if (_dept == null)
            {
                fGrid2.EndUpdate(); return;
            }
            int _cnt = 0;

            ic.RoleC _role = null;
            if (_dept.MemberCount > 0)
            {
                foreach (var r in _dept.MemberEnumerable.OrderBy(l => l.mem_name))
                {
                    _cnt++;

                    _row          = fGrid2.Rows.Add();
                    _row.ReadOnly = iGBool.True;
                    _row.Font     = new Font("verdana", 10, FontStyle.Bold);
                    _row.Cells["type"].Col.Width = 30;
                    _row.Cells["type"].Value     = _cnt;
                    _row.Cells["type"].TextAlign = iGContentAlignment.MiddleCenter;
                    _row.Cells["mem"].ValueType  = typeof(string);
                    _row.Tag = r.mem_id.ToStringNullable();
                    _row.Cells["mem"].Value      = r.mem_name;
                    _row.Cells["_pic"].TypeFlags = iGCellTypeFlags.HasEllipsisButton;
                    _row.Cells["_pic"].ReadOnly  = iGBool.False;
                    //
                    _role = r.RolesCollection.Where(k => k.Is_valid & k.objRole.gp_type == em.role_gp_typeS.department & k.objRole.gp_id == _dept.dept_id).Select(k => k.objRole).FirstOrDefault();
                    _row.Cells["desig"].DropDownControl = m_LDATA[_dept.dept_id];
                    _row.Cells["desig"].Value           = null;
                    if (_role != null)
                    {
                        _row.Cells["desig"].Value = _role.role_name;
                    }
                    //
                    _row.Cells["desig"].ReadOnly  = iGBool.False;
                    _row.Cells["desig"].TypeFlags = iGCellTypeFlags.HideComboButton;
                    _row.Key = r.mem_id.ToStringNullable();
                    _row.AutoHeight();
                }
            }
            fGrid2.Cols.AutoWidth();
            fGrid2.AutoResizeCols = false;
            fGrid2.EndUpdate();
            position_button_controller();
        }