Example #1
0
        private ActionResult addColumn(AjaxPersonaAppRolesForTable model)
        {
            var context = COREobject.i.Context;

            #region ColHeader
            int priority;
            if (context.AppRoles.Count(r => r.ApplicationId == model.AppID) > 0)
            {
                priority = context.AppRoles.Where(r => r.ApplicationId == model.AppID).Max(r => r.Priority) + 1;
            }
            else
            {
                priority = 1;
            }
            ColumnHeaderAppRolesForTable newColHeader = new ColumnHeaderAppRolesForTable(-1, "New role", priority);

            if (model.ColHeaders == null)
            {
                model.ColHeaders = new List <ColumnHeaderAppRolesForTable>();
            }

            model.ColHeaders.Add(newColHeader);
            context.AppRoles.Add(new PersonaAppRole {
                Name = "New role", Priority = priority, ApplicationId = model.AppID
            });
            /*context.SaveChanges();*/
            #endregion

            #region Data
            if (model.Data == null)
            {
                model.Data = new List <bool[]>();
            }

            model.Data.Add(new bool[model.RowHeaders.Count]);
            #endregion

            return(View("App", model));
        }
Example #2
0
        private ActionResult saveModel(AjaxPersonaAppRolesForTable model)
        {
            #region Column headers validation
            foreach (ColumnHeaderAppRolesForTable colHeader in model.ColHeaders)
            {
                colHeader.Name = colHeader.Name.Trim();
                if (String.IsNullOrWhiteSpace(colHeader.Name))
                {
                    ViewBag.BadNameRole = true;
                    ViewBag.Saved       = false;
                    return(View("App", model));
                }
            }

            for (int i = 0; i < model.ColHeaders.Count; i++)
            {
                ColumnHeaderAppRolesForTable currHeader = model.ColHeaders[i];
                for (int j = i + 1; j < model.ColHeaders.Count; j++)
                {
                    if (model.DeletedCols == null || (!model.DeletedCols.Contains(i) && !model.DeletedCols.Contains(j)))
                    {
                        if (currHeader.Name == model.ColHeaders[j].Name)
                        {
                            ViewBag.RolesAreEqual = true;
                            ViewBag.Saved         = false;
                            return(View("App", model));
                        }
                    }
                }
                if (String.IsNullOrEmpty(currHeader.Priority.ToString()) || currHeader.Priority == 0)
                {
                    ViewBag.BadPriorityRole = true;
                    ViewBag.Saved           = false;
                    return(View("App", model));
                }
            }
            #endregion

            #region Save model
            var         context = COREobject.i.Context;
            Application app     = context.Applications.Find(model.AppID);

            #region Column headers + data
            IQueryable <PersonaAppRole> roles = context.AppRoles.Where(c => c.ApplicationId == app.Id);

            #region Save columns
            int x = 0;
            foreach (ColumnHeaderAppRolesForTable colHeader in model.ColHeaders)
            {
                if (model.DeletedCols == null || !model.DeletedCols.Contains(x))
                {
                    #region Add or update column
                    #region New users IDs - Data for this column
                    List <int> NewUsersIDsList = new List <int>();
                    for (int y = 0; y < model.RowHeaders.Count; y++)
                    {
                        if (model.Data[x][y] == true)
                        {
                            NewUsersIDsList.Add(model.RowHeaders[y].Id);
                        }
                    }
                    #endregion

                    if (colHeader.Id != -1)
                    {
                        #region Update role
                        PersonaAppRole realRole = roles.FirstOrDefault(a => a.Id == colHeader.Id);

                        if (realRole != null)
                        {
                            #region Role name
                            if (realRole.Name != colHeader.Name)
                            {
                                realRole.Name = colHeader.Name;
                            }
                            if (realRole.Priority != colHeader.Priority)
                            {
                                realRole.Priority = colHeader.Priority;
                            }
                            #endregion

                            context.Users_Roles.RemoveRange(context.Users_Roles.Where(r => r.RoleName == realRole.Name && r.ApplicationId == realRole.ApplicationId));

                            foreach (int id in NewUsersIDsList)
                            {
                                context.Users_Roles.Add(new User_Role()
                                {
                                    RoleName = realRole.Name, Application = realRole.Application, UserId = id
                                });
                            }

                            context.SaveChanges();
                        }
                        #endregion
                    }
                    else
                    {
                        #region New role
                        PersonaAppRole realRole = new PersonaAppRole();

                        realRole.Application = app;
                        realRole.Name        = colHeader.Name;
                        realRole.Priority    = colHeader.Priority;
                        if (realRole.Name == "New role")
                        {
                        }

                        #region Fill realRole with users
                        foreach (int id in NewUsersIDsList)
                        {
                            context.Users_Roles.Add(new User_Role()
                            {
                                RoleName = realRole.Name, Application = realRole.Application, UserId = id
                            });
                        }
                        #endregion

                        realRole = context.AppRoles.Add(realRole);

                        try
                        {
                            context.SaveChanges();
                        }
                        catch (DbEntityValidationException e)
                        {
                            foreach (var eve in e.EntityValidationErrors)
                            {
                                string text = "Entity of type \"" + eve.Entry.Entity.GetType().Name + "\" in state \"" + eve.Entry.State + "\" has the following validation errors:";
                                foreach (var ve in eve.ValidationErrors)
                                {
                                    string message = "- Property: \"" + ve.PropertyName + "\", Error: \"" + ve.ErrorMessage + "\"";
                                }
                            }
                            throw;
                        }
                        #endregion

                        colHeader.Id = realRole.Id;
                        #endregion
                    }
                    #endregion
                }
                else
                {
                    #region Delete column (role)
                    if (colHeader.Id != -1)
                    {
                        PersonaAppRole role = context.AppRoles.First(a => a.Id == colHeader.Id);

                        context.AppRoles.Remove(role);
                        context.SaveChanges();
                    }
                    #endregion
                }

                x++;
            }
            #endregion

            try
            {
                context.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    string text = "Entity of type \"" + eve.Entry.Entity.GetType().Name + "\" in state \"" + eve.Entry.State + "\" has the following validation errors:";
                    foreach (var ve in eve.ValidationErrors)
                    {
                        string message = "- Property: \"" + ve.PropertyName + "\", Error: \"" + ve.ErrorMessage + "\"";
                    }
                }
                throw;
            }
            #endregion

            ViewBag.Saved = true;

            return(RedirectToAction("App", "Roles", new { @Id = model.AppID }));//App(model.AppID);
        }