示例#1
0
        public async Task <JsonResult> ContextUpdate([Bind(Include = "Key, Name")] DepartmentEditViewModel Department)
        {
            try
            {
                var Dep = await db.Departments.Include(x => x.Division.Plant.Organization).Where(x => x.Key == Department.Key).SingleOrDefaultAsync();

                Dep.Name = Department.Name;

                if (Dep == null)
                {
                    return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                }

                db.Entry(Dep).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(Json(new JDepartment(Dep), JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new JsonErrorViewModel {
                    Message = ex.Message
                }, JsonRequestBehavior.AllowGet));
            }
        }
示例#2
0
        public async Task <JsonResult> MappableUsers()
        {
            try
            {
                if (Request.IsAuthenticated)
                {
                    // User should belongs to the Role SysAdmin to access MappableUsers
                    if (User.IsInRole(Roles.SysAdmin))
                    {
                        // Returns users with the Role with AppUser
                        // BUG: var list = db.Administrators.Where(new Func<ApplicationUser, bool>(x => { return UserManager.IsInRole(x.Id, Roles.AppUser) })).ToList();
                        // FIX: AppUser should belongs to the Organization of the SysAdmin 31/1/2015
                        var Organization = User.GetOrganization();
                        var List         = await db.Administrators.Include(x => x.User).Include(x => x.Organization).Where(x => x.Organization.Key == Organization && x.Role == Roles.AppUser).ToListAsync();

                        return(await new JsonListViewModel <JApplicationUser>
                        {
                            List = List.Select(x => new JApplicationUser(x.User)).ToList()
                        }.toJson());
                    }
                }
                // If user is not authenticated return UserUnauhorizedError to client.
                return(await JsonErrorViewModel.GetUserUnauhorizedError().toJson());
            }
            catch (Exception ex)
            {
                return(Json(JsonExceptionViewModel.Get(ex), JsonRequestBehavior.AllowGet));
            }
        }
示例#3
0
        public static async Task <JsonResult> Format <T1, T2, T3>(HttpRequestBase Request, HttpResponseBase Response, string Controller, string Role, IPrincipal User, DbSet <T1> value, Expression <Func <T1, bool> > exp, Expression <Func <T1, object> >[] Includes, Func <List <T3>, T2> operation = null)
            where T1 : class
            where T2 : maQx.Models.JsonViewModel
            where T3 : class, IJsonBase <T1, T3>
        {
            Exception Exception = null;

            try
            {
                if (typeof(T1) == typeof(Menus) || User.IsInRole(Role))
                {
                    var format = Activator.CreateInstance <T3>();
                    var data   = await value.IncludeMultiple(Includes).Where(exp).ToListAsync();

                    var d = data.Select(x =>
                    {
                        return(format.To(x));
                    }).ToList();

                    return(await List <T2, T3>(Controller, operation, d));
                }
                else
                {
                    return(await JsonErrorViewModel.GetUserUnauhorizedError().toJson());
                }
            }
            catch (Exception ex)
            {
                Exception = ex;
            }

            return(await JsonExceptionViewModel.Get(Exception).toJson());
        }
示例#4
0
        public async Task <JsonResult> ContextCreate([Bind(Include = "Name,Division")] DepartmentViewModel Department)
        {
            try
            {
                var Division = await db.Divisions.Include(x => x.Plant.Organization).Where(x => x.Key == Department.Division).SingleOrDefaultAsync();

                if (Division == null)
                {
                    return(await JsonErrorViewModel.GetDataNotFoundError(Response).toJson());
                }

                var Dep = new Department
                {
                    Name     = Department.Name,
                    Division = Division,
                    Access   = Roles.SysAdmin
                };

                db.Departments.Add(Dep);

                await db.SaveChangesAsync();

                return(Json(new JDepartment(Dep), JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new JsonErrorViewModel {
                    Message = ex.Message
                }, JsonRequestBehavior.AllowGet));
            }
        }
