Example #1
0
        protected void GridApdate()
        {
            int       userToChangeId = Convert.ToInt32(Session["userLink"]);
            DataTable dataTable      = new DataTable();

            dataTable.Columns.Add(new DataColumn("ID", typeof(int)));
            dataTable.Columns.Add(new DataColumn("Access", typeof(bool)));
            dataTable.Columns.Add(new DataColumn("Name", typeof(string)));
            dataTable.Columns.Add(new DataColumn("Edit", typeof(bool)));
            List <Registers> registers = (from a in chancDb.Registers where a.Active == true select a).ToList();

            foreach (var link in registers)
            {
                DataRow dataRow = dataTable.NewRow();
                dataRow["ID"]   = link.RegisterID;
                dataRow["Name"] = link.Name;

                RegistersUsersMap check = (from b in chancDb.RegistersUsersMap
                                           where  b.Active == true && b.FkUser == userToChangeId &&
                                           b.FkRegister == link.RegisterID
                                           select b).FirstOrDefault();

                if (check != null)
                {
                    dataRow["Access"] = true;
                    if (check.CanEdit == true)
                    {
                        dataRow["Edit"] = true;
                    }
                    else
                    {
                        dataRow["Edit"] = false;
                    }
                }
                else
                {
                    dataRow["Access"] = false;
                    dataRow["Edit"]   = false;
                }
                dataTable.Rows.Add(dataRow);
            }
            GridView1.DataSource = dataTable;
            GridView1.DataBind();
        }
Example #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var userID = Session["userID"];

            if (userID == null)
            {
                Response.Redirect("~/Default.aspx");
            }
            ///////////////////////////////////////////
            if (!Page.IsPostBack)
            {
                Session["searchList"] = new List <TableActions.SearchValues>();
                DataTable dataTable = new DataTable();
                dataTable.Columns.Add(new DataColumn("fieldId", typeof(int)));
                dataTable.Columns.Add(new DataColumn("fieldName", typeof(string)));
                dataTable.Columns.Add(new DataColumn("fieldWeight", typeof(double)));
                dataTable.Columns.Add(new DataColumn("fieldIsAdd", typeof(bool)));

                using (ChancelerryDb dataContext = new ChancelerryDb(new NpgsqlConnection(WebConfigurationManager.AppSettings["ConnectionStringToPostgre"])))
                {
                    int regId;
                    int userId;
                    int.TryParse(Session["registerID"].ToString(), out regId);
                    int.TryParse(Session["userID"].ToString(), out userId);

                    //кусок Ваге // создаем для пользователя все связи к выбранному регистру если их нет
                    List <Fields> allFieldsInTable = (from a in dataContext.Fields
                                                      join b in dataContext.FieldsGroups
                                                      on a.FkFieldsGroup equals b.FieldsGroupID
                                                      join c in dataContext.RegistersModels
                                                      on b.FkRegisterModel equals c.RegisterModelID
                                                      join d in dataContext.Registers
                                                      on c.RegisterModelID equals d.FkRegistersModel
                                                      where a.Active == true &&
                                                      b.Active == true &&
                                                      c.Active == true &&
                                                      d.Active == true
                                                      //&& d.RegisterID == (int) Session["registerID"] PORT
                                                      && d.RegisterID == regId
                                                      select a).Distinct().ToList();
                    List <Fields> allFieldsWithUser = (from a in dataContext.Fields
                                                       join b in dataContext.RegistersView on a.FieldID equals b.FkField
                                                       join c in dataContext.RegistersUsersMap on b.FkRegistersUsersMap equals c.RegistersUsersMapID
                                                       where
                                                       a.Active == true &&
                                                       c.Active == true
                                                       // && b.active == tr
                                                       // && c.FkRegister == (int)Session["registerID"] PORT
                                                       // && c.FkUser == (int)Session["userID"] PORT
                                                       && c.FkRegister == regId &&
                                                       c.FkUser == userId
                                                       select a).ToList();
                    RegistersUsersMap registerUserMap = (from a in dataContext.RegistersUsersMap
                                                         where a.Active
                                                         // && a.FkUser == (int)Session["userID"] PORT
                                                         // && a.FkRegister == (int)Session["registerID"] PORT
                                                         && a.FkUser == userId &&
                                                         a.FkRegister == regId
                                                         select a).FirstOrDefault();


                    foreach (Fields currentField in allFieldsInTable)
                    {
                        if (allFieldsWithUser.Contains(currentField))
                        {
                            continue;
                        }
                        else
                        {
                            RegistersView registersView = new RegistersView();
                            registersView.Active = true;
                            registersView.FkRegistersUsersMap = registerUserMap.RegistersUsersMapID;
                            registersView.FkField             = currentField.FieldID;
                            registersView.Weight = 0;
                            dataContext.RegistersView.InsertOnSubmit(registersView);
                            dataContext.SubmitChanges();
                        }
                    }

                    /*
                     * // Кусок Ваге окончен :)
                     * // Все возможные поля для таблицы в данном реестре
                     * var all = (from a in dataContext.Fields
                     *           join b in dataContext.RegistersView on a.fieldID equals b.fk_field
                     *           join c in dataContext.RegistersUsersMap on b.fk_registersUsersMap equals c.registersUsersMapID
                     *           where c.fk_register == (int)Session["registerID"]
                     *           select new {a.fieldID, a.name, b.weight}).Distinct();
                     *
                     * // Уже прикрученные поля к этому пользователю
                     * var userView = (from a in dataContext.Fields
                     *    join b in dataContext.RegistersView on a.fieldID equals b.fk_field
                     *    join c in dataContext.RegistersUsersMap on b.fk_registersUsersMap equals c.registersUsersMapID
                     *    where c.fk_register == (int)Session["registerID"] && c.fk_user == (int)Session["userID"] && b.active
                     *    select a.fieldID).Distinct().ToList();
                     *
                     * var allCross = new List<ViewFieldData>();
                     *
                     * // Проходим по всем полям
                     * foreach (var qwe in all)
                     * {
                     *    // Если это поле прикручено к таблице этого реестра и этому пользователю в ТАБЛИЦЕ RegisterView, то отмечаем его с галочкой Checked true
                     *    allCross.Add(userView.Contains(qwe.fieldID)
                     *        ? new ViewFieldData()
                     *        {
                     *            id = qwe.fieldID,
                     *            name = qwe.name,
                     *            weight = qwe.weight,
                     *            isAdd = true
                     *        }
                     *        // если нет то с галочкой UnChecked false
                     *        : new ViewFieldData()
                     *        {
                     *            id = qwe.fieldID,
                     *            name = qwe.name,
                     *            weight = qwe.weight,
                     *            isAdd = false
                     *        });
                     * }
                     *
                     * // Проходим по allCross, добавляем дааные из него в таблицу
                     *
                     * foreach (var item in allCross)
                     * {
                     *    DataRow dataRow = dataTable.NewRow();
                     *    dataRow["fieldId"] = item.id;
                     *    dataRow["fieldName"] = item.name;
                     *    dataRow["fieldWeight"] = item.weight;
                     *    dataRow["fieldIsAdd"] = item.isAdd;
                     *    dataTable.Rows.Add(dataRow);
                     * }
                     */

                    foreach (var item in allFieldsWithUser)
                    {
                        DataRow dataRow = dataTable.NewRow();
                        dataRow["fieldId"]     = item.FieldID;
                        dataRow["fieldName"]   = item.Name;
                        dataRow["fieldWeight"] = (from a in dataContext.RegistersView
                                                  where
                                                  a.FkRegistersUsersMap == registerUserMap.RegistersUsersMapID &&
                                                  a.FkField == item.FieldID
                                                  //&& a.active == true
                                                  select a.Weight).FirstOrDefault();
                        dataRow["fieldIsAdd"] = (from a in dataContext.RegistersView
                                                 where
                                                 a.FkRegistersUsersMap == registerUserMap.RegistersUsersMapID &&
                                                 a.FkField == item.FieldID
                                                 //&& a.active == true
                                                 select a.Active).FirstOrDefault();
                        dataTable.Rows.Add(dataRow);
                    }

                    GridView1.DataSource   = dataTable;
                    ViewState["Gridview1"] = dataTable;
                    GridView1.DataBind();
                }
            }
        }
