Exemplo n.º 1
0
        public async Task <IResponseResult> SaveUserAssigned(AssignUserOnRoleParameters parameters)
        {
            var role = await _roleUnitOfWork.Repository.FirstOrDefaultAsync(q => q.Id == parameters.RoleId, include : source => source.Include(a => a.AspNetUsersRoles), disableTracking : false);

            if (parameters.AssignedUser != null)
            {
                foreach (var user in parameters.AssignedUser)
                {
                    var isExist = role.AspNetUsersRoles.Any(q => q.UserId == user);
                    if (!isExist)
                    {
                        var userRole = new AspNetUsersRoles()
                        {
                            Id = Guid.NewGuid().ToString(), UserId = user, RoleId = parameters.RoleId
                        };
                        role.AspNetUsersRoles.Add(userRole);
                    }
                }
            }
            if (role.AspNetUsersRoles.Any())
            {
                await _roleUnitOfWork.SaveChanges();
            }

            var userRemove = parameters.AssignedUser is null ? role.AspNetUsersRoles : role.AspNetUsersRoles.Where(q => !parameters.AssignedUser.Contains(q.UserId));

            if (userRemove.Any())
            {
                _userRolesUnitOfWork.Repository.RemoveRange(userRemove);
                await _userRolesUnitOfWork.SaveChanges();
            }

            return(ResponseResult.GetRepositoryActionResult(true, status: HttpStatusCode.Created, message: HttpStatusCode.Created.ToString()));
        }
Exemplo n.º 2
0
        public async Task <IResponseResult> SaveScreens(ScreensAssignedParameters parameters)
        {
            if (parameters.ScreenAssigned != null)
            {
                foreach (var ScreenId in parameters.ScreenAssigned)
                {
                    var isExists = await _menuRoleUnitOfWork.Repository.FirstOrDefaultAsync(q => q.MenuId == ScreenId && q.RoleId == parameters.RoleId) != null;

                    if (!isExists)
                    {
                        var obj = new MenuRoles()
                        {
                            Id = Guid.NewGuid().ToString(), RoleId = parameters.RoleId, MenuId = ScreenId
                        };
                        _menuRoleUnitOfWork.Repository.Add(obj);
                    }
                }
            }
            if (parameters.ScreenAssignedRemove != null)
            {
                var dataRemoved = await _menuRoleUnitOfWork.Repository.FindAsync(q => parameters.ScreenAssignedRemove.Contains(q.MenuId) && q.RoleId == parameters.RoleId);

                _menuRoleUnitOfWork.Repository.RemoveRange(dataRemoved);
            }

            await _menuRoleUnitOfWork.SaveChanges();

            return(ResponseResult.GetRepositoryActionResult(true, status: HttpStatusCode.Created, message: HttpStatusCode.Created.ToString()));
        }
Exemplo n.º 3
0
        public async Task <IDataPagging> GetUsers(GetAllUserParameters parameters)
        {
            int limit  = parameters.PageSize;
            int offset = (parameters.PageNumber * parameters.PageSize);
            var users  = await _unitOfWork.Repository.FindPaggedAsync(predicate : PredicateBuilderFunction(parameters), skip : offset, take : limit, parameters.OrderByValue);

            var usesrPagging = users.Item2;

            if (!usesrPagging.Any())
            {
                var res = ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString());
                return(new DataPagging(0, 0, 0, res));
            }

            var usersDto  = Mapper.Map <IEnumerable <UserDto> >(usesrPagging);
            var ids       = usersDto.Select(q => Convert.ToString(q?.Id)).ToList();
            var userRoles = await _userRolesUnitOfWork.Repository.FindAsync(q => ids.Contains(q.UserId));

            var roleIds = userRoles.Select(q => q.RoleId).ToList();
            var roles   = await _roleUnitOfWork.Repository.FindAsync(q => roleIds.Contains(q.Id));

            foreach (var user in usersDto)
            {
                var userRoleIds   = userRoles.Where(q => q.UserId == user.Id.ToString()).Select(q => q.RoleId).ToList();
                var userRolesData = roles.Where(q => userRoleIds.Contains(q.Id)).ToList();
                var rolesString   = userRolesData.Select(q => q.Name).ToList();
                user.Roles = (!rolesString.Any()) ? null : String.Join(",", rolesString);
            }
            var repoResult = ResponseResult.GetRepositoryActionResult(usersDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString());

            return(new DataPagging(parameters.PageNumber, parameters.PageSize, users.Item1, repoResult));
        }