示例#5
0
        public async Task <JsonResult> ContextDelete(string ID)
        {
            try
            {
                var Dep = await db.Departments.Include(x => x.Division.Plant.Organization).Where(x => x.Key == ID).SingleOrDefaultAsync();

                var Del = new JDepartment(Dep);

                if (Dep == null)
                {
                    return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                }

                db.Departments.Remove(Dep);
                await db.SaveChangesAsync();

                return(Json(Del, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new JsonErrorViewModel {
                    Message = ex.Message
                }, JsonRequestBehavior.AllowGet));
            }
        }
示例#6
0
        public async Task <JsonResult> Administrators()
        {
            try
            {
                List <UserViewModel> Users = null;
                var Claim = ((ClaimsIdentity)User.Identity);

                if (User.IsInRole(Roles.Inviter))
                {
                    if (User.IsInRole(Roles.AppAdmin))
                    {
                        Users = await GetAdministrator(db.Administrators.Include("User").Include("Organization"), x => x.Role == Roles.SysAdmin && x.ActiveFlag, null);
                    }
                    else
                    {
                        var Key = Claim.FindFirst("Organization.Key").Value;
                        Users = await GetAdministrator(db.Administrators.Include("User").Include("Organization"), x => x.Role == Roles.AppUser && x.ActiveFlag && x.Organization.Key == Key, Claim.FindFirst("Organization.Name").Value);
                    }
                }

                if (Users == null)
                {
                    return(await JsonErrorViewModel.GetUserUnauhorizedError().toJson());
                }

                return(await new JsonListViewModel <UserViewModel>(Users, TableTools.GetTools(Type.GetType("maQx.Controllers.Administrators"))).toJson());
            }
            catch (Exception ex)
            {
                return(Json(JsonExceptionViewModel.Get(ex), JsonRequestBehavior.AllowGet));
            }
        }
示例#7
0
        public async Task <JsonResult> UserDepartmentMenu(string id)
        {
            if (User.IsInRole(Roles.SysAdmin))
            {
                var DepartmentUser = await db.DepartmentUsers.Include(x => x.Department).Where(x => x.User.Id == id).FirstOrDefaultAsync();

                if (DepartmentUser == null)
                {
                    return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                }

                var DepartmentMenu = (await db.DepartmentMenus.Include(x => x.Department.Division.Plant.Organization).Include(x => x.Menu).Where(x => x.Department.Key == DepartmentUser.Department.Key).ToListAsync()).Select(x => new JDepartmentMenu(x)).ToList();

                var DepartmentSelectedMenu = (await db.MenuAccess.Include(x => x.DepartmentMenu.Menu).Where(x => x.User.Id == id).ToListAsync()).Select(x => new JMenuAccess(x)).ToList();

                return(await new JsonViewModel <Tuple <List <JDepartmentMenu>, List <JMenuAccess> > >
                {
                    Value = new Tuple <List <JDepartmentMenu>, List <JMenuAccess> >(DepartmentMenu, DepartmentSelectedMenu)
                }.toJson());
            }
            else
            {
                return(await JsonErrorViewModel.GetUserUnauhorizedError().toJson());
            }
        }
示例#8
0
 public override void OnActionExecuting(ActionExecutingContext filterContext)
 {
     if (!filterContext.HttpContext.Request.IsAuthenticated)
     {
         filterContext.HttpContext.Response.StatusCode = 403;
         filterContext.Result = (JsonErrorViewModel.GetUserUnauhorizedError().toJson()).Result;
     }
     else
     {
         base.OnActionExecuting(filterContext);
     }
 }