Example #3
0
        protected void Button1_Click(object sender, EventArgs e)
        {
            int userToChangeId = Convert.ToInt32(Session["userLink"]);

            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                CheckBox confirmed = (CheckBox)GridView1.Rows[i].FindControl("Access");
                CheckBox edit      = (CheckBox)GridView1.Rows[i].FindControl("Edit");
                Label    label     = (Label)GridView1.Rows[i].FindControl("ID");
                int      regId     = Convert.ToInt32(label.Text);
                if (confirmed.Checked == true)
                {
                    RegistersUsersMap checkedgroup = (from a in chancDb.RegistersUsersMap
                                                      where a.FkUser == userToChangeId && a.FkRegister == regId
                                                      select a).FirstOrDefault();
                    if (checkedgroup != null)
                    {
                        checkedgroup.Active = true;
                        chancDb.SubmitChanges();
                        if (edit.Checked == true)
                        {
                            checkedgroup.CanEdit = true;
                            chancDb.SubmitChanges();
                        }
                        else
                        {
                            checkedgroup.CanEdit = false;
                            chancDb.SubmitChanges();
                        }
                    }
                    else
                    {
                        RegistersUsersMap userlink = new RegistersUsersMap();
                        userlink.FkUser     = userToChangeId;
                        userlink.FkRegister = Convert.ToInt32(label.Text);
                        userlink.Active     = true;
                        if (edit.Checked == true)
                        {
                            userlink.CanEdit = true;
                        }
                        else
                        {
                            userlink.CanEdit = false;
                        }
                        chancDb.RegistersUsersMap.InsertOnSubmit(userlink);
                        chancDb.SubmitChanges();
                    }
                }
                else
                {
                    RegistersUsersMap checkedgroup = (from a in chancDb.RegistersUsersMap
                                                      where a.Active == true && a.FkUser == userToChangeId && a.FkRegister == regId
                                                      select a).FirstOrDefault();
                    if (checkedgroup != null)
                    {
                        checkedgroup.Active = false;
                        chancDb.SubmitChanges();
                    }
                }
            }
            GridApdate();
        }