Exemplo n.º 4
0
        public async Task <IResponseResult> GetScreens(string roleId, string menuId, string childId)
        {
            var screenDto = new List <ScreenDto>();
            var role      = await _roleUnitOfWork.Repository.FirstOrDefaultAsync(q => q.Id == roleId, include : source => source.Include(a => a.Menu), disableTracking : false);

            var dataAssigned = role.Menu.Select(q => q.MenuId).ToList();

            if (string.IsNullOrEmpty(menuId) || menuId == "null")
            {
                var menuu = await _unitOfWork.Repository.FindAsync(q => !(q.IsStop ?? false) && !dataAssigned.Contains(q.Id), include : source => source.Include(a => a.Children).Include(b => b.Parent), disableTracking : false);

                var dtAll = menuu.Where(s => s.Children.Count == 0).Distinct().ToList();
                foreach (var item in dtAll)
                {
                    var screen = new ScreenDto()
                    {
                        Id           = item.Id,
                        ScreenNameAr = item.Parent == null ? item.ScreenNameAr : item.Parent.ScreenNameAr + ">" + item.ScreenNameAr,
                        ScreenNameEn = item.Parent == null ? item.ScreenNameEn : item.Parent.ScreenNameEn + ">" + item.ScreenNameEn
                    };
                    screenDto.Add(screen);
                }
                return(ResponseResult.GetRepositoryActionResult(screenDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString()));
            }
            var parent = new Menus();

            if (string.IsNullOrEmpty(childId) || childId == "null")
            {
                parent = await _unitOfWork.Repository.FirstOrDefaultAsync(q => !(q.IsStop ?? false) && q.Id == menuId, include : source => source.Include(a => a.Children));
            }
            else
            {
                parent = await _unitOfWork.Repository.FirstOrDefaultAsync(q => !(q.IsStop ?? false) && q.Id == childId, include : source => source.Include(a => a.Children), disableTracking : false);
            }
            var idss = parent.Children.Select(q => q.Id).ToList();

            _menuIdList.Add(parent.Id); _menuIdList.AddRange(idss);
            await GetChilds(idss);

            var MenuIdsPass = _menuIdList.Distinct().ToList();
            var dataRes     = await _unitOfWork.Repository.FindAsync(q => !(q.IsStop ?? false) && !dataAssigned.Contains(q.Id) && MenuIdsPass.Contains(q.Id), include : source => source.Include(a => a.Children).Include(b => b.Parent), disableTracking : false);

            var data = dataRes.Where(s => s.Children.Count == 0).Distinct().ToList();

            foreach (var item in data)
            {
                var screen = new ScreenDto()
                {
                    Id           = item.Id,
                    ScreenNameAr = item.Parent == null ? item.ScreenNameAr : item.Parent.ScreenNameAr + ">" + item.ScreenNameAr,
                    ScreenNameEn = item.Parent == null ? item.ScreenNameEn : item.Parent.ScreenNameEn + ">" + item.ScreenNameEn
                };
                screenDto.Add(screen);
            }
            return(ResponseResult.GetRepositoryActionResult(screenDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString()));
        }
Exemplo n.º 5
0
        public async override Task <IResponseResult> DeleteAsync(object id)
        {
            if (id == null)
            {
                return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString()));
            }
            var user = await _unitOfWork.Repository.FirstOrDefaultAsync(q => q.Id == (long)id);

            user.IsDeleted = true;
            _unitOfWork.Repository.Update(user, user.Id);
            await _unitOfWork.SaveChanges();

            return(ResponseResult.GetRepositoryActionResult(true, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString()));
        }
Exemplo n.º 6
0
        public async override Task <IResponseResult> GetByIdAsync(object id)
        {
            var user = await _unitOfWork.Repository.FirstOrDefaultAsync(q => q.Id == (long)id);

            if (user == null)
            {
                return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString()));
            }
            var userDto = Mapper.Map <UserDto>(user);

            userDto.CountryName = "Egypt";
            userDto.CityName    = "Cairo";
            userDto.GenderName  = userDto.Gender == true ? "Male" : "Female";
            return(ResponseResult.GetRepositoryActionResult(userDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString()));
        }
Exemplo n.º 7
0
        public async override Task <IResponseResult> DeleteAsync(object id)
        {
            try
            {
                var role = await _unitOfWork.Repository.GetAsync(id);

                role.IsDeleted = true;
                _unitOfWork.Repository.Update(role, role.Id);
                await _unitOfWork.SaveChanges();

                return(result = ResponseResult.GetRepositoryActionResult(result: true, status: HttpStatusCode.Accepted));
            }
            catch (Exception e)
            {
                result.Message = e.InnerException != null ? e.InnerException.Message : e.Message;
                result         = new ResponseResult(null, HttpStatusCode.InternalServerError, e, result.Message);
                return(result);
            }
        }