示例#9
0
        public async Task <JsonResult> CurrentUser()
        {
            try
            {
                // Send the Current user as a Json object to the client if the user is authenticated
                if (Request.IsAuthenticated)
                {
                    var identity = (ClaimsIdentity)User.Identity;
                    return(Json(new JsonCurrentUserViewModel()
                    {
                        Name = identity.FindFirst("Firstname").Value,
                    }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    // While sending current to the client user check whether user in user Init Action by checking the session cookie.
                    // For more security check the Auth code against the database to verify the received Auth is valid.
                    string Auth = HttpContext.GetSecuredSessionCookie(_SessionName);

                    // If 'true' return temp user configuration to the client.
                    if (!String.IsNullOrWhiteSpace(Auth))
                    {
                        return(await new JsonCurrentUserViewModel()
                        {
                            Name = "New User",
                            Role = "TempSession",
                        }.toJson());
                    }
                    // Otherwise return UserUnauhorizedError to client.
                    else
                    {
                        return(await JsonErrorViewModel.GetUserUnauhorizedError().toJson());
                    }
                }
            }
            catch (Exception ex)
            {
                return(Json(JsonExceptionViewModel.Get(ex), JsonRequestBehavior.AllowGet));
            }
        }
示例#10
0
        public async Task <JsonResult> Exists(string id, string type)
        {
            switch (type.ToLower())
            {
            case "username":
            {
                var Organization = Request.QueryString["ref"] != null ? await db.Organizations.FindAsync(Request.QueryString["ref"]) : null;

                var Name = id + "@" + Organization.Domain;

                if (Organization == null)
                {
                    return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                }

                var Invite = await db.Invites.SingleOrDefaultAsync(x => x.Username == Name);

                if (Invite == null)
                {
                    // BUG: return await List(Roles.AppAdmin, (System.Data.Entity.DbSet<ApplicationUser>)db.Users, null, x => x.UserName == Name, (value) =>
                    // FIX: User name for Invite should be access by the Role Role.Inviter. 12/12/2014
                    return(await List(Roles.Inviter, (DbSet <ApplicationUser>) db.Users, null, x => x.UserName == Name, (value) =>
                        {
                            return new JsonViewModel <bool>()
                            {
                                Value = value.Any()
                            };
                        }));
                }

                return(await new JsonViewModel <bool>()
                    {
                        Value = true
                    }.toJson());
            }

            case "department":
            {
                return(await Format <Department, JsonListViewModel <JDepartment>, JDepartment>(Roles.SysAdmin, db.Departments, null, x => x.Division.Key == id && x.Access == Roles.SysAdmin, (value) =>
                    {
                        return new JsonListViewModel <JDepartment>()
                        {
                            List = value
                        };
                    }, x => x.Division));
            }

            case "menus":
            {
                return(await List(Roles.SysAdmin, db.Menus, null, x => x.Access == Roles.AppUser, (value) =>
                    {
                        return new JsonListViewModel <Menus>()
                        {
                            List = value.OrderBy(x => x.Name).ToList()
                        };
                    }));
            }

            case "department-menu":
            {
                return(await List(Roles.SysAdmin, db.DepartmentMenus, null, x => x.Department.Division.Key == id, (value) =>
                    {
                        return new JsonListViewModel <DepartmentMenu>()
                        {
                            List = value
                        };
                    }, x => x.Department, x => x.Menu));
            }

            case "add-department-menu":
            {
                var data = Request.QueryString["ref"] != null?Newtonsoft.Json.JsonConvert.DeserializeObject <EntityManupulateHelper>(Request.QueryString["ref"]) : null;

                if (data != null)
                {
                    var Department = await db.Departments.FindAsync(data.Entity);

                    if (Department != null)
                    {
                        var DepartmentMenu = db.DepartmentMenus;

                        foreach (var item in data.Add)
                        {
                            var Menu = await db.Menus.FindAsync(item);

                            if (Menu == null)
                            {
                                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                            }

                            DepartmentMenu.Add(new DepartmentMenu
                                {
                                    Department = Department,
                                    Menu       = Menu
                                });
                        }

                        foreach (var item in data.Remove)
                        {
                            var Menu = await db.DepartmentMenus.FindAsync(item);

                            if (Menu == null)
                            {
                                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                            }

                            DepartmentMenu.Remove(Menu);
                        }

                        Exception Exception = null;

                        try
                        {
                            await db.SaveChangesAsync();

                            return(await _DepartmentMenu(id));
                        }
                        catch (Exception ex)
                        {
                            Exception = ex;
                        }

                        return(await JsonExceptionViewModel.Get(Exception).toJson());
                    }
                }

                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
            }

            case "add-department-user":
            {
                var data = Request.QueryString["ref"] != null?Newtonsoft.Json.JsonConvert.DeserializeObject <EntityManupulateHelper>(Request.QueryString["ref"]) : null;

                if (data != null)
                {
                    var Department = await db.Departments.FindAsync(data.Entity);

                    if (Department != null)
                    {
                        var DepartmentUser = db.DepartmentUsers;

                        foreach (var item in data.Add)
                        {
                            var User = await db.Users.Where(x => x.Id == item).FirstOrDefaultAsync();

                            if (User == null)
                            {
                                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                            }

                            DepartmentUser.Add(new DepartmentUser
                                {
                                    Department = Department,
                                    User       = User
                                });
                        }

                        foreach (var item in data.Remove)
                        {
                            var User = await db.DepartmentUsers.FindAsync(item);

                            if (User == null)
                            {
                                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                            }

                            DepartmentUser.Remove(User);
                        }

                        Exception Exception = null;

                        try
                        {
                            await db.SaveChangesAsync();

                            return(await _DepartmentUser(id));
                        }
                        catch (Exception ex)
                        {
                            Exception = ex;
                        }

                        return(await JsonExceptionViewModel.Get(Exception).toJson());
                    }
                }

                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
            }

            case "access-division":
            {
                var data = Request.QueryString["ref"] != null?Newtonsoft.Json.JsonConvert.DeserializeObject <EntityManupulateHelper>(Request.QueryString["ref"]) : null;

                if (data != null)
                {
                    var User = db.Users.Find(data.Entity);

                    if (User != null)
                    {
                        var AccessLevel = db.AccessLevels;

                        foreach (var item in data.Add)
                        {
                            var Division = await db.Divisions.Where(x => x.Key == item).FirstOrDefaultAsync();

                            if (Division == null)
                            {
                                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                            }

                            AccessLevel.Add(new AccessLevel
                                {
                                    Division = Division,
                                    User     = User
                                });
                        }

                        foreach (var item in data.Remove)
                        {
                            var Access = await db.AccessLevels.FindAsync(item);

                            if (Access == null)
                            {
                                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                            }

                            AccessLevel.Remove(Access);
                        }

                        Exception Exception = null;

                        try
                        {
                            await db.SaveChangesAsync();

                            return(await _DivisionAccess(data.Entity));
                        }
                        catch (Exception ex)
                        {
                            Exception = ex;
                        }

                        return(await JsonExceptionViewModel.Get(Exception).toJson());
                    }
                }

                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
            }

            case "access-menu":
            {
                var data = Request.QueryString["ref"] != null?Newtonsoft.Json.JsonConvert.DeserializeObject <EntityManupulateHelper>(Request.QueryString["ref"]) : null;

                if (data != null)
                {
                    var User = db.Users.Find(data.Entity);

                    if (User != null)
                    {
                        var MenuAccess = db.MenuAccess;

                        foreach (var item in data.Add)
                        {
                            var DepartmentMenu = await db.DepartmentMenus.Where(x => x.Department.Key == id && x.Menu.ID == item).FirstOrDefaultAsync();

                            if (DepartmentMenu == null)
                            {
                                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                            }

                            MenuAccess.Add(new MenuAccess
                                {
                                    DepartmentMenu = DepartmentMenu,
                                    User           = User
                                });
                        }

                        foreach (var item in data.Remove)
                        {
                            var Access = await db.MenuAccess.FindAsync(item);

                            if (Access == null)
                            {
                                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
                            }

                            MenuAccess.Remove(Access);
                        }

                        Exception Exception = null;

                        try
                        {
                            await db.SaveChangesAsync();

                            return(await UserDepartmentMenu(data.Entity));
                        }
                        catch (Exception ex)
                        {
                            Exception = ex;
                        }

                        return(await JsonExceptionViewModel.Get(Exception).toJson());
                    }
                }

                return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
            }

            default: return(await JsonErrorViewModel.GetResourceNotFoundError(Response).toJson());
            }
        }