Exemplo n.º 8
0
        public async Task <IDataPagging> GetRoles(GetAllRoleParameters parameters)
        {
            //Note When data return item1 used for count and item2 for list after pagging
            int limit  = parameters.PageSize;
            int offset = (parameters.PageNumber * parameters.PageSize);
            var roles  = await _unitOfWork.Repository.FindPaggedAsync(predicate : PredicateBuilderFunction(parameters), skip : offset, take : limit, parameters.OrderByValue);

            var rolesPagging = roles.Item2;

            if (!rolesPagging.Any())
            {
                var result = ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString());
                return(new DataPagging(0, 0, 0, result));
            }
            ;
            var RolesDto   = Mapper.Map <IEnumerable <AspNetRoles>, IEnumerable <RoleDto> >(rolesPagging);
            var repoResult = ResponseResult.GetRepositoryActionResult(RolesDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString());

            return(new DataPagging(parameters.PageNumber, parameters.PageSize, roles.Item1, repoResult));
        }
Exemplo n.º 9
0
        public async override Task <IResponseResult> UpdateAsync(UserDto model)
        {
            if (model == null)
            {
                return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString()));
            }
            var isExist = await _unitOfWork.Repository.FirstOrDefaultAsync(q => (q.UserName == model.UserName || q.Email == model.Email || (q.PhoneNumber == model.PhoneNumber && (model.PhoneNumber != "" && model.PhoneNumber != null))) && q.Id != model.Id && q.IsDeleted != true) != null;

            if (isExist)
            {
                return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NotAcceptable, message: HttpStatusCode.NotAcceptable.ToString()));
            }
            var original = await _unitOfWork.Repository.FirstOrDefaultAsync(q => q.Id == model.Id);

            model.SecurityStamp = Guid.NewGuid().ToString();
            var user = Mapper.Map(model, original);

            _unitOfWork.Repository.Update(user, user.Id);
            await _unitOfWork.SaveChanges();

            return(ResponseResult.GetRepositoryActionResult(model, status: HttpStatusCode.Accepted, message: HttpStatusCode.Accepted.ToString()));
        }
Exemplo n.º 10
0
        public async override Task <IResponseResult> AddAsync(UserDto model)
        {
            if (model == null)
            {
                return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString()));
            }
            var isExist = await _unitOfWork.Repository.IsExists(q => (q.UserName == model.UserName || q.Email == model.Email || (q.PhoneNumber == model.PhoneNumber && (model.PhoneNumber != "" && model.PhoneNumber != null))) && q.IsDeleted != true);

            if (isExist)
            {
                return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NotAcceptable, message: HttpStatusCode.NotAcceptable.ToString()));
            }
            var data = await _unitOfWork.Repository.FindAsync(q => q != null);

            model.Id            = data == null ? 1000 : (1000 + data.Count());
            model.SecurityStamp = Guid.NewGuid().ToString();
            var user = Mapper.Map <AspNetUsers>(model);

            _unitOfWork.Repository.Add(user);
            await _unitOfWork.SaveChanges();

            return(ResponseResult.GetRepositoryActionResult(model, status: HttpStatusCode.Created, message: HttpStatusCode.Created.ToString()));
        }
Exemplo n.º 11
0
        public async Task <IResponseResult> GetMenu(string userId)
        {
            var userRoles = await _userRoleUnitOfWork.Repository.FindAsync(q => q.UserId == userId);

            var roles = userRoles.Select(q => q.RoleId).ToList();
            var data  = new List <Menus>();

            if (roles.Any())
            {
                if (roles[0] == "c21c91c0-5c2f-45cc-ab6d-1d256538a5ee")
                {
                    var menuData = await _unitOfWork.Repository.FindAsync(q => !(q.IsStop ?? false) && q.ParentId == null, include : source => source.Include(a => a.Children).ThenInclude(b => b.Children), disableTracking : false);

                    data = menuData.ToList();
                }
                else
                {
                    var roleMenu = await _roleUnitOfWork.Repository.FindAsync(q => roles.Contains(q.Id), include : source => source.Include(a => a.Menu).ThenInclude(b => b.Menus), disableTracking : false);

                    var menuIds  = roleMenu.SelectMany(q => q.Menu.Select(m => m.MenuId)).ToList();
                    var userMenu = await _unitOfWork.Repository.FindAsync(q => !(q.IsStop ?? false) && menuIds.Contains(q.Id), include : source => source.Include(a => a.Parent).ThenInclude(b => b.Parent).ThenInclude(q => q.Parent), disableTracking : false);

                    var menu = new List <Menus>();
                    foreach (var item in userMenu)
                    {
                        if (item.Parent == null)
                        {
                            menu.Add(item);
                        }
                        else if (item.Parent.Parent == null)
                        {
                            var  parent      = menu.Where(q => q.Id == item.Parent.Id).FirstOrDefault();
                            bool parentExist = parent != null;
                            if (!parentExist)
                            {
                                item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr));
                                var m = item.Parent;
                                m.Children.Add(item);
                                menu.Add(m);
                            }
                            else
                            {
                                parent.Children.Add(item);
                            }
                        }
                        else if (item.Parent.Parent.Parent == null)
                        {
                            var  parent      = menu.Where(q => q.Id == item.Parent.Parent.Id).FirstOrDefault();
                            bool parentExist = parent != null;
                            if (!parentExist)
                            {
                                item.Parent.Parent.Children.ToList().ForEach(attr => item.Parent.Parent.Children.Remove(attr));
                                item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr));
                                var m = item.Parent.Parent;
                                item.Parent.Children.Add(item);
                                m.Children.Add(item.Parent);
                                menu.Add(m);
                            }
                            else
                            {
                                var  parentChild      = parent.Children.Where(q => q.Id == item.Parent.Id).FirstOrDefault();
                                bool parentChildExist = parentChild != null;
                                if (!parentChildExist)
                                {
                                    item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr));
                                    item.Parent.Children.Add(item);
                                    parentChild.Children.Add(item.Parent);
                                }
                                else
                                {
                                    parentChild.Children.Add(item);
                                }
                            }
                        }
                        else
                        {
                            var  parent      = menu.Where(q => q.Id == item.Parent.Parent.Parent.Id).FirstOrDefault();
                            bool parentExist = parent != null;
                            if (!parentExist)
                            {
                                item.Parent.Parent.Parent.Children.ToList().ForEach(attr => item.Parent.Parent.Children.Remove(attr));
                                item.Parent.Parent.Children.ToList().ForEach(attr => item.Parent.Parent.Children.Remove(attr));
                                item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr));
                                var m = item.Parent.Parent.Parent;
                                item.Parent.Children.Add(item);
                                item.Parent.Parent.Children.Add(item.Parent);
                                m.Children.Add(item.Parent.Parent);
                                menu.Add(m);
                            }
                            else
                            {
                                var  parentChild      = parent.Children.Where(q => q.Id == item.Parent.Parent.Id).FirstOrDefault();
                                bool parentChildExist = parentChild != null;
                                if (!parentChildExist)
                                {
                                    item.Parent.Parent.Children.ToList().ForEach(attr => item.Parent.Parent.Children.Remove(attr));
                                    item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr));
                                    item.Parent.Children.Add(item);
                                    item.Parent.Parent.Children.Add(item.Parent);
                                    parent.Children.Add(item.Parent.Parent);
                                }
                                else
                                {
                                    var  parentChild1      = parentChild.Children.Where(q => q.Id == item.Parent.Id).FirstOrDefault();
                                    bool parentChild1Exist = parentChild1 != null;
                                    if (!parentChild1Exist)
                                    {
                                        item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr));
                                        item.Parent.Children.Add(item);
                                        parentChild.Children.Add(item.Parent);
                                    }
                                    else
                                    {
                                        parentChild1.Children.Add(item);
                                    }
                                }
                            }
                        }
                    }

                    data = menu;
                }
            }
            var menuDto = Mapper.Map <List <Menus>, List <MenuDto> >(data);

            return(ResponseResult.GetRepositoryActionResult(menuDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString()));;
        }
Exemplo n.º 12
0
        public async Task <IResponseResult> IsPhoneExists(string phone, long id)
        {
            var res = await _unitOfWork.Repository.FirstOrDefaultAsync(q => q.PhoneNumber == phone && q.Id != id && q.IsDeleted != true);

            return(ResponseResult.GetRepositoryActionResult(res != null, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString()));
        }
Exemplo n.º 13
0
        public async Task <IResponseResult> IsEmailExists(string email, long id)
        {
            var res = await _unitOfWork.Repository.FirstOrDefaultAsync(q => q.Email.ToLower() == email.ToLower() && q.Id != id && q.IsDeleted != true);

            return(ResponseResult.GetRepositoryActionResult(res != null, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString()));
        }
Exemplo n.º 14
0
        // Check IsExists
        public async Task <IResponseResult> IsNameExists(string name, string id)
        {
            var result = await _unitOfWork.Repository.IsExists(q => q.Name == name && q.Id != id && !(q.IsDeleted ?? false));

            return(ResponseResult.GetRepositoryActionResult(result, status: HttpStatusCode.Accepted, message: HttpStatusCode.Accepted.ToString()));
        }